NWM Services: Difference between revisions
No edit summary |
|||
Line 50: | Line 50: | ||
All UDS local-WLAN communications have the CCMP key for data encryption generated via NWM module. The CCMP key passed to nwm::CEC commands(stored in a 0x44-byte input structure) for [[StreetPass]] is generated by the CECD module. The input data used with [[Process_Services|EncryptDecryptAes]] with [[PSPXI:EncryptDecryptAes|keytype1]] is a MD5 hash over an input passphrase. This input passphrase is fixed for [[Download Play]], it's unique per local-WLAN protocol. The CTR is a MD5 hash over the below 0x10-byte structure. The output from encrypting that data with AES-CTR is the final CCMP key. | All UDS local-WLAN communications have the CCMP key for data encryption generated via NWM module. The CCMP key passed to nwm::CEC commands(stored in a 0x44-byte input structure) for [[StreetPass]] is generated by the CECD module. The input data used with [[Process_Services|EncryptDecryptAes]] with [[PSPXI:EncryptDecryptAes|keytype1]] is a MD5 hash over an input passphrase. This input passphrase is fixed for [[Download Play]], it's unique per local-WLAN protocol. The CTR is a MD5 hash over the below 0x10-byte structure. The output from encrypting that data with AES-CTR is the final CCMP key. | ||
==Structure used for generating the CTR== | ==Structure used for generating the CTR for CCMP key generation== | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 59: | Line 59: | ||
| 0x0 | | 0x0 | ||
| 0x4 | | 0x4 | ||
| | | Local-WLAN communication ID, normally this is: (user_process [[Title_list|uniqueID]] << 8) | val. Where val is 0x10 on retail([[Configuration_Memory|configmem]] UNITINFO bit0 set), 0x90 for devunit. For [[Download Play]], this is always 0x2810 on retail(0x2890 on devunit). | ||
|- | |- | ||
| 0x4 | | 0x4 | ||
| 0x4 | | 0x4 | ||
| | | u32 networkID, randomly-generated when creating the network. The network SSID used when a client connects to the network is sprintf(out, "%08X", networkID). | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
Line 71: | Line 71: | ||
| 0xE | | 0xE | ||
| 0x2 | | 0x2 | ||
| | | ID, for [[Download Play]] this is 0x55. | ||
|} | |} | ||
This data is stored as little-endian. | |||
==CTR used for beacon tags crypto== | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x6 | |||
| Host MAC address | |||
|- | |||
| 0x6 | |||
| 0x4 | |||
| wlancommID | |||
|- | |||
| 0xA | |||
| 0x1 | |||
| This ID is also stored at offset 0xE in the CTR-generation structure. | |||
|- | |||
| 0xB | |||
| 0x1 | |||
| Padding, value zero. | |||
|- | |||
| 0xC | |||
| 0x4 | |||
| This is the u32 from offset 0x18 in the network-struct. | |||
|} | |||
This data is stored as little-endian. All data here is all-zero except for the MAC address, when the u8 at offset 0x8 in the network-struct is 0. | |||
==Network structure== | ==Network structure== |