Example #1
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
Example #2
0
def Encrypt():
    global file

    fName = filedialog.asksaveasfilename(filetypes=(("Amiibo", "*.bin"),
                                                    ("Amiibo", "*.bin")))
    if fName:
        SaveCmd()
        curentfile = file.name
        file.close()

        with open(curentfile, 'rb') as fp:
            data = fp.read()
        data = amiitools_to_dump(data)
        dump = AmiiboDump(master_keys, data, is_locked=False)
        dump.lock()
        dump.unset_lock_bytes()
        with open(fName, 'wb') as fp:
            fp.write(dump.data)

        file = open(curentfile, "rb+")
        handaleFile()
Example #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)