Various changes:

1. Add .gitignore
2. Fix line endings as mixed LF and CRLF files
3. Reformat of code to PEP8 standards
This commit is contained in:
Dave Parsons 2015-01-31 16:22:32 +00:00
parent 229e1aee78
commit 283442fd64
2 changed files with 317 additions and 335 deletions

2
.gitignore vendored
View File

@ -1,2 +1,2 @@
backup/ backup/
.idea/

View File

@ -40,7 +40,6 @@ Offset Length struct Type Description
0x18/24 0x30/48 48B byte Data 0x18/24 0x30/48 48B byte Data
""" """
import optparse
import os import os
import sys import sys
import struct import struct
@ -63,18 +62,18 @@ def bytetohex(bytestr):
def printkey(i, smc_key, smc_data): def printkey(i, smc_key, smc_data):
print str(i).zfill(3) \ print str(i+1).zfill(3) \
+ ' ' + smc_key[0][::-1] \ + ' ' + smc_key[0][::-1] \
+ ' ' + str(smc_key[1]).zfill(2) \ + ' ' + str(smc_key[1]).zfill(2) \
+ ' ' + smc_key[2][::-1].replace('\x00', ' ') \ + ' ' + smc_key[2][::-1].replace('\x00', ' ') \
+ ' ' + '{0:#0{1}x}'.format(smc_key[3],4) \ + ' ' + '{0:#0{1}x}'.format(smc_key[3], 4) \
+ ' ' + hex(smc_key[4]) \ + ' ' + hex(smc_key[4]) \
+ ' ' + bytetohex(smc_data) + ' ' + bytetohex(smc_data)
def patchkeys(f, key): def patchkeys(f, key):
# Setup struct pack string # Setup struct pack string
global smc_new_memptr
key_pack = '=4sB4sB6xQ' key_pack = '=4sB4sB6xQ'
# Do Until OSK1 read # Do Until OSK1 read
@ -148,7 +147,6 @@ def patchkeys(f, key):
def patchsmc(name): def patchsmc(name):
with open(name, 'r+b') as f: with open(name, 'r+b') as f:
# Read file into string variable # Read file into string variable
@ -178,49 +176,33 @@ def patchsmc(name):
# Find '$Adr' key only V1 table # Find '$Adr' key only V1 table
smc_adr = vmx.find(adr_key) smc_adr = vmx.find(adr_key)
# Read the vSMC version 0 header
f.seek(smc_header_v0_offset)
appleSMCTableV0 = struct.unpack('=QII', f.read(16))
# Read the vSMC version 1 header
f.seek(smc_header_v1_offset)
appleSMCTableV1 = struct.unpack('=QII', f.read(16))
# Print vSMC0 tables and keys # Print vSMC0 tables and keys
print 'appleSMCTableV0 (smc.version = "0")' print 'applesmctablev0 (smc.version = "0")'
print 'appleSMCTableV0 Address : ' + hex(smc_header_v0_offset) print 'applesmctablev0 Address : ' + hex(smc_header_v0_offset)
print 'appleSMCTableV0 Private Key #: 0xF2' print 'applesmctablev0 Private Key #: 0xF2/242'
print 'appleSMCTableV0 Public Key #: 0xF0' print 'applesmctablev0 Public Key #: 0xF0/240'
if (smc_adr - smc_key0) != 72: if (smc_adr - smc_key0) != 72:
print 'appleSMCTableV0 Table : ' + hex(smc_key0) print 'applesmctablev0 Table : ' + hex(smc_key0)
patchkeys(f, smc_key0) patchkeys(f, smc_key0)
elif (smc_adr - smc_key1) != 72: elif (smc_adr - smc_key1) != 72:
print 'appleSMCTableV0 Table : ' + hex(smc_key1) print 'applesmctablev0 Table : ' + hex(smc_key1)
patchkeys(f, smc_key1) patchkeys(f, smc_key1)
else:
print 'appleSMCTableV0 Error : ' \
+ hex((appleSMCTableV0[0] - data_offset) - smc_key0) + ' ' \
+ hex((appleSMCTableV0[0] - data_offset) - smc_key1)
print print
# Print vSMC1 tables and keys # Print vSMC1 tables and keys
print 'appleSMCTableV1 (smc.version = "1")' print 'applesmctablev1 (smc.version = "1")'
print 'appleSMCTableV1 Address : ' + hex(smc_header_v1_offset) print 'applesmctablev1 Address : ' + hex(smc_header_v1_offset)
print 'appleSMCTableV1 Private Key #: 0x01B0' print 'applesmctablev1 Private Key #: 0x01B4/436'
print 'appleSMCTableV1 Public Key #: 0x01B4' print 'applesmctablev1 Public Key #: 0x01B0/432'
if (smc_adr - smc_key0) == 72: if (smc_adr - smc_key0) == 72:
print 'appleSMCTableV1 Table : ' + hex(smc_key0) print 'applesmctablev1 Table : ' + hex(smc_key0)
patchkeys(f, smc_key0) patchkeys(f, smc_key0)
elif (smc_adr - smc_key1) == 72: elif (smc_adr - smc_key1) == 72:
print 'appleSMCTableV1 Table : ' + hex(smc_key1) print 'applesmctablev1 Table : ' + hex(smc_key1)
patchkeys(f, smc_key1) patchkeys(f, smc_key1)
else:
print 'appleSMCTableV1 Error : ' \
+ hex((appleSMCTableV1[0] - data_offset) - smc_key0) + ' ' \
+ hex((appleSMCTableV1[0] - data_offset) - smc_key1)
print print
@ -228,8 +210,8 @@ def patchsmc(name):
f.flush() f.flush()
f.close() f.close()
def patchbase(name):
def patchbase(name):
# Patch file # Patch file
print 'GOS Patching: ' + name print 'GOS Patching: ' + name
f = open(name, 'r+b') f = open(name, 'r+b')
@ -260,7 +242,7 @@ def patchbase(name):
f.write('\xBF') f.write('\xBF')
print 'GOS Patched flag @: ' + hex(offset) print 'GOS Patched flag @: ' + hex(offset)
else: else:
print 'GOS Unknown flag @: ' + hex(offset) + '/' + hex(flag) print 'GOS Unknown flag @: {0}/{1}'.format(hex(offset), hex(flag))
offset += 33 offset += 33