def getEMFkeyFromCRPT(data, key89B):
    assert data.startswith("tprc")
    z = AESdecryptCBC(data[4:0x44], key89B)
    assert z.startswith("TPRC"), "wrong key89B"
    #last_byte = struct.unpack("<Q", z[4:4+8])[0]
    emf = z[16:16+32]
    return emf
def getEMFkeyFromCRPT(data, key89B):
    assert data.startswith("tprc")
    z = AESdecryptCBC(data[4:0x44], key89B)
    assert z.startswith("TPRC"), "wrong key89B"
    #last_byte = struct.unpack("<Q", z[4:4+8])[0]
    emf = z[16:16+32]
    return emf
Exemple #3
0
 def createWithSystemkbfile(filename, bag1key, deviceKey=None):
     if filename.startswith("bplist"): #HAX
         mkb = BPlistReader.plistWithString(filename)
     else:
         mkb = BPlistReader.plistWithFile(filename)
     try:
         decryptedPlist  = AESdecryptCBC(mkb["_MKBPAYLOAD"].data, bag1key, mkb["_MKBIV"].data, padding=True)
     except:
         print "FAIL: AESdecryptCBC _MKBPAYLOAD => wrong BAG1 key ?"
         return None
     if not decryptedPlist.startswith("bplist"):
         print "FAIL: decrypted _MKBPAYLOAD is not bplist"
         return None
     decryptedPlist = BPlistReader.plistWithString(decryptedPlist)
     blob = decryptedPlist["KeyBagKeys"].data
     return Keybag.createWithDataSignBlob(blob, deviceKey)
 def createWithSystemkbfile(filename, bag1key, deviceKey=None):
     if filename.startswith("bplist"):  #HAX
         mkb = BPlistReader.plistWithString(filename)
     else:
         mkb = BPlistReader.plistWithFile(filename)
     try:
         decryptedPlist = AESdecryptCBC(mkb["_MKBPAYLOAD"].data,
                                        bag1key,
                                        mkb["_MKBIV"].data,
                                        padding=True)
     except:
         print "FAIL: AESdecryptCBC _MKBPAYLOAD => wrong BAG1 key ?"
         return None
     if not decryptedPlist.startswith("bplist"):
         print "FAIL: decrypted _MKBPAYLOAD is not bplist"
         return None
     decryptedPlist = BPlistReader.plistWithString(decryptedPlist)
     blob = decryptedPlist["KeyBagKeys"].data
     return Keybag.createWithDataSignBlob(blob, deviceKey)
Exemple #5
0
 def createWithSystemkbfile(filename, bag1key, deviceKey=None):
     if filename.startswith("bplist"): #HAX
         mkb = BPlistReader.plistWithString(filename)
     else:
         mkb = BPlistReader.plistWithFile(filename)
     try:
         decryptedPlist  = AESdecryptCBC(mkb["_MKBPAYLOAD"].data, bag1key, mkb["_MKBIV"].data, padding=True)
     except:
         print "FAIL: AESdecryptCBC _MKBPAYLOAD => wrong BAG1 key ?"
         return None
     if not decryptedPlist.startswith("bplist"):
         print "FAIL: decrypted _MKBPAYLOAD is not bplist"
         return None
     decryptedPlist = BPlistReader.plistWithString(decryptedPlist)
     blob = decryptedPlist["KeyBagKeys"].data
     kb = Keybag.createWithDataSignBlob(blob, deviceKey)
     if decryptedPlist.has_key("OpaqueStuff"):
         OpaqueStuff = BPlistReader.plistWithString(decryptedPlist["OpaqueStuff"].data)
         kb.passcodeComplexity = OpaqueStuff.get("keyboardType")
     return kb