Difference between revisions of "Mii Maker"
Line 1: | Line 1: | ||
− | '''Mii Maker''' lets you create Miis, like Wii Mii Channel. Here you can transfer Miis | + | '''Mii Maker''' lets you create Miis, like Wii Mii Channel. Here you can transfer Miis over [[NWM_Services|local-WLAN]] from other systems running Mii Maker(3DS/Wii U), or from Wii Mii Channel. 3DS Miis can't be transfered to Wii Mii Channel, only from Wii. |
== Wii Mii Channel transfer protocol == | == Wii Mii Channel transfer protocol == | ||
Line 7: | Line 7: | ||
== Mii QR Code format == | == Mii QR Code format == | ||
− | 3DS Mii QR is a standard 57x57 pixel Level 10 High ECC QR code with 'Mii' logo in center (refer to [http://www.denso-wave.com/qrcode Denso-Wave Inc] web site for QR Code format specifications). It contains 0x70-bytes of binary data. 3DS seems to have a fully implemented QR-code decoder, as it can interpret such Mii binary data being encoded even in the smallest possible for that data size Level 6 Low ECC QR code. The data itself is encrypted with AES-CCM, xorpads can be determined from known plaintext here | + | 3DS Mii QR is a standard 57x57 pixel Level 10 High ECC QR code with 'Mii' logo in center (refer to [http://www.denso-wave.com/qrcode Denso-Wave Inc] web site for QR Code format specifications). It contains 0x70-bytes of binary data. 3DS seems to have a fully implemented QR-code decoder, as it can interpret such Mii binary data being encoded even in the smallest possible for that data size Level 6 Low ECC QR code. The data itself is encrypted with AES-CCM, xorpads can be determined from known plaintext here. The Mii Maker application uses the [[NS]] APT Wrap/Unwrap commands to encrypt/decrypt this Mii data. For the NS [[APT:Unwrap|Unwrap]] command, the Mii Maker application uses blocksize=12, noncesize=10, and inputbuffer-size=0x60. |
{| class="wikitable" | {| class="wikitable" | ||
Line 91: | Line 91: | ||
| 0x60 | | 0x60 | ||
| 0x10 | | 0x10 | ||
− | | AES-CCM MAC | + | | AES-CCM MAC |
|} | |} | ||
− | * QR codes made from the same 3DS for the same Mii are | + | * QR codes made from the same 3DS for the same Mii are use the same AES-CCM nonce (you can recreate the xorpad by xoring with known values from this table). |
Revision as of 23:18, 31 May 2013
Mii Maker lets you create Miis, like Wii Mii Channel. Here you can transfer Miis over local-WLAN from other systems running Mii Maker(3DS/Wii U), or from Wii Mii Channel. 3DS Miis can't be transfered to Wii Mii Channel, only from Wii.
Wii Mii Channel transfer protocol
The Wii beacons are similar to the usual multi-cart NDS beacons, except: beacon_type is zero, and payload size is 0x14. The payload data is just the Wii UTF-16 nickname, with some extra unused zero data. The usual multi-cast NDS protocol is used for sending the 3DS nick to the Wii. After many keep-alive frames, it eventually sends a bunch of frames, each containing the whole Mii. There's a 6-byte header, followed by Mii data. At the end of these frames like most NDS frames is the 0200 byte marker.
Mii QR Code format
3DS Mii QR is a standard 57x57 pixel Level 10 High ECC QR code with 'Mii' logo in center (refer to Denso-Wave Inc web site for QR Code format specifications). It contains 0x70-bytes of binary data. 3DS seems to have a fully implemented QR-code decoder, as it can interpret such Mii binary data being encoded even in the smallest possible for that data size Level 6 Low ECC QR code. The data itself is encrypted with AES-CCM, xorpads can be determined from known plaintext here. The Mii Maker application uses the NS APT Wrap/Unwrap commands to encrypt/decrypt this Mii data. For the NS Unwrap command, the Mii Maker application uses blocksize=12, noncesize=10, and inputbuffer-size=0x60.
Offset | Length | |
---|---|---|
0x0 | 0x4 | Mii ID (big-endian 32-bit unsigned integer)
The most significant 3 bits determine whether the Mii is Special, Foreign, or Normal [1] time_offset = (mii_id & 0x0FFFFFFF) * 2; time_offset is the time the Mii was created, represented as the number of seconds since 01/01/2010 00:00:00 |
0x4 | 0x4 | High 4 octets of MAC address [2] |
0x8 | 0x1 | unknown |
0x9 | 0x1 | Allow Copying |
0xA | 0xE | unknown |
0x18 | 0x2 | Bit-mapped: Birthday (4bit-day,5bit-month), Sex, Shirt, ?? |
0x1A | 0x14 | UTF-16 Mii Name |
0x2E | 0x2 | unknown |
0x30 | 0x1 | Mii Sharing Value |
0x31 | 0xB | unknown |
0x3C | 0x1 | Allow Copying |
0x3D | 0x3 | unknown |
0x40 | 0x1 | Mii Sharing Value |
0x41 | 0x7 | unknown |
0x48 | 0x14 | UTF-16 Author Name |
0x5C | 0x2 | unknown |
0x5E | 0x2 | unknown (seems like the start of the checksum) |
0x60 | 0x10 | AES-CCM MAC |
- QR codes made from the same 3DS for the same Mii are use the same AES-CCM nonce (you can recreate the xorpad by xoring with known values from this table).