Skip to content

Commit a7bd183

Browse files
committed
python3 fixes
1 parent 5fcd8a3 commit a7bd183

File tree

7 files changed

+42
-42
lines changed

7 files changed

+42
-42
lines changed

scripts/jp2.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def isValid(d):
3333
l2 = len(d2)
3434

3535
suffix = b"".join([
36-
struct.pack(">I", 0x100 + 8),b "free",
36+
struct.pack(">I", 0x100 + 8),b"free",
3737
b"\0" * (0x100 - 8),
3838
struct.pack(">I", 8 + l1), b"free",
3939
d1,

scripts/jpg.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def comments(s, delta=0):
2828
block2 = f.read()
2929

3030
# skip the signature, split by scans (usually the biggest segments)
31-
c1 = d1[2:].split("\xff\xda")
31+
c1 = d1[2:].split(b"\xff\xda")
3232

3333
if max(len(i) for i in c1) >= 65536 - 8:
3434
print("ERROR: The first image file has a segment that is too big!" +
@@ -53,7 +53,7 @@ def comments(s, delta=0):
5353
\\==============/
5454
vvvvvvvvvvvvvvvv""".splitlines())
5555

56-
suffix = "".join([
56+
suffix = b"".join([
5757
# fake comment to jump over the first image chunk (typically small)
5858
b"\xff\xfe",
5959
struct.pack(">H", 0x100 + len(c1[0]) - 2 + 4),

scripts/pdf.py

+21-21
Original file line numberDiff line numberDiff line change
@@ -18,36 +18,36 @@ def EnclosedString(d, starts, ends):
1818
return d[off:d.find(ends, off)]
1919

2020
def getCount(d):
21-
s = EnclosedString(d, "/Count ", "/")
21+
s = EnclosedString(d, b"/Count ", b"/")
2222
count = int(s)
2323
return count
2424

2525
def procreate(l): # :p
26-
return " 0 R ".join(l) + " 0 R"
26+
return b" 0 R ".join(l) + b" 0 R"
2727

2828
def adjustPDF(contents):
2929
"""dumb [start]xref fix: fixes old-school xref with no holes, with hardcoded \\n"""
30-
startXREF = contents.find("\nxref\n0 ") + 1
31-
endXREF = contents.find(" \n\n", startXREF) + 1
30+
startXREF = contents.find(b"\nxref\n0 ") + 1
31+
endXREF = contents.find(b" \n\n", startXREF) + 1
3232
origXref = contents[startXREF:endXREF]
33-
objCount = int(origXref.splitlines()[1].split(" ")[1])
33+
objCount = int(origXref.splitlines()[1].split(b" ")[1])
3434
print("object count: %i" % objCount)
3535

3636
xrefLines = [
37-
"xref",
38-
"0 %i" % objCount,
37+
b"xref",
38+
b"0 %i" % objCount,
3939
# mutool declare its first xref like this
40-
"0000000000 00001 f "
40+
b"0000000000 00001 f "
4141
]
4242

4343
i = 1
4444
while i < objCount:
4545
# doesn't support comments at the end of object declarations
46-
off = contents.find("\n%i 0 obj\n" % i) + 1
47-
xrefLines.append("%010i 00000 n " % (off))
46+
off = contents.find(b"\n%i 0 obj\n" % i) + 1
47+
xrefLines.append(b"%010i 00000 n " % (off))
4848
i += 1
4949

50-
xref = "\n".join(xrefLines)
50+
xref = b"\n".join(xrefLines)
5151

5252
# XREF length should be unchanged
5353
try:
@@ -58,8 +58,8 @@ def adjustPDF(contents):
5858

5959
contents = contents[:startXREF] + xref + contents[endXREF:]
6060

61-
startStartXref = contents.find("\nstartxref\n", endXREF) + len("\nstartxref\n")
62-
endStartXref = contents.find("\n%%%%EOF", startStartXref)
61+
startStartXref = contents.find(b"\nstartxref\n", endXREF) + len(b"\nstartxref\n")
62+
endStartXref = contents.find(b"\n%%%%EOF", startStartXref)
6363
contents = contents[:startStartXref] + "%i" % startXREF + contents[endStartXref:]
6464

6565
return contents
@@ -88,12 +88,12 @@ def adjustPDF(contents):
8888
COUNT2 = getCount(d2)
8989

9090

91-
kids = EnclosedString(dm, "/Kids[", "]")
91+
kids = EnclosedString(dm, b"/Kids[", b"]")
9292

9393
# we skip the first dummy, and the last " 0 R" string
94-
pages = kids[:-4].split(" 0 R ")[1:]
94+
pages = kids[:-4].split(b" 0 R ")[1:]
9595

96-
template = """%%PDF-1.4
96+
template = b"""%%PDF-1.4
9797
9898
1 0 obj
9999
<<
@@ -132,7 +132,7 @@ def adjustPDF(contents):
132132
contents = template % locals()
133133

134134
# adjust parents for the first set of pages
135-
contents += dm[dm.find("5 0 obj"):].replace("/Parent 2 0 R", "/Parent 3 0 R", COUNT1)
135+
contents += dm[dm.find(b"5 0 obj"):].replace(b"/Parent 2 0 R", b"/Parent 3 0 R", COUNT1)
136136

137137
# not necessary (will be fixed by mutool anyway) but avoids warnings
138138
contents = adjustPDF(contents)
@@ -148,8 +148,8 @@ def adjustPDF(contents):
148148

149149
# some mutool versions do different stuff :(
150150
cleaned = cleaned.replace(
151-
" 65536 f \n0000000016 00000 n \n",
152-
" 65536 f \n0000000018 00000 n \n",
151+
b" 65536 f \n0000000016 00000 n \n",
152+
b" 65536 f \n0000000018 00000 n \n",
153153
1)
154154

155155
with open("pdf1.bin", "rb") as f:
@@ -158,8 +158,8 @@ def adjustPDF(contents):
158158
with open("pdf2.bin", "rb") as f:
159159
prefix2 = f.read()
160160

161-
file1 = prefix1 + "\n" + cleaned[192:]
162-
file2 = prefix2 + "\n" + cleaned[192:]
161+
file1 = prefix1 + b"\n" + cleaned[192:]
162+
file2 = prefix2 + b"\n" + cleaned[192:]
163163

164164
with open("collision1.pdf", "wb") as f:
165165
f.write(file1)

scripts/pdfpe.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ def EnclosedString(d, starts, ends):
1818
return d[off:d.find(ends, off)]
1919

2020
def getCount(d):
21-
s = EnclosedString(d, "/Count ", "/")
21+
s = EnclosedString(d, b"/Count ", b"/")
2222
count = int(s)
2323
return count
2424

25-
template = """%%PDF-1.3
25+
template = b"""%%PDF-1.3
2626
%%\xC2\xB5\xC2\xB6
2727
2828
1 0 obj
@@ -135,7 +135,7 @@ def relocateSections(d, SecTblOff, SecCount, delta):
135135

136136
dm = dm[dm.find(b"5 0 obj"):]
137137
dm = dm.replace(b"/Parent 2 0 R", b"/Parent 4 0 R")
138-
dm = dm.replace("/Root 1 0 R", b"/Root 3 0 R")
138+
dm = dm.replace(b"/Root 1 0 R", b"/Root 3 0 R")
139139

140140
pe = relocateSections(pe, SecTblOff, NumSec, ALIGN - SectsStart)
141141
Sections = pe[SectsStart - SECTIONEXTRA:]

scripts/pe.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import sys, struct, hashlib, os
1515

1616
def getPEhdr(d):
17-
PEoffset = d.find("PE\0\0")
17+
PEoffset = d.find(b"PE\0\0")
1818
peHDR = d[PEoffset:]
1919

2020
Machine = struct.unpack("H", peHDR[4:4+2])[0]
@@ -78,8 +78,8 @@ def relocateSections(d, SecTblOff, SecCount, delta):
7878

7979

8080
# best PE validation ever :p
81-
assert d1.startswith("MZ")
82-
assert d2.startswith("MZ")
81+
assert d1.startswith(b"MZ")
82+
assert d2.startswith(b"MZ")
8383

8484
PEoff1, HdrLen1, NumSec1, SecTblOff1, SectsStart1 = getPEhdr(d1)
8585
PEoff2, HdrLen2, NumSec2, SecTblOff2, SectsStart2 = getPEhdr(d2)
@@ -110,9 +110,9 @@ def relocateSections(d, SecTblOff, SecCount, delta):
110110

111111
suffix = b"".join([
112112
d1[PEoff1:PEoff1+HdrLen1],
113-
(HEADER2OFF - (HEADER1OFF + HdrLen1)) * "\0",
113+
(HEADER2OFF - (HEADER1OFF + HdrLen1)) * b"\0",
114114
d2[PEoff2:PEoff2+HdrLen2],
115-
(SECTIONSOFF - (HEADER2OFF + HdrLen2)) * "\0",
115+
(SECTIONSOFF - (HEADER2OFF + HdrLen2)) * b"\0",
116116
Sections1,
117117
Sections2
118118
])

scripts/pileup.py

+9-9
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def dprint(s):
2020

2121
def setDWORD(d, offset, s):
2222
assert len(s) == 4
23-
return "".join([
23+
return b"".join([
2424
d[:offset],
2525
s,
2626
d[offset+4:]
@@ -33,10 +33,10 @@ def relocateMP4(d, delta):
3333
# finds and relocates all Sample Tables Chunk Offset tables
3434
# TODO: support 64 bits `co64` tables ()
3535
offset = 0
36-
tablecount = d.count("stco")
36+
tablecount = d.count(b"stco")
3737
dprint("stco found: %i" % tablecount)
3838
for i in range(tablecount):
39-
offset = d.find("stco", offset)
39+
offset = d.find(b"stco", offset)
4040
dprint("current offset: %0X" % offset)
4141

4242
length = struct.unpack(">I", d[offset-4:offset])[0]
@@ -76,11 +76,11 @@ def EnclosedString(d, starts, ends):
7676
return d[off:d.find(ends, off)]
7777

7878
def getCount(d):
79-
s = EnclosedString(d, "/Count ", "/")
79+
s = EnclosedString(d, b"/Count ", b"/")
8080
count = int(s)
8181
return count
8282

83-
template = """%%PDF-1.3
83+
template = b"""%%PDF-1.3
8484
%%\xC2\xB5\xC2\xB6
8585
8686
1 0 obj
@@ -111,7 +111,7 @@ def getCount(d):
111111

112112

113113
def getPEhdr(d):
114-
PEoffset = d.find("PE\0\0")
114+
PEoffset = d.find(b"PE\0\0")
115115
peHDR = d[PEoffset:]
116116

117117
Machine = struct.unpack("H", peHDR[4:4+2])[0]
@@ -199,13 +199,13 @@ def relocateSections(d, SecTblOff, SecCount, delta):
199199

200200
buffer = b"".join([
201201
pe[PEoff:PEoff+HdrLen],
202-
(ALIGN - HdrLen - PEOFFSET - SECTIONEXTRA) * "\0",
202+
(ALIGN - HdrLen - PEOFFSET - SECTIONEXTRA) * b"\0",
203203
Sections,
204204
])
205205

206206
lenPE = len(buffer) # for PNG file
207207

208-
buffer += "CRC3" + png
208+
buffer += b"CRC3" + png
209209
lenPEPNG = len(buffer) # for MP4 file
210210

211211
buffer += relocateMP4(mp4, lenPEPNG + 0x560) # hardcoded offset of the PE in our computed prefix
@@ -245,7 +245,7 @@ def relocateSections(d, SecTblOff, SecCount, delta):
245245
# MP4 free atom ###############################################################
246246

247247
cleaned = setDWORD(cleaned, 0x540,struct.pack(">L", lenPEPNG + 0x20))
248-
cleaned = setDWORD(cleaned, 0x544, "free")
248+
cleaned = setDWORD(cleaned, 0x544, b"free")
249249

250250

251251
# PNG fixes

scripts/pngStd.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def get_data(args):
4343
# 00-20 - original common header
4444
d1[:0x21],
4545
# 21-46 - padding chunk
46-
b"\0\0\0\x1a", b"aNGE", b":MD5 ISREALLY DEAD NOW!!1!", "ROFL",
46+
b"\0\0\0\x1a", b"aNGE", b":MD5 ISREALLY DEAD NOW!!1!", b"ROFL",
4747

4848
# 47-C7 - collision chunk
4949

0 commit comments

Comments
 (0)