In memory of Ben “bushing” Byer, who passed away on Monday, February 8th, 2016.

/shared2/sys/net/02/config.dat

From WiiBrew
< /shared2 | sys | net | 02
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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 WEP.
    u8 padding_11[2];   // 0x00

    u8 key[64];         // Encryption key.  For WEP, key is stored 4 times (52 bytes) 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)
           | | Automatic DNS
           | IP source (0 -> Manual; 1 -> DHCP)
           ?

Additional structures include:

typedef 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];
} 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.