viernes, 25 de marzo de 2016

Saliendo de la procrastinación.

Hola ¿Cómo están?

Bienvenidos sean de nuevo a nuestro blog. El día de hoy hemos aprovechado que el trabajo ha estado relativamente relajado (es semana feriada en mi país) para poner un poco de orden a las cosas e inaugurar la nueva saga "avisos parroquiales".

Aprovecho esta oportunidad para aclarar que siempre nos encontramos en disposición de resolver dudas con respecto a los proyectos que aquí se comparten. Sin embargo nuestras respuestas pueden ser demoradas debido a varios factores:
  • Tal como todos, tenemos obligaciones que cumplir y problemas propios que resolver (los cuales suelen ser muchos y siempre tendrán prioridad). 
  • Ya no contamos con la misma computadora y entorno de trabajo con los que se crearon la mayoría de los proyectos que se compartieron en el pasado. Contamos con respaldos de muchas cosas, pero otras hay que buscarlas en respaldos archivados. En ese caso nos topamos con un obstáculo, pues ahora nuestra computadora de cabecera es una netbook y no cuenta con lectora de discos ópticos. 
  • Los proyectos y las herramientas para generar varios de los recursos del blog se encuentran en casa, por lo tanto no tenemos acceso inmediato a ellos. Por cuestiones de trabajo casi nunca estamos en casa.
  • Muchos de los circuitos, materiales, equipos, programadores y prototipos los hemos regalado, por lo que en ocasiones también contamos con la imposibilidad física de poner a prueba varias cosas.
  • Otras cosas como la legendaria computadora "Family" (aportada por nuestro amigo Dark "Dash Bandit" Shingo) ya han dado su canto de cisne.

A pesar de todo ello, reitero, tenemos la mejor disposición de apoyar en caso de que se requiera asesoría o aclaración de dudas con respecto a los proyectos expuestos en este blog. No nos podemos comprometer a desarrollar proyectos a la medida debido a que lo más probable es que quedemos mal, dando tumbos y palos de ciego por no contar con las herramientas idóneas para hacer las debidas pruebas de calidad.

¡Estamos en contact!

jueves, 24 de marzo de 2016

Nintendo sucks (CFW edition).

Hola que tal ¿Cómo están?

Tal como el año pasado, este inicio de primavera trae un clima bastante loco por mis latitudes, espero que por las de ustedes gocen de un excelente clima para aprovechar al máximo los días de asueto (si disfrutan de ellos) o sus días de trabajo (si son como su servidor).

Pues bien, en el capítulo anterior de esta "emocionante" saga titulada "Nintendo sucks" repasamos el proceso para poder extraer la valiosa OTP de nuestras consolas 3DS y poder utilizar el hardware de la misma a todo su potencial mediante la instalación del a9lh.

Ahora que tenemos nuestra OTP tenemos que compilar el archivo arm9loaderhax.3dsx (el exploit propiamente dicho) que posteriormente instalaremos en nuestra consola.

Para compilar el exploit, podemos recurrir a dos alternativas:

  1. La primera es establecer un entorno de desarrollo y compilación en nuestra computadora.
  2. La segunda es recurrir a un servicio de compilación en línea, el cual puede ser mediante una aplicación web o recibiendo ayuda en los foros de la scene de los "compiladores voluntarios".

Ambos procesos son igualmente válidos, pues el exploit obtenido será el mismo en ambos casos.

Paso 9. Compilación del exploit arm9loaderhax.
Objetivo: Generar el exploit a9lh correspondiente a nuestra consola haciendo uso de la OTP.

Si optamos por establecer el entorno de desarrollo necesitamos cumplir con algunos requisitos:

  • Una computadora con sistema operativo Windows. Si bien su servidor emplea Linux como sistema operativo de cabecera, se han reportado casos en que la compilación en Linux no es satisfactoria o que el exploit generado provoca "brickeos". Dado que queremos minimizar los riesgos para este proceso nos decantaremos por Windows.
  • Descargar el DevKitPro, obtenerlo mediante este enlace. Descargar e instalar en nuestra computadora el "Automated Installer" en su versión más reciente (al momento de escribir esto devkitProUpdater-1.6.0.exe). Al instalar el devkitpro nos interesa instalar la parte devkitpro ARM, los demás módulos no son necesarios para el proceso.
  • Descargar e instalar Python, en su variante 2.x (al momento de escribir esto la versión más reciente es la 2.7.11) que corresponda a la arquitectura de nuestro sistema operativo (32 o 64 bits) de ésta página. Al instalar Python hay que asegurarse que se agregue Python a las variables de entorno PATH (la opción inferior del instalador que se encuentra desmarcada por defecto).
  • Descargar e instalar Pycrypto, en la variante de nuestro sistema operativo (32 o 64 bits) de la siguiente página
  • Descargar la "master branch" del arm9loaderhax de este repositorio. Este repositorio contiene todos los dumpeos necesarios para llevar a cabo la compilación. Para descargarlo debemos ir a la derecha de la página y presionar el botón "Download ZIP". Una vez descargado el ZIP, debemos descomprimirlo, teniendo la precaución de que no aparezcan espacios en toda la jerarquía de directorios que compongan la ruta, de lo contrario obtendremos un error al tratar de compilar.
  • Descargar e instalar la herramienta "make" de la página del proyecto

Una vez descargadas e instaladas las herramientas necesarias, debemos hacer lo siguiente:

  1. Copiar nuestro archivo otp.bin a la carpeta "data_input" de nuestra copia local del repositorio arm9loaderhax-master.
  2. Abrir una consola de comandos (CMD) dentro del directorio arm9loaderhax-master y teclear make.
  3. Después de unos cuantos segundos se creará una carpeta llamada "data_output" y dentro se encontrará el archivo arm9loaderhax.3dsx que será nuestro exploit instalable en la consola.

Si optamos por compilar el exploit vía web sólo tendremos que dirigirnos en nuestro navegador preferido a la página https://felipejfc.com/a9lh y arrastrar nuestro archivo otp.bin. La página hará algunas validaciones y nos ofrecerá descargar nuestro arm9loaderhax.3dsx.

Paso 10. Instalación del arm9loaderhax en la consola.
Objetivo: Instalar el exploit a9lh en una copia de la EmuNAND con la versión de firmware más reciente y el FBI previamente inyectado, con el fin de facilitar el proceso de instalación de aplicaciones. Esta imagen de EmuNAND se inyectará en la SysNAND, por lo que la consola quedará en la versión más reciente de sistema.

Una vez que obtenemos nuestro exploit deberemos instalarlo de alguna forma en nuestro 3DS. En este punto la mayoría de las guías obvian el paso resumiéndolo como "ejecutar el arm9loaderhax.3ds con cualquier entrypoint" y bueno ¿Cuál es CUALQUIER entrypoint (algo así como el clásico "Press ANY key...")?
Pues bien, para instalar nuestro exploit recomiendo los siguientes pasos:

  1. Copiar a la raíz de nuestra tarjeta SD el respaldo de la EmuNAND con versión más reciente de firmware que generamos en el paso 4 de la guía previa y renombrar el archivo a "nand.bin".
  2. Ir a la página https://smealum.github.io/3ds/ y descargar ya sea el "Homebrew starter kit" o sólo el ejecutable del "Homebrew Launcher".
  3. Extraer los archivos, copiar el archivo "boot.3dsx" y la carpeta "3DS" a la raíz de la memoria SD.
  4. Copiar nuestro "arm9loaderhax.3dsx" a la carpeta 3DS ubicada en la raíz de la memoria SD.
  5. Insertar la memoria en nuestra 3DS, encenderla y activar la cámara (presionando los botones L y R al mismo tiempo).
  6. Ingresar en nuestra computadora a la página https://yls8.mtheall.com/3dsbrowserhax.php y escanear con la 3DS el código QR que aparece. O en su defecto dirigirse a la siguiente página desde el navegador de internet de la consola: http://yls8.mtheall.com/3dsbrowserhax_auto.php
  7. Al cargar la página aparecerá una barra con un deslizador en la pantalla inferior de la consola, debemos tocar cualquiera de los extremos de la barra para activar el browserhax.
  8. El browserhax es un exploit un tanto inestable, en ocasiones tendremos que intentar varias veces antes de que arranque el Homebrew Launcher.
  9. Una vez cargado el Homebrew Launcher, ejecutar el arm9loaderhax.3dsx (aparecerá en el menú de aplicaciones). La instalación del exploit tardará un poco, pues se inyectará en la copia de la EmuNAND (renombrada a nand.bin) que colocamos en la memoria y posteriormente inyectará esa imagen en la NAND del sistema.
  10. Al concluir la instalación del exploit la 3DS se tratará de reiniciar, pero se quedará con ambas pantallas en negro y el indicador de POWER quedará encendido. Esto es normal y ocurrirá cada vez que encendamos la 3DS sin un "payload" en la memoria SD (o directamente sin memoria SD insertada en la consola).
  11. Debemos forzar el apagado de la consola (manteniendo presionado el botón POWER) y extraerle la memoria SD para ponerle un "payload" válido al a9lh.

Paso 11. Instalación de CFW (a9lh payload).
Objetivo: Instalar un CFW compatible con el a9lh, de forma que el ejecutable del CFW cumpla la función de payload del exploit y podamos aprovechar todas las ventajas del mismo.

Entre los payload válidos por el momento contamos con los CFW auReiNand y cakesFW.

En primera instancia opté por el auReiNand, debido a su simplicidad y a que fue el primer CFW con soporte para a9lh. Sin embargo he probado el cakesFW y es un CFW con mayor funcionalidad, mejores opciones de configuración y un rendimiento muy bueno, por lo tanto el payload que compartiré corresponde al de cakesFW.

  1. Se deben borrar de la memoria SD los archivos utilizados en el paso previo (nand.bin, boot.3dsx y /3DS/arm9loaderhax.3dsx).
  2. Se deben copiar a la raíz de la memoria los archivos contenidos en el este paquete. Este paquete contiene los archivos base del cakesFW y todos los dumpeos necesarios para configurarlo y hacerlo funcionar.
  3. Insertar la memoria SD a la consola y encenderla. Deberá mostrarnos el menú de configuración del cakesFW.
  4. En el menú seleccionar la opción "Select patches" y verificar que la opción "Enable EmuNAND" esté desactivada, puesto a que ya no emplearemos la EmuNAND en lo sucesivo, lo que nos dará 1GB extra de diversión en nuestras memorias SD.
  5. En el menú "Select patches" seleccionar las opciones "Disable signature checks" y "Block FIRM partition updates". De esta forma podremos instalar aplicaciones sin firmar y actualizar nuestro sistema sin perder el exploit o brickear la consola. 
  6. Presionar START para guardar los cambios.
  7. Ir al menú "More options", seleccionar "Toggleable options" y activar "Enable autoboot (Press L to enter the menu)". 
  8. Presionar START para guardar los cambios.
  9. En el menú principal seleccionar "Boot CFW" para arrancar nuestra consola con CFW desde la SysNAND.
Pues bien, ya tenemos nuestra consola con 3DS con CFW. A partir de aquí podemos hacer varias cosas con la consola, como instalarle el Homebrew Launcher en formato CIA para tener acceso cómodo a nuestras aplicaciones desde el menú principal de la consola, también podemos instalar el AGB parcheado en nuestra SysNAND para poder instalar juegos de GameBoy Advance y jugarlos desde el emulador nativo de la consola, entre muchas otras posibilidades.

Sin lugar a dudas colocar CFW en una 3DS incrementa de forma notable las posibilidades de la consola. Nos brinda un control prácticamente total sobre la misma y nos permite aprovechar el hardware más allá de las restricciones que el fabricante ha impuesto sobre la misma.

Espero que se puedan divertir con sus consolas, ahora con su potencial liberado. Su servidor de momento se retira a seguir jugando con una consola de la competencia X_x, en espera que la scene de la misma llegue a surgir y producir la combinación de exploits de hardware y software necesarios para flexibilizar el desarrollo de aplicaciones sobre la misma.

Y para ser políticamente (hipócritamente) correctos recuerden... ¡No apoyamos a la piratería! Ni nos hacemos responsables del uso o las posibles averías que puedan surgir, bla, bla, bla, ya saben a lo que nos referimos ¿Verdad n_n?

¡Estamos en contact!

miércoles, 16 de marzo de 2016

Nintendo sucks (Episodio 2.1 OTP).

Hola que tal ¿Cómo están? Bienvenidos sean de nuevo a nuestro blog.

En este nuevo episodio de la saga "Nintendo sucks" revisaremos la extracción de la OTP de nuestras consolas 3DS.

¿Recuerdan que les comenté que había escrito una guía extensiva (y bastante genial) para realizar la extracción de la OTP y la compilación del a9lh para 3DS? Pues bien, después de mucho buscar en la computadora no fui capaz de encontrar el archivo de texto donde la había guardado X_x. Sospecho que la última limpieza de archivos se lo llevó como damnificado.

Así que, pues aprovecharé esta entrada para explicar los pasos clave del proceso, quizás no con tanto detalle como nos hubiere gustado (como estaban en la guía super-duper-genial), pero trataré de no dejar cabos sueltos para que puedan llevar a cabo el procedimiento sin inconvenientes.

Antes que nada, les recuerdo que las herramientas y dumpeos que se anexan en esta guía funcionan sólo en consolas 3DS (versiones 3DS, 3DSXL y 2DS) de la región americana (US). Además de que este proceso en particular no es aplicable a las variantes "New 3DS".

Los materiales necesarios para aplicar el procedimiento son:

  • Una consola 3DS con firmware 4.5, pues emplearemos de forma exhaustiva el exploit MSET. 
  • Una computadora.
  • Una flashcard compatible con modo DS/DSi que sea reconocida por la consola y que cuente con su firmware en una memoria MicroSD. Su servidor empleó una R4i SDHC Snoopy 2014, que es reconocida por la consola como el juego Touch Bomberman Land.
  • Una memoria SD, completamente limpia (sin EMUNAND, sin archivos ni particiones extrañas) formateada en FAT32, de por lo menos 4GB de capacidad. Recomiendo que sea una memoria distinta a la que actualmente emplean para jugar.
  • Cargador de batería de la consola, ya que el proceso es algo demorado (aproximadamente dos y media horas).
  • Conexión a internet inalámbrico. Se tratará de emplear lo menos posible, sin embargo hay pasos en los que será inevitable su uso.
  • Un lector de memorias MicroSD y SD.
  • Mucho espacio en el disco duro de nuestra computadora para guardar los varios respaldos de la EmuNAND y la SysNAND.
  • Un lugar cómodo para trabajar.
  • Mucha paciencia.

Antes que nada, comparto el paquete de archivos que se utilizarán.

¿Cómo llevar a cabo la guía?

Para emplear los archivos del paquete se deben descomprimir. Dentro del paquete encontraremos una serie de carpetas numeradas con el número del paso que corresponde y dentro de cada una de ellas tendremos una carpeta con los archivos que deben copiarse a la raíz de la memoria SD de la consola y a la raíz de la memoria MicroSD de la Flashcard.

Se utilizarán de forma exhaustiva algunos procedimientos, por lo cual se explicará a continuación a qué se refiere cada uno de esos procedimientos.

Activar exploit MSET.
Cuando en la guía aparezca este procedimiento, se tiene que hacer lo siguiente:
  1. Encender la consola y entrar al menú "Configuración de la consola" (tiene el icono de una llave inglesa).
  2. Presionar en el botón "Otras opciones" (esquina inferior derecha con el icono naranja de una consola y una llave inglesa).
  3. Seleccionar "Perfil".
  4. Seleccionar "Perfil de Nintendo DS".
Crear imagen de SYSNAND o EMUNAND.
Cuando en la guía aparezca este procedimiento, se tiene que hacer lo siguiente:
  1. Iniciar el programa Decrypt9 o Decrypt9WIP (se especificará en cada caso la versión y el entrypoint que se empleará).
  2. Seleccionar en el menú del programa el menú SysNAND/EmuNAND Options (dependerá del tipo de NAND con que se trabajará).
  3. Seleccionar la opción NAND Backup.
  4. Seleccionar un nombre de archivo para la imagen de la NAND (sólo en Decrypt9WIP, en Decrypt9 se emplea por defecto el nombre de archivo nand.bin).
  5. Iniciar el proceso (demora unos pocos minutos). Se puede verificar el estado de la creación de imagen con el contador de porcentaje que aparece en la esquina inferior derecha de la pantalla superior.
Inyección de imagen de SYSNAND o EMUNAND.
Cuando en la guía aparezca este procedimiento, se tiene que hacer lo siguiente:
  1. Iniciar el programa Decrypt9 o Decrypt9WIP (se especificará en cada caso la versión y el entrypoint que se empleará).
  2. Seleccionar en el menú del programa el menú SysNAND/EmuNAND Options (dependerá de dónde queramos inyectar la imagen de NAND, si se inyectará la imagen a la EmuNAND o a la SysNAND).
  3. Seleccionar la opción NAND Restore.
  4. Seleccionar un nombre de archivo para la imagen de la NAND (sólo en Decrypt9WIP, en Decrypt9 se emplea por defecto el nombre de archivo nand.bin).
  5. Se ingresa el código de seguridad que aparece en pantalla (sólo en Decrypt9WIP).
  6. Iniciar el proceso (demora unos pocos minutos). Se puede verificar el estado de la inyección de imagen con el contador de porcentaje que aparece en la esquina inferior derecha de la pantalla superior.
Aplicar downgrade a EMUNAND.
Como medida de seguridad en todo el proceso y para minimizar las posibilidades de estropear el sistema de la consola, todas las operaciones de "downgrade" (bajar la versión de la consola) se efectuarán sobre la EmuNAND. De esta forma podremos probar que el procedimiento de downgrade se ha llevado a cabo con éxito arrancando la EmuNAND y verificando la versión de sistema de la misma. Sin embargo, cuando se realice la operación de downgrade a la versión 2.1 no podremos verificar la versión de la EmuNAND, pues ningún CFW es compatible con dicha versión.

El proceso de downgrade a EmuNAND implica los siguientes pasos:
  1. Verificar que no existe en la raíz de la memoria SD de la consola la carpeta "updates", si existe, se tiene que borrar.
  2. Copiar a la raíz de la memoria SD de la consola la carpeta "updates" correspondiente al paso en que nos encontremos. La carpeta "updates" contiene una serie de archivos CIA que componen el firmware de una versión específica de la consola.
  3. Arrancar el CFW para iniciar la EmuNAND.
  4. Arrancar el SysUpdater (previa instalación en la consola).
  5. Aparece la advertencia de presionar el botón HOME si estamos usando la versión CIA del programa (como en nuestro caso), por lo que lo presionamos y luego presionamos en Reanudar para regresar al programa. Desconozco si esto tiene alguna utilidad, pero más vale seguir las instrucciones.
  6. Presionar el botón Y.
  7. Esperar a que termine el proceso de downgrade (demora cerca de 20 minutos).
  8. Al finalizar el downgrade, la consola se reiniciará. Debido a que la SysNAND no se ha tocado, el sistema arrancará con normalidad y nuestra EmuNAND tendrá la versión objetivo del downgrade.
Bueno, pues si todo está listo, manos a la obra.

Paso 1. Creación de una EMUNAND.
Objetivo: Crear una imagen de sistema en la memoria SD de la consola (EMUNAND).
  1. Copiar el archivo MT_INSTALLER.NDS a la raíz de la memoria MicroSD de la Flashcard.
  2. Copiar el archivo LAUNCHER.DAT a la raíz de la memoria SD de la consola.
  3. Insertar la Flashcard y la memoria SD a la consola.
  4. Iniciar la Flashcard y ejecutar el archivo MT_INSTALLER.NDS. Nos mostrará una pantalla azul donde nos pedirá confirmar la región de la consola (USA en nuestro caso) y procederá a configurar el exploit MSET.
  5. Activar el exploit MSET.
  6. Veremos la pantalla de las herramientas Gateway. Nos desplazamos hasta la penúltima opción (Format EmuNAND). Con esto crearemos una EmuNAND nueva en la tarjeta SD.
  7. Al terminar el procedimiento apagamos la consola.

Paso 2. Instalación de CFW rxTools.
Objetivo. Instalar en la tarjeta de memoria un CFW para efectuar tareas de preparación y posibilitar la ejecución de varias herramientas que se necesitarán posteriormente.
  1. Borrar los archivos en la memoria SD y en la memoria MicroSD de la Flashcard.
  2. Copiar el archivo rxinstaller.nds a la raíz de la memoria MicroSD de la Flashcard.
  3. Copiar los archivos firmware.bin, rxTools.dat y slot0x25KeyX.bin a la raíz de la memoria SD de la consola.
  4. Insertar la Flashcard y la memoria SD a la consola.
  5. Iniciar la Flashcard y ejecutar el archivo rxinstaller.nds. Nos mostrará una pantalla donde nos informará sobre la instalación del CFW y procederá a configurar el exploit MSET.
  6. Activar el exploit MSET.
  7. Se iniciará el CFW rxTools. Se crearán unos archivos en la memoria SD y arrancará la EmuNAND.
  8. Habilitar la conexión de internet.
  9. Ir a "Configuración de la consola" (verificar que la versión de sistema tiene las letras RX-E), "Otras opciones", "Actualizar".
  10. Procedemos a actualizar la EmuNAND a la versión más reciente.
  11. Al terminar el procedimiento la consola se reiniciará y arrancará desde SysNAND.
  12. Activar el exploit MSET.
  13. Presionar el botón R para ingresar a las opciones del rxTools.
  14. Seleccionar "Other Options".
  15. Seleccionar "Install FBI over Health&Safety app".
  16. El proceso fallará, pero nos permitirá conocer la región y versión de los archivos que utilizaremos en el próximo paso. Hay que anotar estos datos.
  17. Salimos de las opciones y seleccionamos Launch rxMode.
  18. La EmuNAND arrancará y tendremos aceptar algunos avisos de la nueva versión instalada.
  19. Apagamos la consola.
Paso 3. Inyección del FBI en la EmuNAND.
Objetivo. Instalar en la EmuNAND la aplicación FBI, que nos permitirá instalar aplicaciones como el sysUpdater, que se empleará para hacer downgrade.
  1. Copiar en la raíz de la memoria SD los archivos fbi_inject.app y fbi_inject.tmd correspondientes a nuestra versión y región de consola. Asímismo el archivo sysUpdater.cia.
  2. Activar el exploit MSET.
  3. Presionar el botón R para ingresar a las opciones del rxTools.
  4. Seleccionar "Other Options".
  5. Seleccionar "Install FBI over Health&Safety app".
  6. En esta ocasión el proceso debe ser satisfactorio.
  7. Salimos de las opciones y seleccionamos Launch rxMode.
  8. La EmuNAND arrancará y podremos verificar que al iniciar la aplicación "Información sobre salud y seguridad" en realidad arrancará el FBI, un programa que nos permite instalar aplicaciones en formato CIA.
  9. Seleccionar el archivo sysUpdater.cia e instalarlo con las opciones por defecto. Si al tratar de instalar el archivo sysUpdater.cia nos salta un error, debemos hacer lo siguiente:
    1. Apagar la consola y conectar la memoria SD en la computadora.
    2. Navegar dentro de la carpeta Nintendo 3DS hasta la tercera orden de jerarquía y encontremos la carpeta "extdata". Si dentro de la carpeta Nintendo 3DS hay varias subcarpetas con claves numéricas, debemos repetir el proceso para cada una.
    3. Crear una carpeta llamada dbs.
    4. Dentro de la carpeta dbs crear dos archivos vacios llamados title.db e import.db.
    5. Insertar la tarjeta en la consola y reiniciarla.
    6. Activar el exploit MSET.
    7. Ir a "Configuración de la consola", "Gestión de datos", "Nintendo 3DS".
    8. La consola nos informará que la información de la base de datos está corrupta y nos dará la opción de reconstruirla. Seleccionamos Aceptar.
    9. Volvemos a intentar instalar el sysUpdater,cia, en esta ocasión no debería dar error.
  10. Salir del FBI (presionando la tecla HOME) y verificar que aparece un regalo en el menú de la consola.
  11. Abrir el regalo y verificar que arranca el sysUpdater.
  12. Apagamos la consola.
Paso 4. Instalación de Decrypt9WIP y creación de imágenes de NAND.
Objetivo. Instalar en el exploit MSET la aplicación Decrypt9WIP que nos permitirá manipular las NAND de nuestra consola. Este paso es sumamente importante.
  1. Copiar en la raíz de la memoria SD el archivo Decrypt9WIP.dat.
  2. Copiar en la raíz de la memoria MicroSD de la Flashcard el archivo Decrypt9WIP.nds.
  3. Insertar la Flashcard y la memoria SD a la consola.
  4. Iniciar la Flashcard y ejecutar el archivo Decrypt9WIP.nds. Nos mostrará una pantalla donde nos informará sobre la instalación de la aplicación en el exploit MSET.
  5. Reiniciar la consola.
  6. Activar el exploit MSET.
  7. Nos aparecerá el menú del Decrypt9WIP.
  8. Creamos una imagen de la EmuNAND y de la SysNAND.
  9. Apagamos la consola y copiamos ambas imágenes a la computadora. Recomiendo colocarlas en una carpeta acompañadas de una descripción de qué versión corresponde a cada imagen.
  10. Mantener una copia de esta EmuNAND en la raíz de la memoria (anotar el nombre del archivo para evitar confundirla).
Paso 5. Downgrade de EmuNAND (versión 9.2).
Objetivo. Bajar la versión de sistema de la EmuNAND a la versión 9.2, que nos permitirá utilizar más entrypoints y poder ejecutar aplicaciones con extensión 3dsx.
  1. Aplicar downgrade a EMUNAND. 
  2. Al concluir el downgrade se reinicia la consola y podemos verificar la que la versión de la EmuNAND sea la 9.2 si activamos el exploit MSET.
  3. Reiniciamos la consola.
  4. Iniciar la Flashcard y ejecutar el archivo Decrypt9WIP.nds. Nos mostrará una pantalla donde nos informará sobre la instalación de la aplicación en el exploit MSET.
  5. Reiniciar la consola.
  6. Activar el exploit MSET.
  7. Arrancará el Decrypt9WIP.
  8. Creamos una imagen de la EmuNAND. Hay que tener cuidado de guardar con un nuevo nombre de archivo y no confundirla con la imagen de respaldo que hicimos con anterioridad.
  9. Apagamos la consola y hacemos una copia de seguridad de nuestra nueva EmuNAND (versión 9.2) en la computadora. Hay que tener precaución de distinguir esta imagen de la otra que generamos en el paso 4. Si la capacidad de nuestra memoria lo permite, mantendremos ésta imagen en la misma, pues se empleará para restaurar nuestro sistema al finalizar la extracción de la OTP.
Paso 6. Downgrade de EmuNAND (versión 2.1).
Objetivo. Bajar la versión de sistema de la EmuNAND a la versión 2.1, que nos permitirá acceder al OTP de nuestra consola.
  1. Borrar de la raíz de la memoria SD la carpeta "updates" existente.
  2. Asegurarnos que tenemos en la memoria el respaldo de la EmuNAND más actualizada (la que se generó en el paso 4).
  3. Inyectamos la imagen de la EMUNAND generada en el paso 4 a la EmuNAND. Con esto tendremos la consola en la configuración con que se inició el paso 5.
  4. Aplicamos downgrade a la EMUNAND.
  5. Al concluir el downgrade se reinicia la consola, sin embargo en esta ocasión ya no podremos arrancar desde la EmuNAND, ya que ningún CFW soporta EmuNAND en versión 2.1.
  6. Repetimos los pasos 5.3, 5.4, 5.5, 5.6, 5.7 y 5.8.
  7. Al terminar el procedimiento no salimos del Decrypt9WIP, sino que regresamos al menú principal de la aplicación y presionamos SELECT para desmontar la memoria SD.
  8. Extraemos la memoria SD de la consola (sin apagarla) y hacemos una copia de seguridad de nuestra nueva EmuNAND (versión 2.1) en la computadora.
  9. La EmuNAND (versión 2.1) que queda en la memoria SD hay que renombrarla a SysNAND.bin.
  10. Reinsertamos la tarjeta SD a la consola, presionamos el botón B e Inyectamos la imagen de la EMUNAND (renombrada a SysNAND.bin) a la SysNAND. Este es uno de los pasos más delicados, por lo que conviene hacerlo con calma verificar todo antes de realizar la inyección y conectar la consola a la corriente eléctrica para evitar problemas de batería baja.
  11. Al terminar el proceso reiniciamos la consola y verificamos que la versión de sistema sea 2.1.
  12. Apagamos la consola.
Paso 7. Extracción de la OTP.
Objetivo. Extraer la OTP de nuestra consola.
  1. Borrar de la raíz de la memoria SD la carpeta "updates" existente (ya no se empleará más) y copiar el archivo arm11.bin correspondiente a este paso.
  2. Insertamos la memoria SD en la consola y la encendemos.
  3. Habilitamos el internet y nos dirigimos a la página  http://dukesrg.github.io/2xrsa.html?arm11.bin desde el navegador de la consola.
  4. Las pantallas parpadearán por un momento y se verá un barrido blanco en la pantalla inferior. Esperamos unos cinco segundos y forzamos el apagado de la consola.
  5. Conectamos la memoria SD a la computadora y comprobamos que exista un archivo llamado "a9f.bin" de 256 bytes.
  6. Renombramos el archivo a "otp.bin" y lo guardamos como oro en paño.
Paso 8. Restauración de la consola.
Objetivo. Revertir la consola a un estado que nos permita la instalación del a9lh.
  1. Borrar de la raíz de la memoria SD todos los archivos, excepto los respaldos de la EmuNAND generados en el paso 4 (versión más actual de sistema) y el paso 5 (versión 9.2).
  2. Renombramos a la EmuNAND del paso 5 (versión 9.2) "nand.bin", mientras que la EmuNAND del paso 4 (versión más actual) como "emunand.bin".
  3. Copiamos los archivos "arm9.bin" y "arm11.bin" a la raíz de la memoria SD.
  4. Arrancamos la consola, activamos el internet y volvemos a ingresar a la página http://dukesrg.github.io/2xrsa.html?arm11.bin desde el navegador de la consola.
  5. Esto activará el Decrypt9, desde el cual procedemos a Inyectar la imagen de SYSNAND y de EMUNAND.
Al concluir tendremos en nuestra consola la versión de sistema 9.2 y en la EmuNAND la versión más actual (10.6 al momento de escribir esto). Además tendremos en la computadora nuestro preciado archivo OTP.

Si bien es cierto que este proceso es muy engorroso (hay guías con menos pasos en internet), es bastante seguro. Su servidor lo ha repetido en tres consolas distintas sin contratiempos. Además se minimiza el riesgo durante el paso más crucial, el downgrade a la versión 2.1. Es posible ejecutar el downgrade de forma directa en la SysNAND, pero cualquier fallo puede estropear el proceso y el sistema, lo que nos obligaría a utilizar el Hardmod y nos complicaría las cosas.

En la próxima entrada detallaré las alternativas de compilación (local o en línea) del a9lh y les compartiré configuración que su servidor emplea para tener acceso a la mayoría de las cosas que ofrece la scene, además de que listaré los pros y contras de las configuraciones más comunes.

Espero que el proceso salga de acuerdo a lo previsto y no encuentren ningún inconveniente.

Estamos en contact!

    lunes, 14 de marzo de 2016

    Nintendo sucks again (A9lh Edition).

    Hola ¿Cómo están? Bienvenidos sean de nuevo a nuestro blog.

    En esta ocasión la demora ha sido muy prolongada, hace casi ocho meses desde la última vez que tuvimos oportunidad de conversar.

    Y como siempre, hay muchas cosas en el tintero, pero las responsabilidades del mundo real a veces nos complican darnos tiempo para las dosis de debraye.

    Sin embargo, para regresar con todas las ganas traigo los resultados de los trasteos de estas últimas semanas.

    Nintendo sacó al mercado hace unos pocos años la consola portátil Nintendo 3DS (3DS). Se trata de una evolución del exitoso Nintendo DS (NDs) que incorpora además de doble pantalla, la novedad de desplegar gráficos tridimensionales sin necesidad de gafas.

    Sin embargo, al momento de lanzar esta consola su recepción en el mercado no fue del todo satisfactoria. Desde mi opinión, los 'talones de Aquiles' del lanzamiento fueron su precio elevado, la falta de lanzamientos 'vendeconsolas' y la imposibilidad de transmitir la sensación 3D a través de anuncios y reviews. Es decir, para poder experimentar la principal característica de la consola, era necesario tener acceso físico a una y probarla 'con tus propios ojos'.

    Con el tiempo la consola bajó de precio (en un movimiento sumamente agresivo por parte de Nintendo), el catálogo mejoró y comenzó a atraer el interés de los videojugadores y desarrolladores. Entre los desarrolladores podemos contar a la 'scene', que se trata de desarrolladores que generan aplicaciones 'hechas en casa'  (homebrew). La scene siempre tiene que lidiar con los sistemas de protección de los aparatos que impiden la ejecución de código arbitrario. Para poder sortear ese obstáculo se debe recurrir a brechas de seguridad en el software y/o el hardware de la plataforma objetivo.

    Cuando hablamos de código arbitrario nos referimos a cualquier programa, sin algún tipo de restricción.

    En el caso del 3DS, el primer frente de entrada de la scene fue a través de las Flashcard. Son dispositivos similares a las tarjetas de juego que emplea la consola, con la ventaja que permiten colocar un programa arbitrario para que sea ejecutado por el sistema. Dicho programa puede ser una aplicación homebrew o la copia de un título lanzado para la consola.

    La desventaja de emplear una Flashcard radica en su costo relativamente alto y la relativa dificultad para conseguirlas, debido a que en varios lugares su venta se encuentra restringida (ya que facilitan la piratería).

    Después de algún tiempo se fueron encontrando otros puntos de entrada (entrypoints) que permiten ejecutar código arbitrario en la consola, algunos aprovechan errores en algunos juegos (Cube Ninja y The Legend of Zelda Ocarina of Time), otros utilizan errores en los módulos NDS del firmware (MSET), mientras los más difundidos aprovechan vulnerabilidades en el navegador de internet (Spider/Browserhax) o en el propio menú de la consola (Theme/Menuhax).

    Cada uno de estos entrypoints funciona en un rango determinado de versiones de firmware, ya que Nintendo trata de cubrir vulnerabilidades con cada nueva versión de sistema. Asímismo cada entrypoint tiene distintos grados de acceso al sistema y taza de éxito. Entre los más estables están el MSET y el Menuhax, mientras que Browserhax es de los menos estables.

    Cuando su servidor compró su 3DS el firmware más actual era la versión 9.2, el cual tenía la vulnerabilidad Browserhax que permitía ejecutar las herramientas de la Flashcard Gateway. Gracias a esas herramientas es posible crear una EMUNAND y hacer downgrade (bajar la versión del sistema) a la versión 4.5. En la versión 4.5 se puede emplear el MSET (un entrypoint muy estable) para ejecutar un Custom Firmware (CFW).

    Antes de avanzar más en este debraye aclararé algunos términos, ya que una de las peculiaridades de la scene de 3DS con respecto a otras es la cantidad de variantes que hay en cada configuración. En contraste la scene de PSP no tiene muchas variantes, en la actualidad (fin de la vida comercial de la consola) sólo existen dos variantes de CFW (PRO y ME), las cuales difieren en muy pocas funcionalidades.

    En el caso de la 3DS los CFW recurren al uso de la llamada EMUNAND. Se trata de una copia de la memoria interna de la consola que se aloja en una tarjeta SD. Esta copia del sistema no realiza las verificaciones de seguridad que se realizan en la memoria del sistema (SYSNAND), por lo que en ella se pueden instalar y ejecutar una amplia gama de aplicaciones. Al ser una copia de la memoria de sistema, no es posible intercambiar EMUNANDs entre distintas consolas (no funciona).

    Es decir, en las versiones de sistema 4.5 ~ 9.2 los CFW funcionan de la siguiente forma:

    • Se crea una copia de la memoria de sistema en la tarjeta SD.
    • Se copian los ejecutables del CFW en la memoria y se establece el entrypoint que se empleará para arrancar del CFW, ya que dependiendo del entrypoint dependerá también el formato de los ejecutables que se empleará.
    • Al arrancar el CFW comenzamos a utilizar el sistema almacenado en la EMUNAND, sobre el cual podemos hacer todas las modificaciones pertinentes y ejecutar código arbitrario.
    • Al apagar o reiniciar la consola la SYSNAND vuelve a tomar el control, por lo que el CFW no es permanente.

    Cuando adquirí mi 3DS realicé los pasos para bajar la versión de sistema a 4.5 y utilizando el MSET (aprovechando que cuento con una Flashcard R4i) arrancar el CFW. Primero utilicé el CFW Palantine, posteriormente el rxTools 2.5.

    A pesar de que las cosas funcionaban bien, me parecía engorroso todo el proceso de arranque del CFW, inyección del FBI (aplicación para instalar paquetes en la consola) y la propia instalación de juegos. A mi parecer todo se sentía como un entorno improvisado.

    Por un buen tiempo dejé de lado todas las noticias relacionadas a la scene del 3DS, el desarrollo de nuevos exploits, el Homebrew Launcher (HBL) y del lanzamiento de nuevos juegos. Inclusive dejé guardada la consola por un largo periodo de tiempo.

    Sin embargo, mi amigo MagmaD un día me preguntó ¿Te aventarías a hacerle el Hardmod a mi 3DS? A lo cuál respondí inmediatamente... ¿Hacerle al 3DS qué?

    Entonces me enseñó un video autoría de Yakara Colombia (quien al parecer en realidad es un Link de peluche) donde se explica cómo soldar un conector de tarjeta SD a la tarjeta lógica de un 3DS para poder conectarlo a la computadora, extraer el firmware, aplicarle unos parches y volver a inyectar el firmware en la consola para poder ejecutar un exploit para bajar la versión a la 9.2 (y poder ejecutar CFW). Esta adaptación es llamada Hardmod y permite leer y escribir directamente en la SYSNAND de la consola.

    Viendo que el Hardmod es un proceso sencillo (aunque requiere un poco de precisión), me llevé la consola a casa para ponerme manos a la obra ese mismo fin de semana. Realicé todo el proceso de downgrade (versión 10.5 a 9.2 y de 9.2 a 4.5) e incluso preparé la consola para funcionar con el CFW rxTools 2.5 (el que yo usaba) cuando surgió el anuncio más revolucionario de la scene, el Arm9LoaderHax (a9lh).

    El a9lh es un exploit que permite ejecutar código arbitrario (payload) en la 3DS cuando apenas arranca, inyectando código en las primeras particiones del sistema, las cuales son accedidas por el contador de programa (PC) del procesador ARM9 de la consola antes de cargar el kernel. Es decir, posibilita ejecutar el payload antes de que siquiera se ejecute el sistema de la consola. Con este exploit se puede ganar control total de los recursos de la consola.

    El único detalle que dificulta la aplicación de este exploit (que podríamos llamar el exploit definitivo) es que se requiere obtener la clave "One Time Programmable" (OTP) de nuestra consola. La OTP es una cadena binaria que se escribe en el CPU de la 3DS al momento de fabricar el chip (directo en el silicio, antes de encapsularlo como chip). Dicha cadena es una llave privada de encriptación. Se le llama OTP debido a que ese número se emplea una sola vez, es decir, no hay dos consolas con el mismo OTP. Los sectores de arranque de la NAND de nuestra consola se encuentran encriptados con la llave pública que corresponde a nuestra OTP, es por ello que las NAND no se pueden intercambiar entre consolas, pues la llave de desencriptado no coincidirá y la consola no arrancará.

    Debido a que el OTP se encuentra dentro del CPU y no de una memoria externa no volátil, es virtualmente imposible de extraer... A menos que se nos olvide 'cerrar la ventana' y permitir acceso al OTP después de arrancado el sistema. Y precisamente, en las primeras versiones de firmware de 3DS (hasta la versión 3.0) el acceso al OTP no se protegía, lo que nos posibilita leerlo y extraerlo si nuestra consola cuenta con una versión de firmware anterior a 3.0.

    Ese es un obstáculo, pero no es el único. Para bajar el 3DS hasta una versión vulnerable (2.1) necesitamos los archivos del firmware correspondientes a la región de nuestra consola, los cuales "misteriosamente" ya no se encuentran disponibles desde los servidores del Nintendo Update Server (NUS). Además en muchos sitios de la scene está vetado enlazar o proporcionar copias de los archivos de firmware debido a una ambigüedad en la interpretación de las leyes de protección de 'copyright'. Ya que bien es cierto que el firmware de las consolas 3DS es propiedad intelectual de Nintendo (es un código escrito por ellos), para llevar a cabo cada una de las guías o tutoriales se requiere del uso de dichos archivos, por lo que dichos sitios cargan con la responsabilidad de incitar a sus lectores a realizar una descarga privada de dichos archivos y por lo tanto infringen los derechos de copyright de forma indirecta (bajo el término jurídico de "provocación"). Dichas políticas de esas páginas de la scene, por lo que podemos ver no los exime de responsabilidad alguna y por otra parte, incluso complican de forma innecesaria un proceso de por sí laborioso.

    ¿Porqué todo este choro jurisprudencial? Porque para la guía que publicaré a la brevedad, "mi copia personal privada de todos los archivos que empleé en mi consola por un descuido quedará a disposición de internet, ¡Ohh, que descuidado soy! (wink, wink)".

    A la brevedad publicaré dicha guía (ya se encuentra escrita y revisada), la cual detallará paso a paso cómo llevar la consola 3DS (en sus versiones originales, no 'New') del firmware 4.5 a la versión 2.1 para poder extraer la OTP y posteriormente llevar la consola a la versión de sistema 9.2 (compatible con varios entrypoints e indispensable para instalar el a9lh) y la versión de EMUNAND a la 10.6 (la más actual al momento de escribir). También se abordará la compilación del a9lh, la instalación en la consola para finalmente terminar con la consola en versión de sistema 10.6 en modo CFW, con lo que el uso de la EMUNAND ya no será necesario. Los archivos que se anexarán corresponden a los utilizados para consolas de región US.

    Ahh, y antes de que cualquier otra cosa ocurra, aprovecho para aclarar que el objetivo de la guía y el material que se proporcionará, será para que usted, amable lector aprenda el procedimiento y pueda ponerlo en práctica en un objeto de estudio real (consola). Se le suplica a quienes lleven a cabo este proceso que no lo utilicen con el objetivo de fomentar la piratería (la cual daña de forma importante a la industria), sino que lo lleven a cabo como una actividad de aprendizaje.

    El mundo de los videojuegos es muy apasionante no sólo cuando se disfruta de los títulos, sino cuando se estudia y se aprende toda la ingeniería y programación que se emplea para lograr que las plataformas funcionen.

    Estamos en contact!

    ¡Feliz 2021! El retorno del debraye pandémico (Edición "Rompemuros").

    Hola, ¿Cómo han estado? Espero que estén con bien, con buena salud y con muchas ganas de aburrirse una vez más con una ronda de debrayes. Es...