Difference between revisions of "Talk:MK8 Network Protocol"

From MK8
Jump to navigation Jump to search
(info about certificates)
(add stuff about strings)
Line 39: Line 39:
 
* Wii U Common Prod 1
 
* Wii U Common Prod 1
 
* *.wup.shop.nintendo.net
 
* *.wup.shop.nintendo.net
 +
 +
=== string encoding ===
 +
 +
It seems that the game uses utf-16-be as its string encoding, as I noticed when racing, at the beginning, my wii u seems to send something like this to every racer i'm facing against: (Mark is my wii character's name )
 +
 +
<pre>
 +
000004A8  32 ab 98 64 01 00 00 00  1f de 16 5d 00 02 00 4c 2..d.... ...]...L
 +
000004B8  00 00 00 00 01 15 44 0c  01 00 00 00 00 00 00 00 ......D. ........
 +
000004C8  02 00 03 03 30 5f 37 36  32 30 30 33 39 5f 31 00 ....0_76 20039_1.
 +
000004D8  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
 +
000004E8  00 00 00 00 00 4d 00 61  00 72 00 6b 00 00 00 00 .....M.a .r.k....
 +
000004F8  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
 +
00000508  00 00 00 00 04 00 00 00  19 8f 1e f8 7c b9 2b bd ........ ....|.+.
 +
00000518  18 66 98 21 df 33 0d 73  a2 17 e1 a6            .f.!.3.s ....
 +
</pre>
 +
 +
<pre>
 +
 +
<code>
 +
>>> x="00 4d 00 61  00 72 00 6b".replace(" ", "")
 +
>>> x
 +
'004d00610072006b'
 +
>>> import binascii
 +
>>> y = binascii.unhexlify(x)
 +
b'\x00M\x00a\x00r\x00k'
 +
>>> y.decode("utf_16_be")
 +
'Mark'
 +
</code>

Revision as of 21:09, 19 September 2014

Searching network dumps & videos

As I do not have a WiiU, I'm searching for Mario Kart 8 network dumps. Best is to make a network dump and a video the same time so I can see what happens. If you are able to dump MK8 network data and make a video, please do so, upload the dump and the video and post the download link here. -- Leseratte (talk) 06:50, 29 May 2014 (UTC)

Leserratte, I think this will help you for sure. [1] --TheMetaPirate (talk) 08:55, 17 August 2014 (UTC)
Leserratte, do you hang out in some IRC server/channel? I hace become interested in reverse engineering the mk8 network protocol and I am able to record network dumps of me playing mk8. Mgrandi (talk) 20:00, 18 September 2014 (UTC)


mgrandi's research

urls

In addition to the one URL that the wii u contacts when starting mario kart 8 / connecting online, it seems to contact all of these urls (some of them are just redirects to an amazon AWS instance it seems)

  • mii-secure.account.nintendo.net
    • 54.225.148.154 mii-secure-proxy-prod-lb-12465627.us-east-1.elb.amazonaws.com
  • 69.25.139.186 ias.wup.shop.nintendo.net
  • 111.168.21.82 nppl.app.nintendo.net
  • 202.32.117.142 nncs1.app.nintendowifi.net
  • 107.23.139.110 discovery.olv.nintendo.net
  • 192.195.204.136 account.nintendo.net
  • 202.32.117.143 nncs2.app.nintendowifi.net
  • 69.25.139.194 tagaya.wup.shop.nintendo.net
  • npvk.app.nintendo.net
    • front-p01-1453423078.us-west-2.elb.amazonaws.com
  • 69.25.139.185 ecs.wup.shop.nintendo.net
  • api-us.olv.nintendo.net

certificates

In my wireshark capture the wii downloads 6 certificates, 5 of which are signed by the 6th, the nintendo CA root certificate Here is a zip of them (exported from a wiresharp capture), which includes

  • account.nintendo.net
  • *.app.nintendo.net
  • *.olv.nintendo.net
  • Nintendo CA - G3 (root certificate)
  • Wii U Common Prod 1
  • *.wup.shop.nintendo.net

string encoding

It seems that the game uses utf-16-be as its string encoding, as I noticed when racing, at the beginning, my wii u seems to send something like this to every racer i'm facing against: (Mark is my wii character's name )

000004A8  32 ab 98 64 01 00 00 00  1f de 16 5d 00 02 00 4c 2..d.... ...]...L
000004B8  00 00 00 00 01 15 44 0c  01 00 00 00 00 00 00 00 ......D. ........
000004C8  02 00 03 03 30 5f 37 36  32 30 30 33 39 5f 31 00 ....0_76 20039_1.
000004D8  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000004E8  00 00 00 00 00 4d 00 61  00 72 00 6b 00 00 00 00 .....M.a .r.k....
000004F8  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000508  00 00 00 00 04 00 00 00  19 8f 1e f8 7c b9 2b bd ........ ....|.+.
00000518  18 66 98 21 df 33 0d 73  a2 17 e1 a6             .f.!.3.s ....


>>> x="00 4d 00 61  00 72 00 6b".replace(" ", "")
>>> x
'004d00610072006b'
>>> import binascii
>>> y = binascii.unhexlify(x)
b'\x00M\x00a\x00r\x00k'
>>> y.decode("utf_16_be")
'Mark'