Esempio n. 1
0
def Decrypt():
    global file
    fName = filedialog.askopenfilename(filetypes=(("Amiibo", "*.bin"),
                                                  ("Amiibo", "*.bin")))
    if fName:
        with open(fName, 'rb') as fp:
            dump = AmiiboDump(master_keys, fp.read(), is_locked=True)
        dump.unlock()
        data = dump.data
        data = dump_to_amiitools(data)
        with open(fName + "d", 'wb') as fp:
            fp.write(data)
        file = open(fName + "d", "rb+")
        handaleFile()
Esempio n. 2
0
def make_new_amiibo(unfixed_info, locked_key, amiibo_data, uid):
    try:
        master_keys = AmiiboMasterKey.from_separate_bin(
            unfixed_info.read(), locked_key.read())
    except ValueError as e:
        print_error("Invalid keys: " + str(e))
        sys.exit(EXIT_FAILURE)
    try:
        amiibo = AmiiboDump(master_keys, amiibo_data)
        amiibo.unlock()
    except (AmiiboHMACError, AmiiboHMACTagError, AmiiboDumpSizeError):
        print_error("This amiibo is invalid or corrupt")
        sys.exit(EXIT_FAILURE)
    amiibo.uid_hex = uid_to_hex_format(uid)
    amiibo.lock()
    amiibo.unset_lock_bytes()
    return amiibo
Esempio n. 3
0
lock_data = [  #page, #byteoffset, #bytedata
    ('82h', 3, [0x01, 0x00, 0x0F, 0xBD]),  #dynamic lockpages
    ('02h', 2, [0x0F, 0x48, 0x0F, 0xE0]),  #static lockpages
]

ni = nfc_parser()

with open('unfixed-info.bin', 'rb') as fp_d, open('locked-secret.bin',
                                                  'rb') as fp_t:
    master_keys = AmiiboMasterKey.from_separate_bin(fp_d.read(), fp_t.read())

with open('orig.bin', 'rb') as fp:
    dump = AmiiboDump(master_keys, fp.read())

try:
    dump.unlock()
except amiibo.crypto.AmiiboHMACDataError:
    print('AmiiboHMACDataError error thrown (corrupt bin?)')
    quit(1)
else:
    print(ni)
    dump.uid_hex = ni.spaced_hex(ni.uid)
    dump.lock()
    dump.unset_lock_bytes()

    with open('dump.bin', 'wb') as fp:
        fp.write(dump.data)

    ni.commit_image(byte_override=lock_data)