NWM Services

From 3dbrew
Revision as of 03:14, 1 June 2013 by Yellows8 (talk | contribs)
Jump to navigation Jump to search


These NWM services are used for local-WLAN communications, NWM module handles regular wifi APs as well. These services are used for creating/connecting to networks, and for sending/receiving data over the network etc. NWM module uses the wifi SDIO hardware via the IO registers for this.

NWM local-WLAN service "nwm::UDS"

NWM service "nwm::INF"

NWM service "nwm::SOC"

NWM service "nwm::SAP"

NWM local-WLAN StreetPass service "nwm::CEC"

NWM service "nwm::EXT"

NWM service "nwm::TST"

Local-WLAN

UDS is used for 3DS<>3DS local-WLAN communications, and for 3DS<>Wii U communications. The latter is mainly only used for multi-player in games.

All local-WLAN communications have the CCMP key for data encryption generated via NWM module. The StreetPass CCMP key is generated this way as well, the input "passphrase" is generated by the CECD module. The input data used with EncryptDecryptAes with 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

Offset Size Description
0x0 0x4 Little-endian local-WLAN communication ID, normally this is the user process' UniqueID from the titleID. For Download Play, this is always 0x2810 on retail.
0x4 0x4 Little-endian 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 0x6 Host MAC address.
0xE 0x2 Little-endian ID, for Download Play this is 0x55.