Asking the Wiimmfi devs/admins: WFC and emulators

      Asking the Wiimmfi devs/admins: WFC and emulators

      Hello there! I'm Arisotura, the author and main dev of melonDS (DS emulator).

      I'm posting here because I'm concerned about one thing.

      melonDS is popular for supporting wifi, and that includes online connectivity. We are also in the process of fixing up local multiplayer support and adding netplay, which is guaranteed to boost the popularity of melonDS.

      With that, I'm concerned about people using melonDS to join WFC games and cheat/hack.

      So I'd like to hear opinions from the Wiimmfi dev/admin team. What can I do to prevent or limit that? Which features should I avoid implementing?
      DS emulators is a topic that neither Wiimm nor me have really looked into in the past.

      As far as I know, melonDS (and/or other DS emulators) can already connect to Wiimmfi, but requires you to dump the BIOS data of your own Nintendo DS (because otherwise all melonDS users "look like" they're using the same console which has been banned long ago).

      Any kind of emulator is going to make it trivial to cheat (like with Dolphin which has easy ways to add cheat codes or modify memory); that's not something you as emulator developer can prevent if that's what you meant. As for Wiimmfi, the best method of implementing an emulator in general (for use on Wiimmfi) is to try and take as many identifiers, IDs and data from the console BIOS (or some other unique data a user has to dump from his own DS hardware), so A) not all emulator users share the same identity that would quickly get banned and B) bans on Wiimmfi are at least somewhat effective - just like Dolphin does with a NAND, you can import your own Wii NAND backup into Dolphin and it takes as much data from that NAND as possible.

      Though, without extensive patching to the game(s) and/or the emulator, I doubt we're going to get the DS (or any DS emulator) to a level where the ban system is that effective than with Mario Kart Wii and Dolphin - that only really works because there's been a bunch of patches to Dolphin and lots and lots of custom code added to Mario Kart Wii.

      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 ()

      Well yeah, the 'user identity' part is where I'm concerned. I know that the emulator is out there and it's open source and thus anyone can do whatever they want with it, but for example I don't want to let it be too easy to get a new WFC identity.

      Right now, melonDS can run without a user-supplied firmware/BIOS, but when doing so the wifi data are initialized from preset values (for example, the MAC is 00:09:BF:11:22:33). Thing is, we've had options like generating a random MAC, so that people wanting to try local multiplayer wouldn't get foiled by MAC collisions. What I don't know, and am concerned about, is how easy that sort of thing makes it to get a new WFC ID or otherwise appear as a different user and dodge a ban. I don't know how WFC IDs are generated.

      Arisotura schrieb:

      Well yeah, the 'user identity' part is where I'm concerned. I know that the emulator is out there and it's open source and thus anyone can do whatever they want with it, but for example I don't want to let it be too easy to get a new WFC identity.

      Right now, melonDS can run without a user-supplied firmware/BIOS, but when doing so the wifi data are initialized from preset values (for example, the MAC is 00:09:BF:11:22:33). Thing is, we've had options like generating a random MAC, so that people wanting to try local multiplayer wouldn't get foiled by MAC collisions. What I don't know, and am concerned about, is how easy that sort of thing makes it to get a new WFC ID or otherwise appear as a different user and dodge a ban. I don't know how WFC IDs are generated.
      I believe the game itself generates the WFC ID - it's sent during login, but that's unsure on how it's actually made.
      I'll be honest, DS is one of those platforms where moderation is a lot harder - last I checked a user basically sends their MAC, WFC ID (which could be a timestamp for all I know) which is derived from the MAC address.. somehow (according to research from SimonTime), and the BSSID of the router they're connected to and that's pretty much it.

      EDIT1: Yes, the User ID is directly sent from the user during ACCTCREATE - seen here with a randomised MAC (this could be an issue since I had to update my WFC ID and DNS settings every time I relaunched the MelonDS program since I wasn't using real firmware..), 2366805455427 is sent to the server during ACCTCREATE and LOGON:

      Quellcode

      1. POST /ac HTTP/1.0
      2. Content-type: application/x-www-form-urlencoded
      3. Host: nas.nintendowifi.net
      4. User-Agent: Nitro WiFi SDK/1.0
      5. HTTP_X_GAMECD: AMCP
      6. Connection: close
      7. Content-Length: 278
      8. action=acctcreate
      9. sdkver=001000
      10. userid=2366805455427
      11. passwd=382
      12. gamecd=AMCP
      13. makercd=01
      14. unitcd=0
      15. macadr=0009bf386710
      16. lang=01
      17. birth=0101
      18. devtime=220922193837
      19. bssid=00f077777777
      20. apinfo=00:0000000-0
      21. devname=m e l o n D S
      22. HTTP/1.1 200 OK
      23. Server: Wiimmfi
      24. Date: Thu, 22 Sep 2022 18:38:37 GMT
      25. Content-Type: text/plain;charset=UTF-8
      26. Content-Length: 88
      27. Connection: close
      28. NODE: wifiappw3
      29. Vary: Accept-Encoding
      30. Duration: D=26745 usec
      31. retry=0
      32. returncd=002
      33. userid=3040363365407114
      34. datetime=20220922183837
      35. POST /ac HTTP/1.0
      36. Content-type: application/x-www-form-urlencoded
      37. Host: nas.nintendowifi.net
      38. User-Agent: Nitro WiFi SDK/1.0
      39. HTTP_X_GAMECD: AMCP
      40. Connection: close
      41. Content-Length: 294
      42. action=login
      43. gsbrcd=AMCJ1vp1c7b
      44. sdkver=001000
      45. userid=2366805455427
      46. passwd=382
      47. gamecd=AMCP
      48. makercd=01
      49. unitcd=0
      50. macadr=0009bf386710
      51. lang=01
      52. birth=0101
      53. devtime=220922193837
      54. bssid=00f077777777
      55. apinfo=00:0000000-0
      56. devname=m e l o n D S *
      57. HTTP/1.1 200 OK
      58. Server: Wiimmfi
      59. Date: Thu, 22 Sep 2022 18:38:39 GMT
      60. Content-Type: text/plain;charset=UTF-8
      61. Content-Length: 203
      62. Connection: close
      63. NODE: wifiappw3
      64. Vary: Accept-Encoding
      65. Duration: D=1335848 usec
      66. challenge=Y0hPTVRmRVg*
      67. locator=gamespy.com
      68. retry=0
      69. returncd=001
      70. token=<snip>
      71. datetime=MjAyMjA5MjIxODM4Mzg*
      Alles anzeigen


      I currently host the DLS1, GAMESTATS, and Peerchat server for Wiimmfi. if you have any issues with leaderboards (excluding MKW!), Mystery Gifts or other in-game downloadables, or Pokémon Wi-Fi Plaza, I can try to help!

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Billy549 ()

      @Arisotura: Do you think it's possible to sync melonDS to play online? Whenever I see melonDS (I'm using an original 3DS to play online) with default firmware names in the stat page (Setya, Bill Nye, etc), the online match doesn't make sense because it's heavily desync and laggy and basically not fun to play. When I play with other real consoles, it's all good.
      - NumeroFox_503