1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
From 34ecbda8cc75eecb747004520c9e0bd6de3c7723 Mon Sep 17 00:00:00 2001
From: Nicholas Chin <nic.c3.14@gmail.com>
Date: Fri, 5 May 2023 19:35:45 -0600
Subject: [PATCH 2/3] dell_inspiron_1100_unpacker: Convert from python 2 to 3
TEST: The output of the script is the same as the python 2 version when
run against the Inspiron 1100 BIOS
Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com>
Change-Id: I2ab9a72bc65121b1106e9867b7d58d1eefb0eb3d
---
dell_inspiron_1100_unpacker.py | 34 +++++++++++++++++-----------------
1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/dell_inspiron_1100_unpacker.py b/dell_inspiron_1100_unpacker.py
index b12059b..5e43813 100755
--- a/dell_inspiron_1100_unpacker.py
+++ b/dell_inspiron_1100_unpacker.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python2
+#!/usr/bin/env python3
# Dell/Phoenix ROM BIOS PLUS unpacker
# 2012-09-12 version 0.1
# 2012-10-10 version 0.2 added support for older BIOSes with 16-bit length (Dell Inspiron 1100)
@@ -61,16 +61,16 @@ def dell_unpack(indata):
dstoff += count
srcoff += count
- return dst.tostring()
+ return dst
mod_types = {
0x01: "Main ROM",
0x0C: "Microcode update",
}
-print "Dell/Phoenix ROM BIOS PLUS unpacker"
+print("Dell/Phoenix ROM BIOS PLUS unpacker")
if len(sys.argv) < 2:
- print "Usage: dell_unpack.py bios.bin [offset]"
+ print("Usage: dell_unpack.py bios.bin [offset]")
sys.exit(1)
fname = sys.argv[1]
offs = 0
@@ -78,32 +78,32 @@ f = open(fname, "rb").read()
if len(sys.argv) > 2:
offs = int(sys.argv[2], 16)
else:
- offs = f.find("\xF0\x00Copyright 1985-\x02\x04\xF0\x0F8 Phoenix Technologies Ltd.")
+ offs = f.find(b"\xF0\x00Copyright 1985-\x02\x04\xF0\x0F8 Phoenix Technologies Ltd.")
if offs == -1:
- print "Does not look like a Dell/Phoenix ROM BIOS PLUS"
+ print("Does not look like a Dell/Phoenix ROM BIOS PLUS")
sys.exit(2)
- if f[offs-5] == '\x01':
+ if f[offs-5] == 0x01:
hlen = 5 # 32-bit length
offs -= 5
fmt = "<BI"
- elif f[offs-3] == '\x01':
+ elif f[offs-3] == 0x01:
hlen = 3 # 16-bit length
offs -= 3
fmt = "<BH"
else:
- print "Unhandled format!"
+ print("Unhandled format!")
sys.exit(1)
- print "Found compressed module at %08X" % offs
+ print("Found compressed module at %08X" % offs)
if offs > 0:
fn = "EC.bin"
- print "%08X EC code, %08X %s" % (0, offs, fn)
+ print("%08X EC code, %08X %s" % (0, offs, fn))
open(fn, "wb").write(f[:offs])
while True:
type_id, leng = struct.unpack(fmt, f[offs:offs+hlen])
- print "%08X type %02X" % (offs, type_id),
+ print("%08X type %02X" % (offs, type_id), end=" ")
offs += hlen
if type_id == 0xFF:
- print "<end of chain>"
+ print("<end of chain>")
break
data = f[offs:offs+leng]
offs += leng
@@ -111,11 +111,11 @@ while True:
odata = dell_unpack(data)
else:
odata = data
- print " %08X -> %08X" % (leng, len(odata)),
+ print(" %08X -> %08X" % (leng, len(odata)), end=" ")
fn = "mod_%02X.bin" % type_id
- print " %s" % fn,
+ print(" %s" % fn, end=" ")
if type_id in mod_types:
- print "(%s)" % mod_types[type_id]
+ print("(%s)" % mod_types[type_id])
else:
- print ""
+ print("")
open(fn, "wb").write(odata)
--
2.40.1
|