Difference between revisions of "MK8 Network Protocol"
Line 1: | Line 1: | ||
This page describes the '''network protocol''' used by Mario Kart 8. It is very incomplete at this moment. | This page describes the '''network protocol''' used by Mario Kart 8. It is very incomplete at this moment. | ||
− | |||
− | |||
__TOC__ | __TOC__ |
Revision as of 05:50, 25 September 2014
This page describes the network protocol used by Mario Kart 8. It is very incomplete at this moment.
General description
The Mario Kart 8 traffic starts with a name resolution. Other than MKWii, MK8 only looks up one domain (api-eu.olv.nintendo.net) which has multiple IP addresses with a TTL of 60:
- 54.72.185.220
- 54.229.32.160
- 54.246.156.135
- 176.34.135.172
and maybe some more
Maybe the olv-server returns some IPs of the other servers, but it's SSL-encrypted and the server does not listen on HTTP.
First the game connects the Nintendoserver, while racing, all WiiUs communicate directly to each other.
All p2p packets have a header, and most of them have a payload (data) and a checksum
typedef struct p2p_header { /*00*/ u32 id; // always 32ab.9864 /*04*/ u16 unknown_04; // mostly 0x0100 /*06*/ u16 unknown_06; // mostly 0x0000 /*08*/ u16 sequence_id; // any upcounting number. Number of answer is one higher than question /*0a*/ u16 sequence_id2; // another sequence number. sometimes empty (0x0000) /*0c*/ u16 unknown_0c; /*0e*/ u16 length; // indicates the length of the data part (without header and checksum) /*10*/ u32 unknown_10; // mostly 0x00000000. /*14*/ u16 unknown_14; /*16*/ u16 unknown_16 /*18*/ u32 unknown_18; /*1c*/ u32 unknown_1c; // always 0x00000000 /*1e*/ }
After the header, there is some data (sometimes empty), and after the data there mostly follows a 16-byte-checksum which looks like a MD5 hash. mkw:MKWii Network Protocol