[Switch] Redimensionner la partition USER d'un dump de NAND (pour emuMMC Atmosphère)

1764 visiteurs sur le site | S'incrire

Accédez aux coordonnées de l’ensemble des techniciens professionnels recommandés par logic-sunrise 20 derniers dossiers et tutoriaux

Tutoriel - Redimensionner la partition USER d'un dump de NAND (pour emuMMC Atmosphère)


Introduction:
 
Ce tutoriel va intéresser les amateurs de l'emuMMC intégré dernièrement au CFW Atmosphère. En effet, vous avez maintenant la possibilité sur AMS de lancer une NAND "alternatif" stockée sur votre carte SD (au lieu d'utiliser celle sur la puce mémoire de votre switch appellé sysNAND). Le redimensionnement de la partition USER (qui contient vos données utilisateur) est utile dans le cas d'un emuMMC/emuNAND pour récupérer une partie du stockage perdu (en moyenne 20Go), en effet il est inutile d'avoir un emuMMC de 32Go puisque vous installez tous vos jeux dans la SD et le dossier Nintendo.
 
Pré-requis:
 
- Un ordinateur sous Windows, macOS ou Linux
 
- Avoir Python3 sur sa machine
 
- Un dump de NAND (splitté ou non) réalisable très facilement avec Hekate, il vous faudra à la fin les fichiers BOOT0 BOOT1 et RAWNAND.BIN (ou RAWNAND.BIN.00, RAWNAND.BIN.01... dans le cas d'un dump splitté)
 
- Votre fichier prod.keys contenant vos BIS KEY 3 (permettant de decrypter la partition USER) que vous pouvez obtenir via le payload LockpickRCM
 
Etape 1 - Préparation des fichiers:
 
Nous allons commencer par fusionner les fichiers du dump de NAND en un seul fichier nommé emummc.bin.
 
Dans le cas d'un dump non-splitté:




cat BOOT0 BOOT1 rawnand.bin > emummc.bin # Sur macOS ou Linux
copy /b BOOT0+BOOT1+rawnand.bin emummc.bin # Sur Windows 

Dans le cas d'un dump splitté:

cat BOOT0 BOOT1 rawnand.bin.* > emummc.bin # Sur macOS ou Linux
copy /b BOOT0+BOOT1+rawnand.bin.* emummc.bin # Sur Windows

Nous nous retrouvons maintenant en possession de notre fichier emummc.bin

Etape 1B - Uniquement utilisateur macOS
 
Cette étape vous est destine uniquement si vous êtes un utilisateur de macOS. Merci à @shadow_shd pour les précisions.
 
Installer mbedtls via Homebrew (brew)

brew install mbedtls

Si vous n'avez pas le gestionnaire de paquet Homebrew sur votre installation macOS, ça s'installe très facilement avec:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubus.../master/install)"

Etape 2 - Récupération du script:
 
1) Télécharger le script sur https://gist.github....75f2720a1e5e486, sur la page cliquez sur  Download ZIP afin de récupérer une archive contenant le script resize-user.py
 
2) Installer la dépendance mbedtls avec PIP pour que le script puisse fonctionner:
 


python3 -m pip install -U python-mbedtls # Sur macOS ou Linux
py -3 -m pip install -U python-mbedtls # Sur Windows

 
Etape 2 - Récupération du script:
 
1) Télécharger le script sur https://gist.github....75f2720a1e5e486, sur la page cliquez sur  Download ZIP afin de récupérer une archive contenant le script resize-user.py
 
2) Installer la dépendance mbedtls avec PIP pour que le script puisse fonctionner:
 

python3 -m pip install -U python-mbedtls # Sur macOS ou Linux
py -3 -m pip install -U python-mbedtls # Sur Windows

 
Etape 3 - Redimensionner la partition USER:
 
Placez-vous dans le dossier contenant le script resize-user.py et mettez dans le même dossier vos fichiers emummc.bin et prod.keys. Exécuter la commande ci-dessous:
 

python3 resize_user.py emummc.bin <nouvelle taille de la partition en GiB> prod.keys

 
Le fichier est automatiquement redimensionné, si vous indiquez une taille invalide le script la refusera, ne spécifiez pas l'unité G après votre taille donnez uniquement un nombre.
 
Si vous comptez réaliser un emuMMC sur Atmosphère en mode partition caché, vous pouvez vous arrêtez ici et écrire le fichier emummc.bin sur la partition de votre carte SD.
 
Si vous voulez récupérer les fichiers de votre dump BOOT0 BOOT1 et rawnand.bin afin de réaliser un emuMMC en mode fichier ou quelque chose d'autre. Vous pouvez passer à l'étape 4.
 
(OPTIONNELLE) Etape 4 - Extraire le BOOT0 BOOT1 & rawnand.bin à partir d'un emummc.bin:
 
Pour se faire nous allons utiliser la commande DD de Linux et macOS, si vous êtes sur Windows vous pouvez récupérer le binaire de DD à cette adresse: http://www.chrysocome.net/dd
 
Ensuite utilisez les commandes ci-dessous:

dd bs=1c count=4194304 if=emummc.bin of=boot0.bin
dd bs=1c skip=4194304 count=4194304 if=emummc.bin of=boot1.bin
dd bs=1c skip=8388609 if=emummc.bin of=rawnand.bin

 
Merci à shadow256 pour les commandes même si elles sont très longues, en l'attente d'une nouvelle façon de faire ;)
 
Terminé, vous avez redimensionné votre dump, vous pouvez aller le tester ;) Dans ce tutoriel je l'ai réduit de environ 10Go mais on aurait pu très largement viser plus haut. De cette façon on récupéré une grande partie de l'espace du dump.

Posté : dimanche 07 juillet 2019, 12:16 par giga300.
Utilisateur en ligne
07 juillet 2019, 12:44
Approuver ce commentaire (+1)
Merci pour le tuto, je test sa des que j'ai un peu de temps x)
Répondre à ce commentaire
07 juillet 2019, 13:00
Approuver ce commentaire (+1)
Est-ce que certainnes personnes utilisent un Emmuemmc pour les hacks et jouent en ligne sur Sysemmc ?
Juste pour savoir si certains ont déjà tenté sans ce faire ban.
Répondre à ce commentaire
08 juillet 2019, 19:11
Approuver ce commentaire (+1)

Salut,
 
Je suis sur macOS Mojave et pour que l'installation de python-mbedtls réussisse sans erreur il faut au préalable installer mbedtls via la commande :

brew install mbedtls

Sinon on tombe systématiquement sur l'erreur :

'mbedtls/platform_util.h' file not found

Lors de l'installation de la dépendance python-mbedtls.
 
Pour installer Homebrew ouvrir un terminal et entrer la commande :

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Merci pour ce tuto qui me sera très utile ; il est en effet inutile d'avoir une partition User de 32 Go qui ne servira à rien ;)
 
 
Edit :
 
Pour l'étape 4 optionnelle, sous macOS la bonne syntaxe des commandes est :

dd bs=1 count=4194304 if=emummc.bin of=boot0.bin:)
dd bs=1 skip=4194304 count=4194304 if=emummc.bin of=boot1.bin
dd bs=1 skip=8388609 if=emummc.bin of=rawnand.bin

La dernière commande peut nécessiter un temps important, pour une taille réduite à 10 Go il a fallu environ 14 heures à mon Mac Mini 2014 SSD pour créer le fichier rawnand.bin :)

Répondre à ce commentaire
09 juillet 2019, 09:59
Approuver ce commentaire (+1)
merci !

un très bon tuto, il manque juste quelques images mais il est très complet !
Répondre à ce commentaire
10 juillet 2019, 11:59
Approuver ce commentaire (+1)

Salut,
 
Je suis sur macOS Mojave et pour que l'installation de python-mbedtls réussisse sans erreur il faut au préalable installer mbedtls via la commande :
brew install mbedtls

Sinon on tombe systématiquement sur l'erreur :
'mbedtls/platform_util.h' file not found

Lors de l'installation de la dépendance python-mbedtls.
 
Pour installer Homebrew ouvrir un terminal et entrer la commande :
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubus.../master/install)"


Merci pour ce tuto qui me sera très utile ; il est en effet inutile d'avoir une partition User de 32 Go qui ne servira à rien ;)
 
 
Edit :
 
Pour l'étape 4 optionnelle, sous macOS la bonne syntaxe des commandes est :
dd bs=1 count=4194304 if=emummc.bin of=boot0.bin:)
dd bs=1 skip=4194304 count=4194304 if=emummc.bin of=boot1.bin
dd bs=1 skip=8388609 if=emummc.bin of=rawnand.bin

La dernière commande peut nécessiter un temps important, pour une taille réduite à 10 Go il a fallu environ 14 heures à mon Mac Mini 2014 SSD pour créer le fichier rawnand.bin :)


Merci beaucoup pour toutes ces précisions, j’éditerai le tutoriel ;)
Répondre à ce commentaire
11 juillet 2019, 08:04
Approuver ce commentaire (+1)
Merci à toi surtout @Giga300 ;)
Répondre à ce commentaire
28 août 2019, 15:49
Approuver ce commentaire (+1)

Bonjour et tout d'abord un énorme merci pour ce tuto ! J'aimerai savoir comment écrire le fichier emummc.bin sur la partition de ma carte SD ? Désolé je débute dans le hack switch..

Merci !! :)

Répondre à ce commentaire
28 août 2019, 18:42
Approuver ce commentaire (+1)

Merci à toi ô puissant giga ! :)

Répondre à ce commentaire
23 septembre 2019, 01:34
Approuver ce commentaire (+1)
salut il y a une erreur c'est en double
Etape 2 - Récupération du script:

1) Télécharger le script sur https://gist.github....75f2720a1e5e486, sur la page cliquez sur Download ZIP afin de récupérer une archive contenant le script resize-user.py

2) Installer la dépendance mbedtls avec PIP pour que le script puisse fonctionner:

python3 -m pip install -U python-mbedtls # Sur macOS ou Linux
py -3 -m pip install -U python-mbedtls # Sur Windows

Etape 2 - Récupération du script:

1) Télécharger le script sur https://gist.github....75f2720a1e5e486, sur la page cliquez sur Download ZIP afin de récupérer une archive contenant le script resize-user.py

2) Installer la dépendance mbedtls avec PIP pour que le script puisse fonctionner
Répondre à ce commentaire
14 octobre 2019, 20:32
Approuver ce commentaire (+1)

Bonjour et tout d'abord un énorme merci pour ce tuto ! J'aimerai savoir comment écrire le fichier emummc.bin sur la partition de ma carte SD ? Désolé je débute dans le hack switch..

Merci !! :)

Pareil, comment? on dois repartitionner à la taille souhaité du fichier auparavant? merci!

Répondre à ce commentaire
28 octobre 2019, 03:06
Approuver ce commentaire (+1)

Salut,

Merci pour le travail du script, le concept est très intéressant (dommage qu'il soit en python + module only)...
Regrettablement le "tuto" est minimaliste et la plupart qui s'intéresseront à ce super script seront dans l'incapacité de l'utiliser, ce qui est vraiment dommage par rapport au travail de codage fourni.

Pour y remédier : ça fait plusieurs heures que je travail sur une explication détaillée pouvant satisfaire un néophyte :).

Si tout est OK concernant Linux et MAC, malheureusement il en est tout autre pour Windows et après plusieurs jours de test, (sauf erreur de ma part) : ton mini-tuto est erroné et il n'est pas possible d'utiliser ce script sous Windows !
(Dans le cas contraire, vu le temps passé à étudier la question, je serai ravie de comprendre mon erreur si une solution existe réellement).

 

 

// Erreur à la fin du tuto :

dd bs=1 skip=8388609 if=emummc.bin of=rawnand.bin

la bonne valeur c'est 8388608 pas 8388609

 

 

 

// Pour linux :

1) On pourrait ajouter au tuto les commandes que l'on peut utiliser dans le terminal :
 

sudo su
apt update
apt install python3
apt install python3-pip
apt upgrade python3-pip
pip3 install --upgrade pip
pip3 install --upgrade setuptools
pip3 install -U python-mbedtls
python3 resize-user.py emummc.bin X prod.keys

2) Ou passer par une install wheel (.whl)

https://pypi.org/pro...-mbedtls/#files
ou
https://pypi.org/sim...python-mbedtls/
 

pip install wheel
pip install ./{path}/x.whl


----------

 

 

// Pour Windows : FAIL

Pour ceux qui ne souhaite pas lire le détail de tous les tests, en bref : il m'a été impossible "d'installer" (compiler) mbedtls => erreur PEP 517.
Avec du recul (après tous les tests et la possibilité 2 de la partie Linux), on peux même constater qu'aucun wheel mbedtls win, n'est disponible.

Alors avant que certain se lance dans l'aventure et évite de perdre leurs temps voici tous les tests déjà effectué :


1) Win 7 pro x64 (arium) + python-3.7.5-amd64
a) Requirement :

- Pour utiliser (compiler) des modules python sous windows ce n'est pas si simple et un certain nombre de chose sont nécessaires, notamment des SDK windows et Redistributable visual studio.

Note : Sans installer tout cela l'erreur "Visual c++ 14.0 manquant apparaîtra."

Plus d'info ici :
https://www.scivisio...-c-14-required/
ou ici :
https://wiki.python....WindowsCompiler


Avec "l'évolution" (encore et toujours plus de maj), le cloud et la grande mode des web-installer il est parfois pas aisé de trouvé d'ancienne version compatible avec ce que vous souhaitez... (par défaut on nous fait télécharger une usine à gaz version 2019 et qui s'avère pas totalement compatible et incomplète -_-...)

Les downloaders peuvent être trouvé ainsi :

Microsoft Visual C++ 2015 Redistributable Update 3 :
http://download.micr..._redist.x64.exe
http://download.micr..._redist.x86.exe

Visual Studio (C++ Builds Tools) + SDK windows 8.1 (compatible win7) : Microsoft Build Tools 2015 Update 3
http://download.micr...dtools_full.exe
Note : prévoir 3Go

ou
https://visualstudio...lder-downloads/
Onglet "Redistribuables et gen tool"

Personnellement je n'ai pas vu de différence, mais certains devs préconisent que le chemin du compilateur (cl.exe) doit être ajouter les la variables d'environnement "path".
Par exemple : "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin".


1b) Installation :

Installer "Microsoft .NET Framework 4.5"
Installer "Microsoft Visual C++ 2015 Redistributable Update 3"
installer "C++ Builds Tools" + "SDK windows 8.1" via "visual studio"

Téléchargement de python (Par exemple : python-3.7.5-amd64) :
https://www.python.org/downloads/

 

191028024618968063.jpg

 

C'est parti :
 

py -3 -m pip install --upgrade pip
py -3 -m pip install --upgrade setuptools
py -3 -m pip install -U python-mbedtls

Fail ! => Building wheel for python-mbedtls (PEP 517) ... error


Mode binary peut-être ?


pip install --only-binary :all: mbedtls

Fail ! =>  ERROR: Could not find a version that satisfies the requirement mbedtls (from versions: none)


c) Mince cela ne fonctionne pas (après toutes ces heures passé à trouver le nécessaire...)
C'est peut-être python ?

Go désinstall / install ...

Test avec :
python-2.7.16.amd64
python-3.4
python-3.6.6-amd64
python-3.7.5
python-3.7.5-amd64
python-3.8.0
python-3.8.0-amd64

=> idem


d) peut-être visual studio ?
go réinstall pack complet ce coup là (et pas juste C++ + SDK)

=> idem


----------


2) Win 7 MSDN + MAJ

Bon c'est peut-etre l'OS qui n'est pas optimal...
Go install win7 MSDN (+ x python)

=> idem

----------


3) Win 10

Peut-être win7 qui n'est plus pris en charge ?
Go install win10 pro x64

Attention : les packages requis ne sont pas les mêmes :

"Microsoft .NET Framework 4.7.2" + "KB4480955"

Visual Studio 2019 + SDK windows 10 :
https://aka.ms/vs/16..._buildtools.exe

Note : un 1er téléchargement de 1 Mo pour récupérer le downloader
un 2eme téléchargement de 71 Mo pour récupérer le (gros) web-installer
Puis auto-décompression de 175 Mo (dans "C:\Program Files (x86)\Microsoft Visual Studio\Installer")
Et enfin lancement du sélectionneur de téléchargement...

Il y a possibilité de télécharger le pack complet :
cmd (dans le dossier ou à été télécharger vs_buildtools.exe) :

vs_BuildTools --layout c:\VSLayout --lang fr-FR

Attention le pack fait 18 Go !


Une fois le tout (enfin) installé....

 

191028024619348263.jpg

 

mini_191028024620750648.png
 

 

=> idem même erreur -_- !

Je pense avoir fait le tour de la question...
Pour ma part et sauf preuves contraire le module mbedtls n'est pas compatible windows, et par conséquent le script non plus... et nécessite donc une modification du tuto.



Voici une des erreurs principale complète :

C:\Windows\System32>py -3 -m pip install -U python-mbedtls
Collecting python-mbedtls
  Using cached https://files.pythonhosted.org/packages/ed/e4/0d2e61fca4132aea46c93df5e995df3058327935bc6048e738db3663c777/python-mbedtls-0.18.3.tar.gz
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
    Preparing wheel metadata ... done
Collecting certifi
  Using cached https://files.pythonhosted.org/packages/18/b0/8146a4f8dd402f60744fa380bc73ca47303cccf8b9190fd16a827281eac2/certifi-2019.9.11-py2.py3-none-any.whl
Building wheels for collected packages: python-mbedtls
  Building wheel for python-mbedtls (PEP 517) ... error
  ERROR: Command errored out with exit status 1:
   command: 'C:\Python37\python.exe' 'C:\Python37\lib\site-packages\pip\_vendor\pep517\_in_process.py' build_wheel 'C:\Users\UTILIS~1\AppData\Local\Temp\tmp6xtwuo2c'
       cwd: C:\Users\UTILIS~1\AppData\Local\Temp\pip-install-qt2ftj94\python-mbedtls
  Complete output (37 lines):
  running bdist_wheel
  running build
  running build_py
  creating build-3.7.5
  creating build-3.7.5\lib.win-amd64-3.7
  creating build-3.7.5\lib.win-amd64-3.7\mbedtls
  copying src\mbedtls\hash.py -> build-3.7.5\lib.win-amd64-3.7\mbedtls
  copying src\mbedtls\hmac.py -> build-3.7.5\lib.win-amd64-3.7\mbedtls
  copying src\mbedtls\secrets.py -> build-3.7.5\lib.win-amd64-3.7\mbedtls
  copying src\mbedtls\__init__.py -> build-3.7.5\lib.win-amd64-3.7\mbedtls
  creating build-3.7.5\lib.win-amd64-3.7\mbedtls\cipher
  copying src\mbedtls\cipher\AES.py -> build-3.7.5\lib.win-amd64-3.7\mbedtls\cipher
  copying src\mbedtls\cipher\ARC4.py -> build-3.7.5\lib.win-amd64-3.7\mbedtls\cipher
  copying src\mbedtls\cipher\ARIA.py -> build-3.7.5\lib.win-amd64-3.7\mbedtls\cipher
  copying src\mbedtls\cipher\Blowfish.py -> build-3.7.5\lib.win-amd64-3.7\mbedtls\cipher
  copying src\mbedtls\cipher\Camellia.py -> build-3.7.5\lib.win-amd64-3.7\mbedtls\cipher
  copying src\mbedtls\cipher\CHACHA20.py -> build-3.7.5\lib.win-amd64-3.7\mbedtls\cipher
  copying src\mbedtls\cipher\DES.py -> build-3.7.5\lib.win-amd64-3.7\mbedtls\cipher
  copying src\mbedtls\cipher\DES3.py -> build-3.7.5\lib.win-amd64-3.7\mbedtls\cipher
  copying src\mbedtls\cipher\DES3dbl.py -> build-3.7.5\lib.win-amd64-3.7\mbedtls\cipher
  copying src\mbedtls\cipher\__init__.py -> build-3.7.5\lib.win-amd64-3.7\mbedtls\cipher
  running build_ext
  cythoning src\mbedtls\exceptions.pyx to build-3.7.5\temp.win-amd64-3.7\Release\pyrex\mbedtls\exceptions.c
  creating build-3.7.5\temp.win-amd64-3.7
  creating build-3.7.5\temp.win-amd64-3.7\Release
  creating build-3.7.5\temp.win-amd64-3.7\Release\pyrex
  creating build-3.7.5\temp.win-amd64-3.7\Release\pyrex\mbedtls
  building 'mbedtls.exceptions' extension
  creating build-3.7.5\temp.win-amd64-3.7\Release\build-3.7.5
  creating build-3.7.5\temp.win-amd64-3.7\Release\build-3.7.5\temp.win-amd64-3.7
  creating build-3.7.5\temp.win-amd64-3.7\Release\build-3.7.5\temp.win-amd64-3.7\Release
  creating build-3.7.5\temp.win-amd64-3.7\Release\build-3.7.5\temp.win-amd64-3.7\Release\pyrex
  creating build-3.7.5\temp.win-amd64-3.7\Release\build-3.7.5\temp.win-amd64-3.7\Release\pyrex\mbedtls
  C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.23.28105\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -IC:\Python37\include -IC:\Python37\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.23.28105\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\cppwinrt" /Tcbuild-3.7.5\temp.win-amd64-3.7\Release\pyrex\mbedtls\exceptions.c /Fobuild-3.7.5\temp.win-amd64-3.7\Release\build-3.7.5\temp.win-amd64-3.7\Release\pyrex\mbedtls\exceptions.obj
  exceptions.c
  build-3.7.5\temp.win-amd64-3.7\Release\pyrex\mbedtls\exceptions.c(596): fatal error C1083: Impossible d'ouvrir le fichier includeÿ: 'mbedtls/error.h'ÿ: No such file or directory
  error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Tools\\MSVC\\14.23.28105\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2
  ----------------------------------------
  ERROR: Failed building wheel for python-mbedtls
  Running setup.py clean for python-mbedtls
Failed to build python-mbedtls
ERROR: Could not build wheels for python-mbedtls which use PEP 517 and cannot be installed directly

Répondre à ce commentaire
31 janvier 2020, 10:17
Approuver ce commentaire (+1)
Pour dd on peut remplacer "bs=1" par "bs=4096" (du coup il faut aussi remplacer les valeurs d "count" et "skip" pour les adapter aux nouvelles tailles de bloques définie par "bs"), ça évite d'avoir un traitement trop long. Pour Windows on peut faire le tuto avec NXNandManager qui permet maintenant de redimensionner la partition USER d'une Rawnand ou d'une emunand, c'est bien plus simple qu'avec le script python et pour ceux qui utilisent mon Ultimate-Switch-Hack-Script ces fonctions sont incluses dans la Nand Toolbox. Voici mes commandes dd pour info:

"dd.exe" bs=4096 iflag=count_bytes count=4194304 if="emummc.bin" of="BOOT0"
"dd.exe" bs=4096 iflag=count_bytes,skip_bytes skip=4194304 count=4194304 if="emummc.bin" of="BOOT1"
"dd.exe" bs=4096 iflag=skip_bytes skip=8388608 if="emummc.bin" of="rawnand.bin"

Répondre à ce commentaire
Cliquer ici pour continuer sur le forum
Envoyer