Skip to content

Instantly share code, notes, and snippets.

@AbandonedCart
Forked from jaames/mii-qr.py
Created August 20, 2023 13:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AbandonedCart/fc7db2c4e46c4eddf85978b668f4407f to your computer and use it in GitHub Desktop.
Save AbandonedCart/fc7db2c4e46c4eddf85978b668f4407f to your computer and use it in GitHub Desktop.
Decrypt Mii QR code data from 3DS / Wii U / Miitomo
# Decrypt Mii QR codes from 3DS / Wii U / Miitomo
# Usage: python3 <input file> <output file>
# QR docs: https://www.3dbrew.org/wiki/Mii_Maker
from Crypto.Cipher import AES
from sys import argv
key = bytes([0x59, 0xFC, 0x81, 0x7E, 0x64, 0x46, 0xEA, 0x61, 0x90, 0x34, 0x7B, 0x20, 0xE9, 0xBD, 0xCE, 0x52])
with open(argv[1], "rb") as infile, open(argv[2], "wb") as outfile:
nonce = infile.read(8)
cipher = AES.new(key, AES.MODE_CCM, nonce + bytes([0, 0, 0, 0]))
content = cipher.decrypt(infile.read(0x58))
result = content[:12] + nonce + content[12:]
outfile.write(result)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment