package de.nplusc.izc.senabitwiggler; import com.google.common.base.Charsets; import com.google.common.primitives.Longs; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.yaml.snakeyaml.Yaml; import java.io.*; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class FirmwareWrapperExtraction { private static final Logger l = LogManager.getLogger(); public static void assembleFirmware(File output, String inputfolder) { Yaml y = new Yaml(); try { LongHeader h = y.loadAs(new FileReader(new File(inputfolder+File.separator+"header.yml")),LongHeader.class); RandomAccessFile f = new RandomAccessFile(output,"rw"); f.write(h.getVersion_raw()); f.write(Utils.LongToRawBytes(h.getMagicShit())); f.write(Utils.LongToRawBytes(h.getRandom_id())); HeaderRecord[] records = h.getHeaderRecords(); int count = records.length; f.write(Utils.LongToRawBytes(count)); long offset = records[0].getOffset(); for(int i=0;iInteger.MAX_VALUE) { throw new InputInvalidException(); } int count = (int)count_l; HeaderRecord[] records = new HeaderRecord[count]; byte[] skip = new byte[count*32]; /*skipping over shorty header, repeats content with long one*/ f.read(skip); for(int i=0;i