Lancer Linux sur switch (+ sauvegarder et decrypter sa NAND)
EDIT 14/11/2018 : ce tuto est en partie obsolète. Pour faire une sauvegarde de votre NAND, voir ce tuto
EDIT 06/05 : La V4 du tuto est dispo, lancez facilement Linux (en français) depuis un PC Windows
Ce tutoriel vous permettra d'installer linux sur votre Switch mais vous pourrez aussi faire un backup de votre NAND (pour la mettre de côté en cas de problème ou bien pour la décrypter et y faire vos petites affaires ;-)).
Vous pouvez utiliser ce tutoriel pour simplement installer linux (dans ce cas, une carte SD de 16 ou 32GB devrait convenir).
Tous les crédits reviennent à :
- La team fail0verfl0w pour l'exploit ShofEL2
- Kate Temkin et la team (re)switched pour la découverte de l'exploit bootROM et le launcher "fusée gelée"
- rajasto pour le lanceur windows TegraRcmSmash, le payload biskeydumper et pour le programme HacDiskMount
- merci à @kombos pour la première distribution Arch Linux utilisée dans ce tuto.
- merci à @shadow256 pour la méthode qui permet de lancer l'exploit shofel2 depuis windows.
Cette méthode a été éprouvée plusieurs fois et par plusieurs personnes, si vous suivez bien chaque étape vous ne devriez pas rencontrer de problème majeur. Cependant, je ne serai en aucun cas responsable des dégâts que vous pourriez infliger à votre console en suivant ce tuto.
Il a été signalé que tout mauvais software installé sur la console peut influer sur le voltage dans la machine et peut théoriquement cramer certains composants. Faites donc très attention à ce que vous installez. La distribution Linux fournie ici est là même que celle utilisée par fail0verflow.
Voir aussi :
[TUTO] Comment lancer un payload via fusée gelée depuis Windows
Révisions :
08/05/2018 :
Ajout d'une nouvelle version de l'image Linux pour carte SD > 64 GB permettant de flasher la carte SD et dumper la NAND sans avoir à redimensionner sa partition.
06/05/2018 :
Nouvelle version du tuto ! (V4) :
Ajout de la méthode pour lancer Linux depuis un PC Windows / Nouvelle image Arch Linux en français / Nouvelle photos mode RCM / Simplification du paramétrage wifi (cette fois-ci on peut pas faire plus simple).
02/05/2018 :
Nouvelle version du tuto ! (V3) :
Paramétrage simplifié de la connexion wifi / Plus besoin de rebooter linux manuellement, tout est transparent / Affichage de l'adresse IP locale WIFi au démarrage de Linux pour pouvoir se connecter plus facilement en SSH / Ajout d'explication sur l'installation d'une VM Linux sur Windows / Ajout d'une étape pour préparer son environnement linux avant lancement de l'exploit.
Pré-requis matériels :
-
Nintendo Switch, quelque soit le firmware (à la date du 06/05/2018 personne n'a encore rapporté avoir acheté une switch avec SoC T214 "Mariko" donc logiquement toutes les switch sont compatibles à ce jour)
-
Un PC avec Windows ou Linux
-
Ce PC doit disposer d'un port USB3 (prise bleue) ou d'un port USB2 compatible XHCI (si vous êtes sous Linux, dans ce cas il faudra recompiler votre kernel avec ce patch)
-
Un câble USB type A vers USB type C (comme celui livré avec le controller pro)
-
Une carte micro SD de 16GB minium (64GB minimum pour dumper la NAND)
-
Un trombone, un fil électrique, un bout de métal, un tournevis ou tout objet métallique permettant de court-circuiter la switch et démarrer en mode RCM
Pré-requis logiciels:
Téléchargez ces fichiers avant de commencer le tutoriel :
-
LXDE (environnement Linux) - 3Go : deux version possibles : pour carte SD de - de 64GB ou pour + de 64GB (prenez la seconde version si vous voulez dumper votre NAND)
-
Etcher (pour flasher LXDE sur la carte SD) https://etcher.io
-
Winrar pour décompresser l'archive
Si vous souhaitez faire un dump de votre NAND, téléchargez également :
-
Un client SSH (MobaXterm ou Putty si vous êtes sous Windows)
-
devkitproARM (uniquement si vous souhaitez décrypter la NAND)
Etape 1 : Flasher la carte SD avec l’image LXDE
Montez la carte SD. Installez et lancez Etcher.
Extraire l'archive arch_lxde_switch_fr.rar précédemment téléchargée.
D’abord il faut indiquer l’emplacement du fichier arch_lxde_switch_fr.img ou arch_lxde_switch_fr_full.img (contrairement à la photo ci dessus) puis sélectionner votre carte SD (vérifiez bien qu’il s’agit de la bonne carte SD, regardez la lettre attribuée et la taille du disque).
Ensuite cliquez sur “Flash” pour flasher votre carte SD (ce qui va permettre à votre Switch de booter sur linux au démarrage).
Laissez Etcher travailler et passez à l'étape suivante.
Etape 2 : Préparer l'environnement Windows/Linux
Sur un environnement Windows :
Téléchargez Zadig Driver Installer => https://zadig.akeo.ie/.
!!! Attention !!!! Avant de lancer l’exécutable, vous devez connecter votre Switch à votre PC en mode RCM => faire l'étape 5 de ce tuto, puis revenir à cette étape.
Une fois votre switch en mode RCM, lancez l’exécutable.
Dans la liste des périphériques choisissez APX et dans Driver sélectionnez "libusbK (v3.0.7.0)".
Cliquez sur "Install driver"
Sur un environnement Linux :
Dans un terminal, exécutez :
$ sudo bash
Puis lancez ces trois commandes pour installer pyton3, pyusb et autres dépendances :
$ apt-get install git build-essential python3 python3-setuptools libusb-1.0-0-dev gparted $ git clone https://github.com/walac/pyusb $ cd pyusb && sudo python3 setup.py install
.
Etape 3 : Paramétrer sa connexion Wi-Fi
Attendez qu"Etcher ait terminé de flasher votre carte SD avant de commencer cette étape.
Vous disposez désormais d’un carte SD “bootable” qui va lancer un environnement linux préalablement compilé pour la switch (ARM) avec tous les configs nécessaires (drivers, fonctions tactiles, bluetooth, wifi, etc).
Afin de vous éviter des manipulations une fois linux lancé sur la switch nous allons d’abord configurer les paramètres de connexion à votre routeur, box ou point d’accès.
Montez votre carte SD. Vous devriez voir deux partitions avec deux filesystem différents. Dans la partition en FAT32 nommée "SWITCH", vous devriez voir un fichier nommé wifi_config.txt :
Éditez ce fichier et remplacez les paramètres SSID et PWD par votre SSID (nom) de votre point d'accès/router et votre mot de passe wifi. Par ex :
Etape 4 : Lancer l'exploit
Sur un environnement Windows :
Dans l'archive téléchargée en début de tuto, vous trouverez un dossier shofel nommé "shofel2_win".
Dans ce dossier, double-cliquez sur shofel2_win.bat.
Vous devriez voir apparaître ceci :
********************************************* *** CONNECTEZ LA SWITCH EN MODE RCM *** ********************************************* 1) Connecter la Switch en USB et l'eteindre 2) Appliquer le JoyCon Haxx : PIN1 + PIN10 ou PIN9 + PIN10 3) Faire un appui long sur VOLUME UP + appui court sur POWER TegraRcmSmash (32bit) 1.1.0-1 by rajkosto Wanted device not connected yet, waiting... Looking for devices matching the pattern *VID_0955&PID_7321*
Passez à l'étape 5.
Sur un environnement Linux :
Dans l'archive téléchargée en début de tuto, vous trouverez un dossier shofel nommé "shofel2_lxde" (ou shofel2 tout court pour la version + de 64 GB).
Ouvrez un terminal et placez vous dans ce dossier, puis :
$ ./boot_linux.sh wifi
NB : l'option "wifi" lance linux 2 fois (en raison d'un bug expliqué par fail0verfl0w, linux doit rebooté pour que le wifi fonctionne) mais vous pouvez lancer l'exploit une seule fois sans cette option
Vous devriez vous apparaître ceci :
******************************************** *** CONNECTEZ LA SWITCH EN MODE RCM *** ******************************************** 1) Connecter la Switch en USB et l'éteindre 2) Appliquer le JoyCon Haxx => PIN1 + PIN10 ou PIN9 + PIN10 3) Faire un appui long sur VOLUME UP + appui court sur POWER -=-=--=--=--=-=-=-=-=--=-=-=-=-=-=-=-=--=-=- En attente de NVidia APX (Switch en mode RCM ). -=-=--=--=--=-=-=-=-=--=-=-=-=-=-=-=-=--=-=-
Passez à l'étape 5.
Etape 5 : Allumer la switch en mode RCM
Suivez ce tuto pour démarrer la Switch en mode RCM
Branchez la Switch (mode RCM) au PC via le câble USB.
Etape 6 : Lancement de linux
Une fois votre switch connectée en mode RCM, vous allez voir du texte défiler dans le terminal. L'exploit bootROM est en train d'être chargé.
Si tout se passe bien vous devriez voir apparaître :
********************************************* *** ATTENDEZ QUE LA SWITCH REDEMARRE *** *********************************************
Et là vous allez me dire.... j'attends que la switch redémarre
En attendant, vous devriez voir le kernel se lancer sur la switch
Si vous NE VOYEZ PAS le kernel se lancer, vous avez un problème avec l'exploit, vérifiez que vous êtes bien en mode RCM et vérifiez votre configuration USB (USB 3.0 avec pyusb, libusb et setuptools installés si vous êtes sous Linux).
Si vous VOYEZ le kernel se lancer mais que vous êtes BLOQUES avec des messages d'erreur, vous avez sans doute un problème avec votre carte SD (vérifiez la présence des deux partitions FAT32 + EXT4, faites un fsck ou au pire essayez avec une autre carte SD, certaines ne passent pas).
J'ai programmé Linux pour qu'il redémarre une fois avant de se lancer en raison d'un contrainte (au niveau de l'exploit lui même) qui empêche le wifi de se lancer au premier boot.
Après reboot, si vous avez bien paramétré votre connexion wifi, vous devriez voir apparaître votre adresse IP locale au démarrage de l'environnement graphique (LXDE) :
Bravo, vous venez de lancer Linux sur votre Nintendo Switch
Lorsque vous souhaiterez le relancer, il vous "suffira" de passer votre switch en mode RCM et de lancer l'exploit (étapes 4 et 5i).
Pour éteindre votre console, vous n'aurez pas d'autre choix qu'un bon gros "hard reset" en restant appuyé environ 6 secondes sur le bouton Power.
L'IP qui s'affiche au démarrage vous permet de vous connecter à votre Switch en SSH, depuis votre PC (voir étape 8).
En cas de problème sur Linux :
Après avoir lancé "boot_linux.sh wifi" devriez voir apparaître :
loading binary file(image/switch.scr.img) to 8e000000, skip=0, fsize=162 type=aa <<<354, 1024 bytes>>> succeeded (status 0x88888888) jumping to 0x8e000000Done. You should see kernel booting on switch soon
Si vous ne voyez pas ces lignes, vous pourriez avoir un problème avec votre connexion USB (driver/ controlleur), python3 ou pyusb.
Si vous avez un problème avec python, remplacez la ligne suivante du fichier boot_linux.sh :
./shofel2.py coreboot/cbfs.bin coreboot/coreboot.rom
par :
python3 ./shofel2.py coreboot/cbfs.bin coreboot/coreboot.rom
.
Etape 7 : Connexion SSH du PC vers la Switch
Sur votre PC, lancez un client SSH (ici putty) et configurez une nouvelle connexion SSH vers l'IP qui vient s'afficher sur la switch (port 22) :
PS : Les IP dans mes images d'illustration sont différentes, n'en tenez pas compte
Les login et mot de passe sont “alarm” et “alarm”.
Lancez le bash en root :
$ sudo bash
Vous êtes maintenant connecté à votre environnement linux Switch depuis votre PC, nous allons pouvoir backuper la NAND facilement.
Etape 8 : Backup de la NAND
Sur la console (via SSH), tapez :
$ ./nand_dump.sh
Le dump se lance, vous devriez voir ça sur le terminal :
_ _ _ _ _ __ __ _ _ _ _ ___ | \| |/ \| \| | \ | \| | | \_/ | o \ | \\ | o | \\ | o ) | o | U | \_/ | _/ |_|\_|_n_|_|\_|__/ |__/|___|_| |_|_| dcfldd installation resolving dependencies... looking for conflicting packages... Packages (1) dcfldd-1.3.4.1-5 Total Download Size: 0.03 MiB Total Installed Size: 0.10 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... dcfldd-1.3.4.1-5-aa... 31.5 KiB 242K/s 00:00 [######################] 100% (1/1) checking keys in keyring [######################] 100% (1/1) checking package integrity [######################] 100% (1/1) loading package files [######################] 100% (1/1) checking for file conflicts [######################] 100% (1/1) checking available disk space [######################] 100% :: Processing package changes... (1/1) installing dcfldd [######################] 100% :: Running post-transaction hooks... (1/1) Arming ConditionNeedsUpdate... => BOOT 0 PARTITION DUMP 128+0 records in 128+0 records out dumped in nand_boot0_dump.bin => BOOT 1 PARTITION DUMP 128+0 records in 128+0 records out dumped in nand_boot1_dump.bin => TSEC FW EXTRACTION (FOR BIS KEY DUMPER) Extracting from offset : 0x00101900 3840 blocks (0Mb) written. 3840+0 records in 3840+0 records out => USER PARTITIONS DUMP This may take a while... 954112 blocks (29816Mb) written. 954240+0 records in 954240+0 records out 1303+1055125 records in 528865+1 records out dumped in nand.bin.gz YOUR NAND IS FULLY DUMPED !
Patientez-bien jusqu'au bout, votre dump peut faire jusqu'a 30GB. ce qui peut prendre du temps (ça dépend de la vitesse d’écriture de votre SD). Comptez entre 15 et 60 min approx.
Le script va générer les fichiers de dump sous /home/alarm.
Une fois que tout est terminé, je vous conseille de générer des clés checksum md5 pour chacune des partitions afin de vous assurer que votre backup est strictement identique à votre NAND.
Cette opération risque de prendre pas mal de temps selon la taille de votre NAND mais je vous le conseille fortement.
$ md5sum /dev/mmcblk1boot0 > nand_boot0_dump.bin.md5 $ md5sum /dev/mmcblk1boot1 > nand_boot1_dump.bin.md5 $ md5sum /dev/mmcblk1 > nand.bin.md5
Vous devrez effectuer un md5sum sur chacun des 3 fichiers nand*.bin une fois rapatriés (et/ou dezippés) sur votre PC (étape 7) et comparer les valeurs retournées avec les clés contenues dans les fichiers *.md5 idoines.
Si les checksum correspondent c’est tout bon !
Edit 12/05 : étant donné que le script nand_dump.sh compresse l'archive de la partition USER, il faut vérifier le checksum md5 une fois le fichier décompressé !
Etape 9 : Récupérer le dump
Eteignez la switch et éjectez la carte SD puis montez là sur un environnement linux et récupérer les trois binaires présents sous /home/alarm/.
Sur un environnement Windows, vous pouvez montez la partition ext4 en téléchargeant ext2fsd : https://sourceforge....ojects/ext2fsd/
Vous pouvez également récupérer les fichiers via wifi si votre dump n'occupe pas trop de place (via SD c'est plus rapide).
Sauvegardez précieusement ces fichiers. Ça y est votre NAND est dumpée ^^ !!!!
Etape 10 : Obtenir les BIS Keys
Vous avez sauvegardé votre NAND mais celle-ci est complètement chiffrée et illisible donc à peu près inexploitable.
Pour la déchiffrer il nous faut récupérer les clés permettant de décrypter le contenu, ce sont les BIS Keys.
Cette partie du tuto est un peu plus technique et n’a d’intérêt que si vous savez quoi faire de votre NAND une fois déchiffrée. Vous devez savoir compiler des sources dans un environnement linux (c'est pas très compliqué).
Le développeur @rajasto à développé un payload “biskeydump” permettant d’extraire les BIS keys.
Je ne communiquerai ici aucune clé, je vous indique simplement la méthode pour le faire. Vous ne devez pas partagez vos clés publiquement ni le contenu de votre dump. Je vous rappelle qu'il contient des données non "libres" appartenant à NVIDIA et Nintendo.
Sur votre console (PC linux), téléchargez les sources de biskeydump :
$ git clone https://github.com/rajkosto/biskeydump
Remplacez le fichier biskeydump/src/hwinit/tsecfw.inl par celui que vous avez récupéré avec vos fichiers de dump. (edit 30/04 : visiblement cette étape n'est plus nécessaire)
Maintenant nous allons générer le payload. Vous devez avoir devkitARM installé sur votre environnement linux (je pars du principe que vous savez le faire, sinon => https://gbatemp.net/threads/tutorial-how-to-make-custom-fusee-payloads.502138/ ).
Faites un “make” dans le répertoire /biskeydump. Le payload est généré sous /biskeydump/out/biskeydump.bin.
Clonez le repo de fusee launcher :
$ git clone https://github.com/reswitched/fusee-launcher $ cd fusee-laucher
Connectez votre switch au PC via USB, et bootez en mode RCM (cf. étape 4) puis :
$ python3 ./fusee-launcher.py biskeydump.bin
Vous devriez voir ceci sur la console :
Important note: on desktop Linux systems, we currently require an XHCI host controller. A good way to ensure you're likely using an XHCI backend is to plug your device into a blue 'USB 3' port. Identified a Linux system; setting up the appropriate backend. Found a Tegra with Device ID: b'\xc0\x81\x00\x10\x00\x00\x00\x14\xc6\x07-d\x01\x10\x10b' Setting ourselves up to smash the stack... Uploading payload... Smashing the stack... The USB device stopped responding-- sure smells like we've smashed its stack. Launch complete!
Et ceci sur la switch :
Et voilà vous avez vos BIS keys, vous pouvez flasher le flashcode pour vous les envoyer par mail ou autre.
Etape 12 : Décrypter la NAND
Téléchargez et installez HacDiskMount (pour windows) => https://switchtools.sshnuke.net/
Ouvrez SwitchNAND_dump.bin et utilisez les clés obtenues pour décrypter et monter/extraire les partitions de la NAND :
Modifié par eliboa, 14 novembre 2018 - 10:06.