From d187ceefacc4909c4a3fdb8098878cb9bcd2c198 Mon Sep 17 00:00:00 2001 From: Nicholas Chin Date: Fri, 5 May 2023 19:34:29 -0600 Subject: [PATCH 1/3] dell_inspiron_1100_unpacker: Fix minor style issues - Make indent width consistent - Use spaces around -= operator - Rename variable type to type_id to avoid shadowing the type method, though that method isn't ever used in this program Signed-off-by: Nicholas Chin Change-Id: I2d47501845591e228b6c5d61c36ca2edce91d36a --- dell_inspiron_1100_unpacker.py | 84 +++++++++++++++++----------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/dell_inspiron_1100_unpacker.py b/dell_inspiron_1100_unpacker.py index 3d5adf5..b12059b 100755 --- a/dell_inspiron_1100_unpacker.py +++ b/dell_inspiron_1100_unpacker.py @@ -19,7 +19,7 @@ def memcpy(arr1, off1, arr2, off2, count): raise Exception("Trying to write out of bounds") off1 += 1 off2 += 1 - count -=1 + count -= 1 # looks like some lzss variation def dell_unpack(indata): @@ -64,58 +64,58 @@ def dell_unpack(indata): return dst.tostring() mod_types = { - 0x01: "Main ROM", - 0x0C: "Microcode update", + 0x01: "Main ROM", + 0x0C: "Microcode update", } print "Dell/Phoenix ROM BIOS PLUS unpacker" if len(sys.argv) < 2: - print "Usage: dell_unpack.py bios.bin [offset]" - sys.exit(1) + print "Usage: dell_unpack.py bios.bin [offset]" + sys.exit(1) fname = sys.argv[1] offs = 0 f = open(fname, "rb").read() if len(sys.argv) > 2: - offs = int(sys.argv[2], 16) + offs = int(sys.argv[2], 16) else: - offs = f.find("\xF0\x00Copyright 1985-\x02\x04\xF0\x0F8 Phoenix Technologies Ltd.") - if offs == -1: - print "Does not look like a Dell/Phoenix ROM BIOS PLUS" - sys.exit(2) - if f[offs-5] == '\x01': - hlen = 5 # 32-bit length - offs -= 5 - fmt = " 0: fn = "EC.bin" print "%08X EC code, %08X %s" % (0, offs, fn) open(fn, "wb").write(f[:offs]) while True: - type, leng = struct.unpack(fmt, f[offs:offs+hlen]) - print "%08X type %02X" % (offs, type), - offs += hlen - if type == 0xFF: - print "" - break - data = f[offs:offs+leng] - offs += leng - if type != 0xC: - odata = dell_unpack(data) - else: - odata = data - print " %08X -> %08X" % (leng, len(odata)), - fn = "mod_%02X.bin" % type - print " %s" % fn, - if type in mod_types: - print "(%s)" % mod_types[type] - else: - print "" - open(fn, "wb").write(odata) + type_id, leng = struct.unpack(fmt, f[offs:offs+hlen]) + print "%08X type %02X" % (offs, type_id), + offs += hlen + if type_id == 0xFF: + print "" + break + data = f[offs:offs+leng] + offs += leng + if type_id != 0xC: + odata = dell_unpack(data) + else: + odata = data + print " %08X -> %08X" % (leng, len(odata)), + fn = "mod_%02X.bin" % type_id + print " %s" % fn, + if type_id in mod_types: + print "(%s)" % mod_types[type_id] + else: + print "" + open(fn, "wb").write(odata) -- 2.40.1