Difference between revisions of "/shared2/sys/net/02/config.dat"

From WiiBrew
< /shared2‎ | sys‎ | net‎ | 02
Jump to: navigation, search
m (minor formatting)
Line 59: Line 59:
 
     u8 padding_10;      // 0x00
 
     u8 padding_10;      // 0x00
 
     u8 key_length;      // length of key[] (encryption key) in bytes.  0x00 for WEP64 and WEP128.
 
     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 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 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 key[64];        // Encryption key.  For WEP, key is stored 4 times (20 bytes for WEP64 and 52 bytes for WEP128) then padded with 0x00.
Line 96: Line 96:
 
     u8 padding_3;              // 0x00
 
     u8 padding_3;              // 0x00
 
     u8 proxy_password[32];
 
     u8 proxy_password[32];
}__attribute__((__packed__)) proxy_t;
+
} __attribute__((__packed__)) proxy_t;
  
 
</source>
 
</source>

Revision as of 13:28, 10 August 2009

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:

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];
} __attribute__((__packed__)) 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.