DLS1 server

      DLS1 server

      This is the accumulative thread for the encrypted dls1.nintendowifi.net, in short DLS1. It has a simple communication structure and is used by games to check for and downloading updates. A couple of games require it to work online.

      A bunch of downloaded files residing on DLS1 have been saved to: pes-up.de/dls1/

      Toad King wrote a python script (attached below, slightly tweaked by me, thanks for allowing me to share it!) to download files from DLS1, it requires to know the values for rhgamecd, gamecd, password, cfc, csnum and attrs, all of which can been attained through unencrypted captures. For preservation purposes it would be great if more people could share these (captures, values, dump) with us!

      Sepalani is working on reimplementing the DLS server.

      I did captures of the communication from PES games version 2009 onward with DLS1 in the PES thread.
      Dateien
      • dls1.py.zip

        (1,36 kB, 164 mal heruntergeladen, zuletzt: )
      I'm done with the dls1 server. It worked for Professor Layton I.
      e-nautia.com/spln/disk/Nintendo%20WFC/dls1_server.py

      I didn't try it with other games, I'll soon. However I don't have the resources to deploy it, so I tried it on my local network.
      You'll have to redirect the dls1.nintendowifi.net requests to this server (you may have to change the ip and the port). Then you'll have to make a "games" folder and in this folder, you'll make a new folder which correspond to the game's gamecd value. In this folder you'll put the files the game looks for.
      Ex: ./games/A5FP/enc_wifi_order_27_full.dat

      I hope it may help.
      I've found out that the attr1/2/3 values in the queries are only used for filtering, and can actually be omitted for the purposes of scraping. Here's a slightly updated script:

      Quellcode

      1. import urllib2
      2. from base64 import b64encode
      3. import os
      4. import sys
      5. ###Change these to change what game to download for
      6. #gamecode = 'RSBE'
      7. #gamecode2 = 'RVL-RSBJ'
      8. #svc = '9001'
      9. #password = 'LeNKXTpZy9Y48swJ'
      10. #cfc = '7615213554627182'
      11. #csnum = 'LU591603598'
      12. #gsbrcd = 'RSBJ3d384f4'
      13. gamecode = 'R2WP'
      14. gamecode2 = 'RVL-R2WP'
      15. svc = '9001'
      16. password = 'xusCH9M3gvWyL2RA'
      17. cfc = '4404585880805254'
      18. csnum = 'LEH107931900'
      19. #gsbrcd = 'RSBJ3d384f4'
      20. def b64_enc(x):
      21. return b64encode(x).replace("=", "%2A")
      22. ###Get token
      23. url = "http://nas.nintendowifi.net/ac"
      24. headers = { 'User-Agent' : 'RVL SDK/1.0', 'Content-type' : 'application/x-www-form-urlencoded', 'HTTP_X_GAMECD' : gamecode }
      25. #data = "action=bG9naW4%2A&gsbrcd=" + b64_enc(gsbrcd) + "&userid=MTc4NjY3MzgyNzQ5OA%2A%2A&ingamesn=&sdkver=MDAxMDAw&gamecd=" + b64_enc(gamecode) + "&makercd=MDE%2A&unitcd=MQ%2A%2A&macadr=MDAxN2FiMjkyM2Jl&lang=MDE%2A&devtime=MTQwMjI4MTYyNDU2&csnum=" + b64_enc(csnum) + "&cfc=" + b64_enc(cfc) + "&region=MDE%2A"
      26. #req = urllib2.Request(url, data, headers)
      27. #response = urllib2.urlopen(req)
      28. #the_page = response.read()
      29. #open('out1.bin','w').write(the_page)
      30. data = "action=c3ZjbG9j&svc=" + b64_enc(svc) + "&userid=MTc4NjY3MzgyNzQ5OA%2A%2A&sdkver=MDAxMDAw&gamecd=" + b64_enc(gamecode) + "&makercd=MDE%2A&unitcd=MQ%2A%2A&macadr=MDAxN2FiMjkyM2Jl&lang=MDE%2A&devtime=MTQwMjI4MTYyNDU3&csnum=" + b64_enc(csnum) + "&cfc=" + b64_enc(cfc) + "&region=MDE%2A"
      31. req = urllib2.Request(url, data, headers)
      32. response = urllib2.urlopen(req)
      33. the_page = response.read()
      34. open('out2.bin','w').write(the_page)
      35. token = the_page[the_page.find('vicetoken')+10:] #'servicetoken'
      36. token = token[:token.find('&')].replace("*", "%2A")
      37. #Create output folder if it doesn't exist
      38. if not os.path.exists('./'+gamecode):
      39. os.makedirs('./'+gamecode)
      40. url = "https://dls1.nintendowifi.net/download"
      41. headers = { 'User-Agent' : 'RVL SDK/1.0', 'Content-type' : 'application/x-www-form-urlencoded'}
      42. ###List files
      43. data = "gamecd=" + b64_enc(gamecode2) + "&rhgamecd=" + b64_enc(gamecode) + "&passwd=" + b64_enc(password) + "&token=" + token + "%2A%2A&cfc=" + b64_enc(cfc) + "&macadr=MDAxN2FiMjkyM2Jl&region=MDE%2A&country=Q0g%2A&action=" + b64_enc('list')
      44. req = urllib2.Request(url, data, headers)
      45. response = urllib2.urlopen(req)
      46. the_page = response.read()
      47. open('./'+gamecode+'/_listing.bin','w').write(the_page) #Save the listing, it sometimes has additional data the game may need
      48. ###Download files
      49. lines = the_page[:-1].split('\n')
      50. if len(lines) == 0:
      51. print "No files to download for game code " + gamecode + ", quitting..."
      52. sys.exit()
      53. print "Game code " + gamecode + " has " + str(len(lines)) + " files to download.\n"
      54. for line in lines:
      55. fname = line[:line.find('\t')]
      56. print "Downloading " + fname + "..."
      57. data="gamecd=" + b64_enc(gamecode2) + "&rhgamecd=" + b64_enc(gamecode) + "&passwd=" + b64_enc(password) + "&token=" + token + "&cfc=" + b64_enc(cfc) + "&macadr=MDAxN2FiMjkyM2Jl&region=MDE%2A&country=Q0g%2A&action=" + b64_enc('contents') + "&contents=" + b64_enc(fname)
      58. req = urllib2.Request(url, data, headers)
      59. response = urllib2.urlopen(req)
      60. the_page = response.read()
      61. open('./'+gamecode+'/'+fname,'wb').write(the_page)
      62. print "Done!\n"
      Alles anzeigen

      Sepalani schrieb:

      I didn't try it with other games, I'll soon. However I don't have the resources to deploy it, so I tried it on my local network.

      I'll try it today with Brawl, I'm ill and that's why today is enough time to test it for me.
      Do I have anything else to consider?
      Vegetarier sind viel grausamer als gedacht. Ein Schwein kann wenigstens wegrennen, aber ein Salat?!? :D :P

      Kein Support per PN! Wir sind in einem Forum, und ein Forum lebt aus Fragen und Antworten.
      Was auch wichtig ist: Immer auf die Rechtschreibung achten!


      Note: This video will be loaded from YouTube, which causes some data, including but not limited to your IP, User Agent and Referrer, to be sent to YouTube servers. For more information see the Privacy Policy. By pressing the "play" button you automatically enable embedding YouTube videos for the future.


      Hinweis: Dieses Video wird von YouTube geladen. Dabei werden einige Daten, unter anderem Ihre IP, Ihr User Agent und der Referrer an YouTube-Server gesendet. Für weitere Details lesen Sie bitte die Datenschutzerklärung. Wenn Sie den Play-Button anklicken, erlauben Sie damit automatisch das Einbinden von YouTube-Videos für die Zukunft.




      Wer mir und sich selbst 500mb gratis-Speicher schenken will, kann sich ja unter diesem >Link<unter Dropbox registrieren ;)

      Wii Konsole mit Firmware 4.1
      Mit Internet
      Zwei Gamecube-Controller
      2 Wii Fernbedienungen, von denen eine kaputt ist (ich frag mich immer noch wie das möglich ist...)
      Gemoddet nach den Regeln des ALTEN UHGs, aufgefrischt mit dem IOS-Update im neuen UHG.

      Could someone create a list of Games(with every required field for the dls1 downloader) which uses it?
      Then I'll download them all with a modified Version oft Toad Kings script so we have all files after the shutdown. Eventually I could also setup a Server which we can use until the Server is ported to C and runs on the Wii-HB Server.
      14.932 bytes pure destruction.

      Ciapa schrieb:

      Could someone create a list of Games(with every required field for the dls1 downloader) which uses it?

      The issue is the lack of unencrypted captures of traffic with DLS1. I looked around, the files I have on pes-up are still all we can get.

      If we can't get the updates for whatever other games use and need them, players will need to reset them to some fresh state without updates and the DLS1 will have to report that there are no updates. (This obviously means current saves and FCs can't be used anymore and whatever the updates added is lost again.)

      datschge schrieb:

      Ciapa schrieb:

      Could someone create a list of Games(with every required field for the dls1 downloader) which uses it?

      The issue is the lack of unencrypted captures of traffic with DLS1. I looked around, the files I have on pes-up are still all we can get.

      If we can't get the updates for whatever other games use and need them, players will need to reset them to some fresh state without updates and the DLS1 will have to report that there are no updates. (This obviously means current saves and FCs can't be used anymore and whatever the updates added is lost again.)

      The updates are saved inside the save game if I'm not wrong. So we could do a backup and then get a fresh save to download update files.
      Could you please send me all the DLS1 files in a zip or tar archive, as I'm hosting the DLS1 Server for the Wiimmfi project? Then I don't have to download them all manually.
      14.932 bytes pure destruction.
      Nagato also has around 5000 files with 50 MB total size. Maybe he can upload his files, too.
      gbatemp.net/threads/save-ninte…2717/page-25#post-4998090

      DevkitPro Archiv (alte Versionen / old versions): wii.leseratte10.de/devkitPro/
      Want to donate for Wiimmfi and Wii-Homebrew.com? Patreon / PayPal

      Dieser Beitrag wurde bereits 0 mal editiert, zuletzt von Leseratte ()

      Ciapa schrieb:

      The updates are saved inside the save game if I'm not wrong. So we could do a backup and then get a fresh save to download update files.

      They are, but at least in case of PES it's not in the format and with the name as on the server. So if we just add updates to a save, how do we know what DLS1 has to respond to the client to make it think that it's already up-to-date? I think we need the DLS1 communication either way.

      Ciapa schrieb:

      Could you please send me all the DLS1 files in a zip or tar archive, as I'm hosting the DLS1 Server for the Wiimmfi project? Then I don't have to download them all manually.

      There you go.
      Please note that SUXP, S2PX and S3IX appear to cover all regions, so should be delivered to the other regions gameIDs as well. According to gametdb that would be:
      SUXP: SUXE, SUXJ, SUXX, SUXY
      S2PX: S2PE, S2PJ, S2PP, S2PY
      S3IX: S3IE, S3IP, S3IY
      The attr2 filter sent by the client will tell DLS1 which region's update it wants (out of eu, jj, je and ue).
      I have posted it in other threads, but not here:
      * dls1.wiimmfi.de points now to 84.200.15.53, a server of Ciapa

      WIT: Wiimms ISO Tools
      Verwaltet Plain ISO, WDF, WIA, CISO, WBFS, FST: kann Extrahieren, Erstellen, Patchen, Mischen und Überprüfen

      SZS: Wiimms SZS Tools
      Verwaltet SZS-, BRRES-, U8-, BMG-, BREFT-Dateien uvm.



      PN ohne persönlichen Charakter werden ignoriert. Support-Anfragen gehören ins Forum.
      Does dls1.test.wiimmfi.de work to? In Brawl, I get Error 94030
      Vegetarier sind viel grausamer als gedacht. Ein Schwein kann wenigstens wegrennen, aber ein Salat?!? :D :P

      Kein Support per PN! Wir sind in einem Forum, und ein Forum lebt aus Fragen und Antworten.
      Was auch wichtig ist: Immer auf die Rechtschreibung achten!


      Note: This video will be loaded from YouTube, which causes some data, including but not limited to your IP, User Agent and Referrer, to be sent to YouTube servers. For more information see the Privacy Policy. By pressing the "play" button you automatically enable embedding YouTube videos for the future.


      Hinweis: Dieses Video wird von YouTube geladen. Dabei werden einige Daten, unter anderem Ihre IP, Ihr User Agent und der Referrer an YouTube-Server gesendet. Für weitere Details lesen Sie bitte die Datenschutzerklärung. Wenn Sie den Play-Button anklicken, erlauben Sie damit automatisch das Einbinden von YouTube-Videos für die Zukunft.




      Wer mir und sich selbst 500mb gratis-Speicher schenken will, kann sich ja unter diesem >Link<unter Dropbox registrieren ;)

      Wii Konsole mit Firmware 4.1
      Mit Internet
      Zwei Gamecube-Controller
      2 Wii Fernbedienungen, von denen eine kaputt ist (ich frag mich immer noch wie das möglich ist...)
      Gemoddet nach den Regeln des ALTEN UHGs, aufgefrischt mit dem IOS-Update im neuen UHG.

      With normal Server, I get error 31020. I come to teamspeak, for short time
      Vegetarier sind viel grausamer als gedacht. Ein Schwein kann wenigstens wegrennen, aber ein Salat?!? :D :P

      Kein Support per PN! Wir sind in einem Forum, und ein Forum lebt aus Fragen und Antworten.
      Was auch wichtig ist: Immer auf die Rechtschreibung achten!


      Note: This video will be loaded from YouTube, which causes some data, including but not limited to your IP, User Agent and Referrer, to be sent to YouTube servers. For more information see the Privacy Policy. By pressing the "play" button you automatically enable embedding YouTube videos for the future.


      Hinweis: Dieses Video wird von YouTube geladen. Dabei werden einige Daten, unter anderem Ihre IP, Ihr User Agent und der Referrer an YouTube-Server gesendet. Für weitere Details lesen Sie bitte die Datenschutzerklärung. Wenn Sie den Play-Button anklicken, erlauben Sie damit automatisch das Einbinden von YouTube-Videos für die Zukunft.




      Wer mir und sich selbst 500mb gratis-Speicher schenken will, kann sich ja unter diesem >Link<unter Dropbox registrieren ;)

      Wii Konsole mit Firmware 4.1
      Mit Internet
      Zwei Gamecube-Controller
      2 Wii Fernbedienungen, von denen eine kaputt ist (ich frag mich immer noch wie das möglich ist...)
      Gemoddet nach den Regeln des ALTEN UHGs, aufgefrischt mit dem IOS-Update im neuen UHG.

      I just talked a bit with Wiimm about the DLS1 Server, and since it serves update files for some games(and just update files) we decided to disable the server(we still host the server, we just don't serve any updates) because the files are all Copyrighted by their Publishers and the distribution is illegal.
      So the Server just return no update files to the Server. But since the Update Files add new content or fix bugs, we probably need to block imported FriendCodes as they contain these updates and new accounts don't.
      More information is coming in the next days.
      14.932 bytes pure destruction.