| Index: emcore/trunk/tools/ipodcrypt.py | 
| — | — | @@ -27,18 +27,18 @@ | 
| 28 | 28 |  | 
| 29 | 29 |  | 
| 30 | 30 | def usage(): | 
| 31 |  | -  print ""
 | 
| 32 |  | -  print "Please provide a command and (if needed) parameters as command line arguments"
 | 
| 33 |  | -  print ""
 | 
| 34 |  | -  print "Available commands:"
 | 
| 35 |  | -  print "  s5l8701-cryptdfu <infile> <outfile>"
 | 
| 36 |  | -  print "  s5l8701-decryptdfu <infile> <outfile>"
 | 
| 37 |  | -  print "  s5l8701-cryptfirmware <infile> <outfile>"
 | 
| 38 |  | -  print "  s5l8701-decryptfirmware <infile> <outfile>"
 | 
| 39 |  | -  print "  s5l8702-cryptnor <infile> <outfile>"
 | 
| 40 |  | -  print "  s5l8702-decryptnor <infile> <outfile>"
 | 
| 41 |  | -  print "  s5l8702-genpwnage <infile> <outfile>"
 | 
| 42 |  | -  print "  s5l8720-genpwnage <infile> <outfile>"
 | 
|  | 31 | +  print("") | 
|  | 32 | +  print("Please provide a command and (if needed) parameters as command line arguments") | 
|  | 33 | +  print("") | 
|  | 34 | +  print("Available commands:") | 
|  | 35 | +  print("  s5l8701-cryptdfu <infile> <outfile>") | 
|  | 36 | +  print("  s5l8701-decryptdfu <infile> <outfile>") | 
|  | 37 | +  print("  s5l8701-cryptfirmware <infile> <outfile>") | 
|  | 38 | +  print("  s5l8701-decryptfirmware <infile> <outfile>") | 
|  | 39 | +  print("  s5l8702-cryptnor <infile> <outfile>") | 
|  | 40 | +  print("  s5l8702-decryptnor <infile> <outfile>") | 
|  | 41 | +  print("  s5l8702-genpwnage <infile> <outfile>") | 
|  | 42 | +  print("  s5l8720-genpwnage <infile> <outfile>") | 
| 43 | 43 | exit(2) | 
| 44 | 44 |  | 
| 45 | 45 |  | 
| Index: emcore/trunk/tools/libipodcrypto.py | 
| — | — | @@ -33,11 +33,11 @@ | 
| 34 | 34 |  | 
| 35 | 35 |  | 
| 36 | 36 | def s5l8701cryptdfu(data): | 
| 37 |  | -    data = data.ljust((len(data) + 0x3f) & ~0x3f, "\0")
 | 
| 38 |  | -    header = "87011.0\0\0\x08\0\0" + struct.pack("<I", len(data))
 | 
|  | 37 | +    data = data.ljust((len(data) + 0x3f) & ~0x3f, b"\0") | 
|  | 38 | +    header = b"87011.0\0\0\x08\0\0" + struct.pack("<I", len(data)) | 
| 39 | 39 | emcore = libemcore.Emcore() | 
| 40 | 40 | addr = emcore.memalign(0x10, len(data) + 0x800) | 
| 41 |  | -    emcore.write(addr, header.ljust(0x800, "\0") + data)
 | 
|  | 41 | +    emcore.write(addr, header.ljust(0x800, b"\0") + data) | 
| 42 | 42 | emcore.hmac_sha1(addr + 0x800, len(data), addr + 0x10) | 
| 43 | 43 | emcore.hmac_sha1(addr, 0x40, addr + 0x40) | 
| 44 | 44 | emcore.aesencrypt(addr, len(data) + 0x800, 1) | 
| — | — | @@ -58,11 +58,11 @@ | 
| 59 | 59 |  | 
| 60 | 60 |  | 
| 61 | 61 | def s5l8701cryptfirmware(data): | 
| 62 |  | -    data = data.ljust((len(data) + 0x3f) & ~0x3f, "\0")
 | 
| 63 |  | -    header = "\0\0\0\0\x02\0\0\0\x01\0\0\0\x40\0\0\0\0\0\0\0" + struct.pack("<I", len(data))
 | 
|  | 62 | +    data = data.ljust((len(data) + 0x3f) & ~0x3f, b"\0") | 
|  | 63 | +    header = b"\0\0\0\0\x02\0\0\0\x01\0\0\0\x40\0\0\0\0\0\0\0" + struct.pack("<I", len(data)) | 
| 64 | 64 | emcore = libemcore.Emcore() | 
| 65 | 65 | addr = emcore.memalign(0x10, len(data) + 0x800) | 
| 66 |  | -    emcore.write(addr, header.ljust(0x800, "\0") + data)
 | 
|  | 66 | +    emcore.write(addr, header.ljust(0x800, b"\0") + data) | 
| 67 | 67 | emcore.hmac_sha1(addr + 0x800, len(data), addr + 0x1c) | 
| 68 | 68 | emcore.hmac_sha1(addr, 0x200, addr + 0x1d4) | 
| 69 | 69 | emcore.aesencrypt(addr + 0x800, len(data), 1) | 
| — | — | @@ -82,11 +82,11 @@ | 
| 83 | 83 |  | 
| 84 | 84 |  | 
| 85 | 85 | def s5l8702cryptnor(data): | 
| 86 |  | -    data = data.ljust((len(data) + 0xf) & ~0xf, "\0")
 | 
| 87 |  | -    header = "87021.0\x01\0\0\0\0" + struct.pack("<I", len(data)) + hashlib.sha1(data).digest()[:0x10]
 | 
|  | 86 | +    data = data.ljust((len(data) + 0xf) & ~0xf, b"\0") | 
|  | 87 | +    header = b"87021.0\x01\0\0\0\0" + struct.pack("<I", len(data)) + hashlib.sha1(data).digest()[:0x10] | 
| 88 | 88 | emcore = libemcore.Emcore() | 
| 89 | 89 | addr = emcore.memalign(0x10, len(data)) | 
| 90 |  | -    emcore.write(addr, header.ljust(0x800, "\0") + data)
 | 
|  | 90 | +    emcore.write(addr, header.ljust(0x800, b"\0") + data) | 
| 91 | 91 | emcore.aesencrypt(addr + 0x800, len(data), 2) | 
| 92 | 92 | emcore.aesencrypt(addr + 0x10, 0x10, 2) | 
| 93 | 93 | emcore.write(addr + 0x40, hashlib.sha1(emcore.read(addr, 0x40)).digest()[:0x10]) | 
| — | — | @@ -108,13 +108,13 @@ | 
| 109 | 109 |  | 
| 110 | 110 | def s5l8702genpwnage(data): | 
| 111 | 111 | cert = open(os.path.dirname(__file__) + "/libipodcrypto/s5l8702pwnage.cer", "rb").read() | 
| 112 |  | -    data = data.ljust(max(0x840, (len(data) + 0xf) & ~0xf), "\0")
 | 
| 113 |  | -    header = ("87021.0\x03\0\0\0\0" + struct.pack("<IIII", len(data) - 0x830, len(data) - 0x4f6, len(data) - 0x7b0, 0x2ba)).ljust(0x40, "\0")
 | 
|  | 112 | +    data = data.ljust(max(0x840, (len(data) + 0xf) & ~0xf), b"\0") | 
|  | 113 | +    header = (b"87021.0\x03\0\0\0\0" + struct.pack("<IIII", len(data) - 0x830, len(data) - 0x4f6, len(data) - 0x7b0, 0x2ba)).ljust(0x40, b"\0") | 
| 114 | 114 | emcore = libemcore.Emcore() | 
| 115 | 115 | addr = emcore.memalign(0x10, len(data)) | 
| 116 | 116 | emcore.write(addr, header + hashlib.sha1(header).digest()[:0x10]) | 
| 117 | 117 | emcore.aesencrypt(addr + 0x40, 0x10, 1) | 
| 118 |  | -    data = emcore.read(addr, 0x50) + data + cert.ljust((len(cert) + 0xf) & ~0xf, "\0")
 | 
|  | 118 | +    data = emcore.read(addr, 0x50) + data + cert.ljust((len(cert) + 0xf) & ~0xf, b"\0") | 
| 119 | 119 | emcore.free(addr) | 
| 120 | 120 | return data | 
| 121 | 121 |  | 
| — | — | @@ -121,13 +121,13 @@ | 
| 122 | 122 |  | 
| 123 | 123 | def s5l8720genpwnage(data): | 
| 124 | 124 | cert = open(os.path.dirname(__file__) + "/libipodcrypto/s5l8720pwnage.cer", "rb").read() | 
| 125 |  | -    data = data.ljust(max(0x640, (len(data) + 0xf) & ~0xf), "\0")
 | 
| 126 |  | -    header = ("87202.0\x03\0\0\0\0" + struct.pack("<IIII", len(data) - 0x630, len(data) - 0x2f2, len(data) - 0x5b0, 0x2be)).ljust(0x40, "\0")
 | 
|  | 125 | +    data = data.ljust(max(0x640, (len(data) + 0xf) & ~0xf), b"\0") | 
|  | 126 | +    header = (b"87202.0\x03\0\0\0\0" + struct.pack("<IIII", len(data) - 0x630, len(data) - 0x2f2, len(data) - 0x5b0, 0x2be)).ljust(0x40, b"\0") | 
| 127 | 127 | emcore = libemcore.Emcore() | 
| 128 | 128 | addr = emcore.memalign(0x10, len(data)) | 
| 129 | 129 | emcore.write(addr, header + hashlib.sha1(header).digest()[:0x10]) | 
| 130 | 130 | emcore.aesencrypt(addr + 0x40, 0x10, 1) | 
| 131 |  | -    data = emcore.read(addr, 0x50) + data + cert.ljust((len(cert) + 0xf) & ~0xf, "\0")
 | 
|  | 131 | +    data = emcore.read(addr, 0x50) + data + cert.ljust((len(cert) + 0xf) & ~0xf, b"\0") | 
| 132 | 132 | emcore.free(addr) | 
| 133 | 133 | return data | 
| 134 | 134 |  |