/shared2/sys/net/02/config.dat
From WiiBrew
This file contains the Wii's Internet connection configuration. It is composed of an 8-byte header and 3 connection entries of 0x91C each.
typedef struct _netconfig { u8 header0; // 0x00 u8 header1; // 0x00 u8 header2; // 0x00 u8 header3; // 0x00 u8 header4; // 0x01 When there's at least one valid connection to the Internet. u8 header5; // 0x00 u8 header6; // 0x07 Not sure. This is always 0x07 for me (MetaFight) u8 header7; // 0x00 connection_t connection[3]; } netconfig_t;
Where connection is defined as:
typedef struct _connection { /* * Settings common to both wired and wireless connections */ u8 flags; // Defined below. u8 padding_1[3]; u8 ip[4] // Wii IP Address u8 netmask[4]; u8 gateway[4]; u8 dns1[4]; u8 dns2[4]; u8 padding_2[2] u16 mtu; //valid values are 0 and 576-1500 range u8 padding_3[8]; // 0x00 padding? proxy_t proxy_settings; u8 padding_4; //0x00 proxy_t proxy_settings_copy; // Seems to be a duplicate of proxy_settings u8 padding_5[1297]; //0x00 /* * Wireless specific settings */ u8 ssid[32]; // Access Point name. u8 padding_6; // 0x00 u8 ssid_length; // length of ssid[] (AP name) in bytes. u8 padding_7[2]; // 0x00 u8 padding_8; // 0x00 u8 encryption; // (Probably) Encryption. OPN: 0x00, WEP64: 0x01, WEP128: 0x02 WPA-PSK (TKIP): 0x04, WPA2-PSK (AES): 0x05, WPA-PSK (AES): 0x06 u8 padding_9[2]; // 0x00 u8 padding_10; // 0x00 u8 key_length; // length of key[] (encryption key) in bytes. 0x00 for WEP64 and WEP128. u8 unknown; // 0x00 or 0x01 toogled with a WPA-PSK (TKIP) and with a WEP entered with hex instead of ascii. u8 padding_11; // 0x00 u8 key[64]; // Encryption key. For WEP, key is stored 4 times (20 bytes for WEP64 and 52 bytes for WEP128) then padded with 0x00. u8 padding_12[236]; // 0x00 } connection_t;
The u8 flags used above is defined as:
Connection selected
| ?
| | Internet test passed
| | | Use Proxy (1 -> on; 0 -> off)
| | | |
1 0 1 0 0 1 1 0
| | | |
| | | Interface (0 -> Internal wireless; 1 -> Wired LAN adapter)
| | DNS source (0 -> Manual; 1 -> DHCP)
| IP source (0 -> Manual; 1 -> DHCP)
?
Additional structures include:
struct _proxy { u8 use_proxy; // 0x00 -> no proxy; 0x01 -> proxy u8 use_proxy_userandpass // 0x00 -> don't use username and password; 0x01 -> use username and password u8 padding_1[2] // 0x00 u8 proxy_name[255]; u8 padding_2; // 0x00 u16 proxy_port; // 0-34463 range u8 proxy_username[32]; u8 padding_3; // 0x00 u8 proxy_password[32]; } __attribute__((__packed__)); typedef struct _proxy proxy_t;
Wired connections follow the same structure, except all related to ssid, encryption and keys is set to 0x00.
Note that all the paddings are a guess. Also, wired information was obtained by modifying Connection 1 ONLY. During these tests Connection 2 and Connection 3 were left blank (set to 0x00).
More research is needed with this file.