[switch] - Dump/Restauration de la nand juste via un PC sous Windows

 

Notes préventives

Attention: Ce tuto ne peut être suivi sur les Switch équipées de puces SX Core ou SX Lite et il est très déconseillé de le suivre sur les Switch patchées en firmware 4.1.0 ou inférieurs utilisant PegaScape. Pour ces consoles veuillez utiliser la méthode de connection de la nand via Hekate expliquée dans la première partie du tuto.

Introduction

Ce tuto va expliquer comment dumper ou restaurer la nand d'une Switch directement via le PC. L'avantage de faire comme cela est de ne plus être limité par le format de la SD ou sa taille donc cela évite, par exemple, d'avoir des dumps splittés et donc plus facilement utilisable ensuite sur Hekate. Cela peut aussi permettre de modifier un dump splitté plus facilement, d'activer/désactiver l'auto-RCM de la partition BOOT0 immédiatement (ne pas le faire sur les consoles patchées), etc... Cela évite aussi de faire un dump sur la SD pour ensuite le transférer vers le PC se qui au final prend du temps pour rien. Je n'expliquerai pas ici comment passer en RCM ou comment injecter un payload, veuillez consulter la FAQ pour savoir comment faire cela. Pour le tuto de dump via Hekate, voir ce sujet et pour le tuto de restauration de nand via Hekate (même si le départ passe par SX OS la fin passe par Hekate) voir ce sujet.

Prés-requis

  • Une Switch et un câble USB pour pouvoir la relier au PC. Attention, le câble USB doit aussi supporter le transfert de données, certains câbles ne supportent que la charge et ceux-ci ne fonctionneront donc pas.
  • Un PC sous Windows 7 minimum.
  • Le logiciel NxNandManager.
  • Le payload Memloader (si vous ne pouvez pas utiliser la méthode de montage via Hekate expliquée dans la première partie de ce tuto), il est inclue dans TegraRcmGUI ou dans l'Ultimate Switch Hack Script qui contient aussi NxNandManager.
  • Au moins 30 GO d'espace disque à l'endroit où le dump de la Nand sera fait (cas de dump évidemment et cas d'un dump complet, sinon l'espace nécessaire est fonction de se qui doit être dumpé).

1) Explication sur le fonctionnement de Memloader

Note importante: Maintenant une méthode pour connecter une partie de la nand en USB comme le fait Memloader est implémentée dans Hekate et est bien plus rapide qu'en passant par Memloader. Pour se faire il faut donc récupérer Hekate et mettre le dossier "bootloader" que contient l'archive sur la SD, pour ceux sous Windows il faut récupérer le fichier "nyx_usb_max_rate__run_only_once_per_windows_pc.reg" et l'exécuter (à ne faire qu'une seule fois), lancer Hekate puis aller dans "Tools" puis "USB tools". Ici on a donc la possibilité de connecter la SD via USB et de connecter chaque partie de la nand de la sysnand ou de l'emunand via USB (EMMC pour la sysnand, EMUMMC pour l'emunand), de gauche à droite pour chaque type de nand on a se qui est appelé la RAWNAND dans NXNandManager puis BOOT0 et enfin BOOT1. On peut donc cliquer sur la partie que l'on souhaite connecter via l'USB et cela fera comme si on avait lancé Memloader pour monter la partie souhaité, pour fermer la partie montée il suffira de déconnecter le câble USB puis de cliquer sur "Close". Ce payload peut être utilisé pour de multiples choses mais ici je vais juste décrire son utilité pour ce tuto. Comme ce payload est clairement le point central de ce tuto, je ferais souvent référence à cette partie par la suite car je ne vais pas tout réexpliquer à chaque fois. Il va permettre de monter une partie de la nand en tant que périphérique de stockage sur le PC pour que l'on puisse ensuite travailler dessus. Attention: Ne jamais, mais vraiment jamais, essayer de formater le lecteur monté via Memloader, ceci est précisé car Windows le proposera à chaque fois que le lecteur sera monté donc je le redis, ne jamais formater un lecteur monté via Memloader, vous êtes prévenus. Note importante: Pour éteindre la Switch une fois un lecteur monté, il suffit de maintenir le bouton "Power" de la console pendant une dizaine de secondes. Attention, ne jamais éteindre ou débrancher le câble USB de la console tant que des opérations sont en cours sous peine de brick. Dans TegraRcmGUI, ces fonctions se trouvent dans l'onglet "Tools", il faut sélectionner une option puis cliquer sur "Mount". Voici se que font les différentes options:
  • eMMC BOOT0 (DANGEROUS): Monte la partition BOOT0, elle correspond au fichier BOOT0 dumpé via Hekate.[
  • eMMC BOOT1 (DANGEROUS): Monte la partition BOOT1, elle correspond au fichier BOOT1 dumpé via Hekate.
  • eMMC rawNAND (DANGEROUS): Monte la RawNand, elle correspond au fichier "rawnand.bin" dumpé via Hekate. Cette partition est celle qui contient quasiment toutes les données et elle contient aussi différentes partitions mais pour l'instant on ne va pas s'en soucier.
Dans l'Ultimate Switch Hack Script, on peut soit utiliser l'option "Monter la nand, la partition BOOT0, la partition BOOT1 ou la carte SD" du menu des fonctions de bases puis choisir la partition à monter ou alors aller dans "Nand toolbox", "Charger une partie de la nand avec Memloader" et sélectionner la partition à monter (je conseil d'utiliser cette seconde solution pour ce tuto car les autres outils que l'on va utiliser se trouvent dans ce menu). La différence avec TegraRcmGUI est juste que se que j'appelle "nand de la Switch" est appelé "EMMC RawNAND" dans TegraRcmGUI.

2) NxNandManager

On va maintenant parler de ce second protagoniste principal de ce tuto qui est le programme qui va permettre d'effectuer les opérations sur les partitions montées via Memloader (CF partie 1). Ce programme possède deux modes de fonctionnement, soit en mode graphique (appelé mode GUI) qui est le mode par défaut quand on lance l'application via un double-clique sur le fichier principal ou soit en mode console (appelé CLI). Je ne vais pas ici décrire le fonctionnement en mode CLI mais sachez que c'est ce mode très pratique que j'utilise dans mon Ultimate Switch Hack Script. Je ne pense pas avoir besoin de décrire les options qui se trouve dans le menu "Nand toolbox" de mon Ultimate Switch Hack Script, elle sont assez explicite et en français donc ça devrait aller, il faudra juste comprendre la logique que j'expliquerai en partie 3. De plus, les étapes sont bien décrites à chacune d'entre elle, il faut juste prendre le temps de lire. La seul chose à savoir est qu'il faut lancer l'Ultimate Switch Hack Script en tant qu'administrateur (Windows 8 et supérieurs) pour que NxNandManager et donc le script puisse fonctionner correctement mais ceci se fait automatiquement désormais. Par contre, décrivons un peu l'interface graphique de NxNandManager: On a en premier lieu la barre de menu se trouvant en haut du logiciel, quand on ouvre le logiciel on a accès seulement au menu "File" qui contient les options "Open file..." (ouvre un fichier de dump) et "Open drive..." (ouvre la partition montée via Memloader). Une fois que l'on a ouvert soit un fichier ou soit la partition de la console, on a un tableau récapitulant les partitions contenu dans le fichier/périphérique chargé. En faisant un clique droit sur un des éléments du tableau, on peut soit dumper l'élément vers un fichier ("Dump to file...") ou soit restaurer l'élément via un fichier de dump déjà effectué au préalable ("Restore from file..."). On s’aperçoit également que le menu "Tools" de la barre de menu est maintenant accessible, il contient les options "Full dump" (dump l'ensemble des partitions du dump chargé), "Full restore" (restaure la nand chargée via un fichier de dump effectuée au préalable) et possiblement d'autres options selon le type de dump/nand chargée, voir ci-après. Si on charge une partition BOOT0, le menu "Tools" contiendra l'option "Disable autoRCM" ou "Enable autoRCM" permettant respectivement de désactiver l'auto-RCM ou de l'activer. Il est à noter que les libellé pour dumper ou restaurer la partition sont un peu différent que quand on charge un fichier "rawnand.bin", ils deviennent respectivement "Dump" et "Restore" (ceci est également valable pour la partition BOOT1). Note: Les options du menu "Tools" sont aussi accessibles via des boutons directement intégrés à l'interface graphique.

3) Logique de fonctionnement

En réalité, elle est assez simple. Pour l'imager, je vais dire que je veux sauvegarder le dump d'une de mes consoles puis le restaurer ensuite. Voici donc se qu'il faut faire pour le dump, expliquer pour le mode GUI de NxNandManager:
  • Charger la partition "BOOT0" via Memloader (CF partie 1).
  • Sélectionner la console via le menu "File" puis "Open drive..." (elle sera nommé "\\.\PhysicalDriveX" ou "X" est un numéro).
  • Aller dans "Tools" puis "Dump", aller dans le dossier dans lequel le dump doit être sauvegarder et nommer le fichier. Je conseil de nommer ce fichier "BOOT0" pour des raisons de compatibilité avec Hekate.
  • Valider le choix et attendre la fin du processus. Une fois terminé, on peut éteindre la Switch.
  • Charger la partition "BOOT1" via Memloader (CF partie 1).
  • Sélectionner la console via le menu "File" puis "Open drive..." (elle sera nommé "\\.\PhysicalDriveX" ou "X" est un numéro).
  • Aller dans "Tools" puis "Dump", aller dans le dossier dans lequel le dump doit être sauvegarder et nommer le fichier. Je conseil de nommer ce fichier "BOOT1" pour des raisons de compatibilité avec Hekate.
  • Valider le choix et attendre la fin du processus. Une fois terminé, on peut éteindre la Switch.
  • Charger la partition "Rawnand" via Memloader (CF partie 1).
  • Sélectionner la console via le menu "File" puis "Open drive..." (elle sera nommé "\\.\PhysicalDriveX" ou "X" est un numéro).
  • Aller dans "Tools" puis "Full dump", aller dans le dossier dans lequel le dump doit être sauvegarder et nommer le fichier. Je conseil de nommer ce fichier "rawnand.bin" pour des raisons de compatibilité avec Hekate.
  • Valider le choix et attendre la fin du processus, celui-ci peut durer assez longtemps selon le matériel. Une fois terminé, on peut éteindre la Switch.
Maintenant, pour la restauration, c'est très simple, il suffit de reproduire les mêmes étapes que décrite juste au-dessus mais on utilise l'option "Restaure" à la place de l'option "Dump" ("Full restore" à la place de "Full dump" pour la partie rawnand). Note: Pour le cas de la partition BOOT0, il sera possible de désactiver ou d'activer l'auto-RCM de celle-ci lorsqu'elle sera chargée dans NxNandManager, soit avant le dump ou soit après la restauration, CF la partie 2 pour l'explication de l'utilisation de cette fonctionnalité. Note 2: Pour utiliser un dump splitté (découpé en plusieurs parties, par exemple le dump fait via SX OS ou un dump fait par Hekate sur une SD formatée en FAT32) pour la restauration, il suffit d'indiquer au logiciel le premier fichier du dump splitté et il faudra aussi que le reste du dump se trouve dans le même dossier que le fichier indiqué. Pour charger un fichier de dump splitté dans le logiciel pour pouvoir éventuellement le modifier, les règles sont exactement les mêmes. Pour une utilisation via mon script la logique est la même, charger la partition sur laquelle on souhaite travailler, effectuer l'opération ou les opérations souhaitées puis éteindre la console et recommencer pour la partition suivante.

4) Aller plus loin

En fait, NxNandManager permet d'aller bien plus loin que cela. Par exemple, il peut activer/désactiver l'auto-RCM de la partition BOOT0 chargée, il peut extraire une partition d'un dump déjà effectué, restaurer une partition spécifique de la Rawnand, par exemple on pourrait vouloir restaurer la partition PRODINFO de la Rawnand après l'utilisation du homebrew Incognito. Alors oui, on pourrait restaurer toute la rawnand mais bon c'est d'une part beaucoup plus long et de deux cela oblige à revenir dans un état antérieur sur beaucoup de chose alors qu'on peut faire autrement. On peut aussi travailler sur un fichier de dump d'une des trois partie de la nand, par exemple pour désactiver l'auto-RCM d'un fichier de dump du BOOT0 avant sa restauration sur le périphérique. on peut aussi remplacer une partition d'un fichier de dump de la rawnand, par exemple pour préparer quelque chose de spécifique avant la restauration sur le périphérique mais ceci ne sera utilisé que dans des cas très particulier, en général la partie 3 devrait être suffisante pour la plupart des utilisateurs pour faire les opérations souhaitées. Si vous souhaitez en savoir plus et que vous n'êtes pas anglophobe, je vous invite à lire le readme du Github de NxNandManager, tout y est décrit. Il faut également savoir que mon Ultimate Switch Hack Script est capable d'exploiter pleinement les fonctionnalités de NxNandManager, que se soit les fonctions plus basiques ou les fonctions plus avancées.

5) Remerciements

Un grand merci à @eliboa qui a vraiment travaillé dur sur ce projet de NxNandManager et je le remercie d'autant plus d'avoir intégré un mode CLI qui m'a permis d'intégrer ensuite très simplement toutes les fonctionnalités de ce logiciel à mon Ultimate Switch Hack Script, le rendant encore plus complet qu'il ne l'est déjà. Merci à lui également pour TegraRcmGUI qui est clairement une des références de lanceur de payloads sur la scène Switch, je crois qu'avec çà tout est dit. Je remercie également tous les autres acteurs de la scène open-sources Switch sans qui bien évidemment tout ceci ne serait pas possible, ils sont bien trop nombreux pour être tous cités à chaque fois mais le respect est là.