Hacker une Switch avec Hekate et Atmosphère

Le présent tutorial a pour but de vous expliquer comment hacker une Switch, par la création et le lancement d’une emuMMC avec Atmosphère. Cette méthode a l’avantage d’isoler la sysNAND du hack, pour lui garder sa virginité et permettre une utilisation « officielle » (en ligne). Ainsi, tout ce qui sera installé en emuMMC ne transpirera pas sur la sysMMC. Et contrairement à ce qu’on pourrait croire, le démarrage de l’emuMMC est aussi rapide qu’avec la sysMMC interne !

Si vous ne souhaitez pas utiliser d’emuMMC (par choix, commodité ou parce que ça n’en vaut pas la peine, exemple : console déjà bannie), vous pouvez simplement ignorer le chapitre 2 du présent tutorial.

La création et configuration de l’emuMMC se fait depuis l’excellent payload Hekate, accompagné de sa magnifique interface graphique « Nyx ». Il est fortement recommandé d’utiliser la méthode de stockage dite « fichier », qui vous évite de re-partitionner votre microSD (sans compter que certains OS, Windows notamment, ont horreur des partitions multiples sur ce type de média de stockage). Si vous souhaitez néanmoins utiliser la méthode « partition », gardez le strict minimum sur votre microSD. En effet, ce processus nécessite de faire une sauvegarde préalable des fichiers, limitée à 1Go, qui prend du temps supplémentaire ! L’idéal est donc d’avoir Hekate, Atmosphère, et rien d’autre !

Attention : Ce tutorial part du postulat que vous savez déjà démarrer votre console en mode RCM. Si tel n’est pas le cas, veuillez consulter le tutorial sur Atmosphère, ou bien encore celui sur le RCMLoader.

0/ Pré-requis :

La dernière version de Hekate (accompagné de Nyx) :

 

La dernière version du custom firmware Atmosphère :

 

Les derniers sigpatches compatibles :

 

Une carte microSD de 64Go (minimum recommandé) préalablement formatée en FAT32 (*)

(*) Windows étant volontairement limité, il ne vous proposera pas l’option FAT32 si la microSD dépasse une certaine taille (de mémoire, c’est à partir de 32Go). Vous pouvez contourner cette limitation arbitraire et totalement inexplicable avec l’excellent utilitaire GUI FAT32 Format (qui est léger et ne nécessite aucune installation pour faire correctement le boulot)

 


1/ Préparation :

Mettre le payload hekate_ctcaer_x.x.x.bin, renommé payload.bin, sur le média qui vous servira à démarrer la console :

  • sur un dongle RCMLoader : placé dans un des dossiers prédéfinis de votre choix (ATMOSPHERE_HEKATE en principe)
  • avec un dongle SX PRO, au choix :
    • à la racine de votre microSD : boot.dat du payload Hekate préalablement converti à l’aide de ce script python
      OU
    • à la racine de votre microSD : avec SX Gear décompressé également à la racine de la microSD
  • sur un téléphone Android avec l’application Rekado
  • sur Windows avec le logiciel TegraRCMGUI
  • à la racine de votre microSD si vous êtes équipés d’une puce type trinket m0, HWFLY ou SX  reflashée avec spacecracft-nx
    • avec une puce SX non convertie, obligation d’utiliser payload.bin conjointement avec SX Gear à décompresser également à la racine de la microSD

Puis décompresser telles quelles à la racine de votre microSD formatée préalablement en FAT32 les archives des dernières versions de :

  1. Atmosphère
  2. Hekate
  3. sigpatches

Vérifier que vous avez bien obtenu, au minimum, les dossiers bootloader et atmosphere à la racine de votre microSD.

 

2/ Création de l’emuMMC :

Lancer le payload hekate par le moyen de votre choix (RCMLoader, Rekado, TegraRCMGUI, etc.) et aller dans le menu emuMMC :

 

Choisir Create emuMMC :

 

Le gestionnaire va vous proposer de passer en mode fichier (SD File) ou partition (SD Partition). Nous allons privilégier le mode fichier par commodité :

 

En mode fichier, le processus démarre immédiatement. Votre sysMMC va être copiée dans votre emuMMC qui sera stockée dans le dossier emuMMC de votre microSD. À titre d’information, avec une mémoire bien remplie, le processus de copie prend environ 25 minutes :

 

L’emuMMC est désormais créée et pleinement fonctionnelle ! Son statut est donc passé à « Enabled! » en vert et un résumé des paramètres est rappelé juste en dessous :

 

↓ Alternative avec une partition dédiée (cliquer pour voir) ↓

L’alternative, SD partition, consiste à re-partitionner votre microSD pour y intégrer une partition cachée de 30Go.

 

Aucune partition dédiée n’étant trouvée, on vous propose d’en créer une. Faire Continue :

 

Une liste des fichiers trouvés sur la microSD est établie, la taille de l’ensemble ne doit pas excéder 1Go pour être sauvegardés automatiquement. Faire OK :

 

Dans le gestionnaire de partition, la taille de l’emuMMC (RAW), en rouge, est pour l’instant de 0GiB. Tout à fait normal puisque rien n’a encore été re-partitionné :

 

Réglez la taille de votre emuMMC comme bon vous semble. La logique voudrait que celle-ci soit de 29Go (comme ci-dessous) pour correspondre exactement à la taille réelle de la sysNAND, mais ce n’est absolument pas obligatoire. Il n’y a de toute façon aucune vérification de la taille de la NAND par le firmware. Comme les jeux seront dans tous les cas lancés depuis la microSD, une emuMMC trop large serait totalement inutile. Cliquer sur Next Step une fois que vous avez défini la taille de partition souhaitée :

 

Dernière possibilité pour annuler ou modifier les paramètres. Appuyer sur Start pour lancer le partitionnement :

 

Après avoir sauvegardé les fichiers, Hekate repartitionne la microSD selon vos paramètres, et vous indique une fois le processus terminé. Faire OK :

 

Vous avez désormais une seconde partition sur votre microSD, mais celle-ci est encore vide ! D’où le statut « Disabled! » en orange. Cliquer à nouveau sur Create emuMMC :

 

Cette fois-ci, une partition supplémentaire est détectée et vous propose une nouvelle option. Cliquer sur Part 1 :

 

Votre sysMMC va être copiée dans votre emuMMC. À titre d’information, avec une mémoire bien remplie, le processus de copie prend environ 25 minutes :

 

L’emuMMC est désormais créée et pleinement fonctionnelle ! Son statut est donc passé à « Enabled! » en vert et un résumé des paramètres est rappelé juste en dessous :

 

 

 

Un fichier emummc.ini, contenant les paramètres, a été créé par Hekate, dans le dossier emuMMC. Vous constaterez que le dossier Nintendo, à l’origine à la racine de la microSD, est ici paramétré dans emuMMC/RAW1/ ou emuMMC/SD01, afin de ne pas marcher sur les pieds de la sysNAND et provoquer des mélanges douteux.

sd:/emummc/emummc.ini

mode Fichier

[emummc]
enabled=1
sector=0x0
path=emuMMC/SD01
id=0x0000
nintendo_path=emuMMC/SD01/Nintendo

 

mode Partition

[emummc]
enabled=1
sector=0x38c7800
path=emuMMC/RAW1
id=0x0000
nintendo_path=emuMMC/RAW1/Nintendo

 

Si vous prenez des captures d’écran ou vidéo, c’est ici qu’il faudra se rendre pour les y retrouver.

3/ Configuration de Hekate :

Il va désormais falloir paramétrer Hekate pour qu’il vous offre un menu de démarrage, depuis lequel vous pourrez lancer, par exemple (choix personnels) :

  1. Atmosphère en mode sysNAND
  2. Atmosphère en mode emuMMC
  3. SXOS
  4. Le firmware officiel

 

Vous pouvez télécharger un exemple de fichier INI en suivant ce lien. Une fois sur la page, cliquez-droit sur le bouton « Raw » et faites « Enregistrer le lien sous… »

 

Renommez de suite le fichier téléchargé « hekate_ipl_template.ini » en « hekate_ipl.ini » et copier-le dans le dossier bootloader présent à la racine de votre microSD. Ouvrez-le avec votre éditeur texte préféré (notepad++ fortement recommandé, même si bloc-notes fonctionne aussi), et modifiez-le comme suit (vous pouvez tout supprimer du fichier, puis copier/coller la configuration ci-dessous) :

rappel ! chemin du fichier → sd:/bootloader/hekate_ipl.ini

[config]
autoboot=0
autoboot_list=0
bootwait=0
verification=1
backlight=100
autohosoff=0
autonogc=0
updater2p=1

[Atmosphere]
fss0=atmosphere/package3
kip1patch=nosigchk
emummc_force_disable=1

[Atmosphere_emummc]
fss0=atmosphere/package3
kip1patch=nosigchk
emummcforce=1

[Original]
fss0=atmosphere/package3
stock=1
emummc_force_disable=1

Vous obtiendrez ce menu de lancement, en cliquant sur Launch :

Bon à savoir : la ligne « autoboot= » permet de démarrer automatiquement l’option de son choix. Dans l’exemple ci-dessus, si vous mettez autoboot=2, Hekate démarrera automatiquement la 2ème entrée du menu, à savoir Atmosphere_emummc. L’autoboot est désactivable temporairement en maintenant Volume-, si vous souhaitez entrer sur Hekate 😉

 

Évidemment, si seule l’emuMMC vous intéresse, ainsi que la possibilité de démarrer sans aucun hack (sur la sysMMC), vous pourriez aussi vous contenter de ce fichier INI plus light :

rappel ! chemin du fichier → sd:/bootloader/hekate_ipl.ini

[config]
autoboot=0
autoboot_list=0
bootwait=0
verification=1
backlight=100
autohosoff=0
autonogc=0
updater2p=1

[Atmosphere_emummc]
fss0=atmosphere/package3
kip1patch=nosigchk
emummcforce=1

[Original]
fss0=atmosphere/package3
stock=1
emummc_force_disable=1

 

Voilà, vous avez désormais une emuMMC prête à l’utilisation. Bon jeu ! Étant donné que je chainload Atmosphère depuis Hekate, ce tutoriel aborde le lancement de l’emuMMC par ce biais. Libre à vous de l’adapter en fonction de vos propres besoins (Atmosphère peut logiquement gérer cela tout seul, comme un grand).

 

4/ Options supplémentaires :

si vous souhaitez vous protéger au maximum d’un possible ban de votre console (qui toucherait aussi bien la sysMMC officielle que l’emuMMC hackée), il est recommandé de procéder à deux réglages essentiels :

  1. masquer les données propres à votre console (prodinfo)
  2. utiliser des DNS alternatifs bloquant la connexion aux serveurs de Nintendo

 

4.1 Masquer votre PRODINFO

PRODINFO est la partition contenant les informations propres à votre console, dont le certificat, signé, qui autorise la connexion aux serveurs Nintendo. Le fait de masquer PRODINFO est une mesure de protection contre le ban sur console hackée. Si celle-ci est déjà bannie, que votre système a été reconstruit à partir d’une NAND donneuse ou que vous avez utilisé Incognito par le passé (qui supprime PRODINFO), vous n’êtes pas concerné par cette option puisque votre console est déjà interdite sur le online de Nintendo.

 

ATTENTION : depuis l’arrivée du firmware 17.0.0, il est IMPÉRATIF d’utiliser le masquage de PRODINFO conjointement à la redirection DNS via 90DNS (§4.2) OU par la fonction native d’Atmosphère (§4.3)(recommandé). Si vous ne bloquez pas les serveurs de Nintendo, toute tentative de connexion WIFI se soldera par un crash complet du Custom Firmware. Vous êtes prévenus ! Nintendo semble montrer un peu plus les crocs envers les consoles hackées. Cette mesure s’applique également si vous avez reconstruit votre sysMMC/emuMMC avec une NAND donneuse ou que votre PRODINFO est corrompu ou effacé (avec Incognito par exemple). Sachez enfin qu’aucun correctif ne pourra être apporté à Atmosphère. It’s not a bug, it’s a feature !

 

Sachez qu’Atmosphère dispose d’une option native pour masquer en temps réel les données spécifiques à votre console (partition prodinfo), rendant le bannissement plus compliqué. Par défaut, cette option n’est malheureusement PAS active, on va donc corriger cela. Tout se passe dans le fichier exosphere.ini, qui se trouve à la racine de votre microSD (si vous avez déjà démarré Atmosphère au moins une fois). Si vous n’avez pas ce fichier, rendez-vous dans atmosphere\config_template, copiez exosphere.ini et collez-le à la racine de votre microSD.

Editez le fichier exosphere.ini avec l’éditeur de texte de votre choix (notepad++ fortement recommandé ! mais bloc-notes fera aussi l’affaire), vous devriez avoir ceci (tout en bas du fichier) :

[exosphere]
debugmode=1
debugmode_user=0
disable_user_exception_handlers=0
enable_user_pmu_access=0
blank_prodinfo_sysmmc=0
blank_prodinfo_emummc=0
allow_writing_to_cal_sysmmc=0

Ciblez la ligne « blank_prodinfo_emummc » et remplacez la valeur 0 par 1. Vous obtiendrez donc :

[exosphere]
debugmode=1
debugmode_user=0
disable_user_exception_handlers=0
enable_user_pmu_access=0
blank_prodinfo_sysmmc=0
blank_prodinfo_emummc=1
allow_writing_to_cal_sysmmc=0

Sauvegardez les modifications. Bravo, désormais, Atmosphère masquera les informations personnelles de votre console. Vous pouvez vérifier cela dans les Paramètres de la console → Console → Numéros de série. Si tout est bon, le numéro de série de la console doit être remplacé par « XAW00000000000 »

Nota : Cette méthode est bien moins dangereuse que celle utilisée par incognito (qui efface physiquement les données de la partition prodinfo !).

4.2 Serveurs DNS alternatifs

Il existe plusieurs serveurs DNS alternatifs, qui ont la particularité de bloquer les adresses IP des serveurs de Nintendo. Vous ne pourrez donc pas profiter du online officiel (ce qui est tout à fait normal pour une console hackée) mais la console ne pourra pas non plus envoyer de télémétrie à Nintendo, qui lui permettrait de savoir que la console fait tourner des choses exotiques et vous bannir (ce qui bannirait également la partie sysMMC non hackée). Le plus connu de ces serveurs DNS s’appelle 90DNS.

Il suffit de vous rendre dans les options de connexion, de choisir le réglage manuel des serveurs DNS, puis de renseigner ces deux IP :

  • DNS primaire : 163.172.141.219
  • DNS secondaire : 207.246.121.77

 

Bravo, vous êtes protégé du mieux que vous pouvez contre un bannissement. Attention cependant, il ne s’agit pas d’une méthode infaillible, même les hackeurs ne connaissent pas toutes les méthodes utilisées par Nintendo pour repérer les Switch hackées. Vous enfilez idonc ci un gilet par-balles pour mettre toutes les chances de votre côté, ce qui ne veut pas dire pour autant que vous ne tomberez pas un jour sur une mine !

4.3 Redirections DNS d’Atmosphère

Depuis sa version 0.18.0, Atmosphère dispose nativement d’un module de redirection DNS, qui permet d’obtenir les mêmes résultats qu’avec 90DNS sans modifier les DNS de la console. Il suffit pour cela d’aller dans « Atmosphere\hosts » (si « hosts » n’existe pas, il faudra le créer) puis générer un nouveau fichier texte qui contiendra ceci :

# 90DNS
127.0.0.1 *nintendo.com
127.0.0.1 *nintendo.net
127.0.0.1 *nintendo.jp
127.0.0.1 *nintendo.co.jp
127.0.0.1 *nintendo.co.uk
127.0.0.1 *nintendo-europe.com
127.0.0.1 *nintendowifi.net
127.0.0.1 *nintendo.es
127.0.0.1 *nintendo.co.kr
127.0.0.1 *nintendo.tw
127.0.0.1 *nintendo.com.hk
127.0.0.1 *nintendo.com.au
127.0.0.1 *nintendo.co.nz
127.0.0.1 *nintendo.at
127.0.0.1 *nintendo.be
127.0.0.1 *nintendods.cz
127.0.0.1 *nintendo.dk
127.0.0.1 *nintendo.de
127.0.0.1 *nintendo.fi
127.0.0.1 *nintendo.fr
127.0.0.1 *nintendo.gr
127.0.0.1 *nintendo.hu
127.0.0.1 *nintendo.it
127.0.0.1 *nintendo.nl
127.0.0.1 *nintendo.no
127.0.0.1 *nintendo.pt
127.0.0.1 *nintendo.ru
127.0.0.1 *nintendo.co.za
127.0.0.1 *nintendo.se
127.0.0.1 *nintendo.ch
127.0.0.1 *nintendo.pl
127.0.0.1 *nintendoswitch.com
127.0.0.1 *nintendoswitch.com.cn
127.0.0.1 *nintendoswitch.cn
95.216.149.205 *conntest.nintendowifi.net
95.216.149.205 *ctest.cdn.nintendo.net

Sauvegarder le fichier en sysmmc.txt et/ou emummc.txt (en fonction de vos besoins). Désormais, Atmosphère bloquera toutes les adresses (actuellement connues) des serveurs Nintendo. Cette méthode n’est pas parfaite (de nouvelles adresses peuvent émerger), mais, cumulée avec le masquage des données personnelles (et, pourquoi pas, les serveurs DNS de 90DNS), a le mérite de mettre toutes les chances de votre côté pour éviter le coup de massue du ban.

 

5/ Bonus

5.1 Installer un forwarder pour Homebrew Menu

Par défaut, les homebrews se lancent depuis hbmenu (qui est intégré à Atmosphère) en démarrant l’applicatif « Album ». Ce mode de lancement a un effet de bord assez fâcheux : en effet, il hérite des autorisations de Album et se retrouve donc en mode APPLET (dans lequel il n’est pas possible d’utiliser toute la RAM disponible). Certains homebrews (installeurs, portages de jeux assez lourds, etc.) ne fonctionnent pas dans ce mode, par manque de RAM justement. Il faut donc lancer hbmenu en mode FULL RAM, soit en profitant du lancement d’un jeu en maintenant la touche R (qui aura pour effet de rediriger vers hbmenu), soit en installant un forwarder.

  • L’avantage d’un forwarder, c’est qu’il ne nécessite aucune manipulation. Une fois installé (comme n’importe quel jeu), il suffit de le démarrer depuis son icône, ce qui aura pour effet de lancer hbmenu en mode FULL RAM.
  • L’inconvénient, c’est qu’une fois en plein jeu, vous ne pourrez pas lancer hbmenu via le forwarder (logique, celui-ci se comporte comme un jeu, la console ne peut donc pas en avoir deux tournant en même temps). Mais c’est pour ça que la méthode APPLET (via Album) existe et reste fonctionnelle.

Vous pouvez télécharger un forwarder de mon cru ci-dessous, remis au goût du jour pour fonctionner sur les firmwares récents :

 

Vous n’aurez plus qu’à l’installer, comme n’importe quel backup, avec votre gestionnaire NSP/NSZ/XCI/XCZ préféré (DBI fortement recommandé !).

Désormais, vous aurez 3 possibilités pour démarrer hbmenu :

  1. utiliser le forwarder que vous venez d’installer (FULL RAM)
  2. maintenir R au démarrage de n’importe quel jeu (FULL RAM)
  3. passer par Album (APPLET MODE)