lbmk/resources/bios_extract/patches/0001-dell_inspiron_1100_unp...

133 lines
3.8 KiB
Diff

From d187ceefacc4909c4a3fdb8098878cb9bcd2c198 Mon Sep 17 00:00:00 2001
From: Nicholas Chin <nic.c3.14@gmail.com>
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 <nic.c3.14@gmail.com>
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 = "<BI"
- elif f[offs-3] == '\x01':
- hlen = 3 # 16-bit length
- offs -= 3
- fmt = "<BH"
- else:
- print "Unhandled format!"
- sys.exit(1)
- print "Found compressed module at %08X" % offs
+ 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 = "<BI"
+ elif f[offs-3] == '\x01':
+ hlen = 3 # 16-bit length
+ offs -= 3
+ fmt = "<BH"
+ else:
+ print "Unhandled format!"
+ sys.exit(1)
+ print "Found compressed module at %08X" % offs
if offs > 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 "<end of chain>"
- 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 "<end of chain>"
+ 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