miércoles, 30 de abril de 2014

Rescatemos el Wi-Fi de la Nintendo DS

Tiempo hace que no escribo por aquí, aunque más de una entrada en borrador tengo planteada y algunas ideas más. El problema como siempre es el tiempo... En esta ocasión, este una entrada un poco urgente, porque dentro de poco llegará una catástrofe de la que espero que más tarde no nos sintamos impotentes.

El 20 de mayo Nintendo cerrará sus servidores de conexión Wi-Fi para Nintendo DS y Wii. Esto significará que todos los servicios que los juegos actuales tienen se perderán... para siempre. Se verán afectados contenidos descargables (DLCs) como misiones, objetos únicos... pero también afectará a servicios de multijugador on-line, siendo la pérdida más famosa la de Mario Kart DS (adiós a perder por paliza contra chinos y japoneses).

Pero hay una solución. La idea original es de Toad King, un usario de GbaTemp que creo este hilo, además de la web: Save Nintendo Wi-Fi. El objetivo es hacer un servidor falso que emule ser un servidor de Nintendo y que por tanto, de cara a la NDS, todo seguirá normal.



A pesar de que el proyecto lleva su tiempo, el avance básicamente ha sido el de comenzar a crear el servidor en Python. El desarrollo se está haciendo desde GitHub aquí. Y le queda bastante... Algunos juegos ya tienen algunas funciones restauradas como Phantasy Star 0.

¿Qué se puede hacer hasta el 20 de mayo?

Para hacer el servidor se necesita saber qué datos se intercambia la NDS y el servidor de Nintendo. Esto se puede conocer capturando los datos transmitidos y recibidos por el emulador con programas como Wireshark. Una vez obtenido dicho tráfico (paquetes) se pueden analizar y hacer que el servidor recree todo ello. Como no hay mucho tiempo, la prioridad ahora mismo es capturar el tráfico de cuantos más juegos mejor.

¿Cómo capturar los datos intercambiados?

He creado una serie de programas que básicamente reducen todo el proceso a jugar. No hace falta instalar nada, solo seguir los siguiente pasos (sólo para NDS, para Wii en la página de Toad King hay información):

Herramientas
  • Ordenador con Windows (en VirtualBox funciona también).
  • Conexión cableada (Ethernet) a Internet (usando VirtualBox esto no es necesario).
  • SSL Autopatcher v1.4
  • Desmume PCAP v1.2
  • BIOS y Firmware de NDS para DeSmuME. Esto que lo busque cada uno por ahí.

Pasos
  1. Seleccionar el juego objetivo. Aquí hay una lista de Nintendo con los juegos afectados. No están todos, pero sí para empezar. Tened cuidado de no escoger un juego del que ya se tengan los paquetes.
  2. Arrastrar y soltar la ROM sobre SslPatcher.exe. Este programa parcheará el juego (si lo necesita) para forzarlo a que no cifre los datos que transmite. En ese caso, creará un nuevo archivo en el directorio del juego original, con igual nombre pero añadiendo "[NOSSL]".
  3. Copiar los archivos de BIOS y Firmware dentro de la carpeta Firmware de DeSmuME.
  4. Abrir DeSmuME PCAP y configurarlo.
    1. Ir a Config->Wifi Settings. Seleccionar Infrastructure y en el menú desplegable vuestra tarjeta de red Ethernet.
    2. Ir a Config->Emulation Settings. Activar "Use external BIOS images" y seleccionar los archivos de BIOS. Activar "Use external firmware image" y seleccionar el archivo de Firmware.
  5. Jugar.
Una vez hecho esto para un juego, para los siguientes simplemente habrá que parchear la ROM y jugar.

NOTA 1: No hace falta entrar en la configuración Wi-Fi del juego. Eso está ya configurado en el archivo firmware.dfc que se incluye. Está puesto para que use el túnel SSL que hay en la página de Toad King, esto es necesario porque la conexión a algunos servidores ha de ser por HTTPS.
En caso de no ser así, el único cambio que hay que hacer es introducir la siguiente dirección de DNS: 199.195.254.155

NOTA 2: Cada vez que se entre en el modo on-line se creará un archivo ".pcap" (a veces más de uno) donde se guardarán todos los paquetes que DeSmuME reciba y envíe (se puede abrir con Wireshark). El archivo se cerrará cuando se cierre la conexión. Este archivo es el que hay que compartir para crear el servidor.

NOTA 3: Tened cuidado si movéis de carpeta el emulador. Las rutas que hay en el archivo desmume.ini y que apuntan a los archivos de la BIOS y el Firmware son absolutas, y hay que actualizarlas por tanto. Para solucionarlo, se puede o modificar el archivo o repetir el paso 4.1. Este fallo puede causar el error 20104.

Formas de compartir las capturas

  • Toad King propone enviárselos por email (en su web está) para que él los suba ahí.
  • Yo propongo usar Google Drive. Daré acceso a esta carpeta a las personas que quieran participar y así la lista que hay de juegos por capturar la puede actualizar cada usuario al instante.
  • Cualquier otra opción será bienvenida.

Alternativas si no dispones de conexión Ethernet

Como dije anteriormente, este proceso sólo funciona si tu ordenador está conectado al router / punto de acceso principal mediante un cable Ethernet. Si no es así y tienes conexión Wi-Fi o 3G aquí pongo algunas alternativas que he probado.
  • Si dispones de dos ordenador y un cable Ethernet, conéctalos con el cable entre sí. En el equipo que tenga la conexión por Wi-Fi o 3G, entra en las configuraciones de los adaptadores de red y establece que el adaptador que tenga Internet comparta la conexión con el adaptador Ethernet. De esta forma ahora el segundo equipo tendrá conexión a Internet por Ethernet como queríamos. Si alguien está interesado en este proceso, puedo hacer un pequeño tutorial tanto para Windows como para Linux.
  • Otra solución es instalar Windows como una máquina virtual en VirtualBox (otros programas de simulación puede funcionar aunque no los he probado personalmente). En este caso no hay que hacer ninguna configuración extra, simplemente seguir los pasos pero dentro de esa máquina virtualizada. El problema es que DeSmuME puede ir bastante lento ahí dentro.

Un saludo.

1 comentario:

  1. Oye tío , me apunto , tengo un juego al que no quiero que se le pierda,
    contacta a av377 arroba h - o -t mail punto com
    (lo pongo así por privadidad)

    ResponderEliminar