More actions
NX Nand Manager | |
---|---|
General | |
Author | eliboa |
Type | PC Utilities |
Version | 5.2 |
License | GPL-2.0 |
Last Updated | 2022/04/20 |
Links | |
Download | |
Website | |
Source | |
Nintendo Switch NAND management tool: explore, backup, restore, mount, resize, create emunand, etc. (Windows).
Features
- Backup or restore any Switch's NAND (file or drive) => full sysNAND, full emuNAND, boot partitions or user partitions.
- Encrypt or decrypt native encrypted partition (PRODINFO, PRODINFOF, SAFE, SYTEM & USER) using BIS keys.
- Resize your NAND (USER partition only).
- Retrieve and display useful information about NAND file/drive (Firmware version, device ID, exFat driver, S/N, etc.) using BIS keys.
- Splitted dumps are fully supported (backup & restore). However the program cannot split an existing dump nor can it split the output file in any case.
- Option to wipe console unique ids and certificates (a.k.a Incognito) from PRODINFO.
- Enable/Disable auto RCM (BOOT0).
- Create emuNAND (file or partition based) from any NAND image (RAWNAND or FULL NAND).
- "Advanced copy" feature (passthrough zeroes, split output, zip output, etc).
- Mount any FAT partition (USER, SYSTEM, etc.) as virtual disk. Follow steps to install Dokan's driver first.
- Explorer (Beta):
- Explore the content of USER & SYSTEM partitions. Provides useful info: title name & id, user name & id, etc.
- List, save or extract files from saveFS (title saves, under /save folder)
- List, save, decrypt or extract content from NCAs (installed titles) using hactoolnet Png
User guide
Supported file format
It should be noted that the program does not check the file extension to detect if a file is supported or not. It'll look for specific signature inside binary data (magic number) when possible.
If the file is fully encrypted, the program will detect the type by inspecting the filename (without extension) and the file size. Therefore, a single partition file (encrypted) should be named after the partition name ("SAFE.bin", "SAFE.enc" or "SAFE.whatever" will work, "SAFE_01.bin" will not).
Supported drives
NxNandManager can detect physical drives that contains a valid NAND (or partition) such as memloader drives (tool for mounting Nintendo Switch's NAND on a computer) or SD card containing an emuNAND partition (SX OS hidden partition or emuMMC partition).
How to open your Nintendo Switch's NAND (GUI)
sysNAND or emuNAND (via Hekate):
- Launch Hekate/Nyx (v5.2+) on your Nintendo Switch. Navigate to Tools > USB Tools.
- Either select "eMMC RAW GPP" (sysNand) or "emu RAW GPP" (emuNAND) to mount your NAND on your computer (you can mount BOOT0/BOOT1 separately).
- Set "Read-Only" to OFF if you want to perform restore operations.
- Open NxNandManager then open new drive (CTRL + D).
- Select the mounted drive. You can now perform backup/restore operations.
emuNAND (partition):
- Mount the SD card containing emuNAND on your computer.
- Open NxNandManager then open new drive (CTRL + D).
- Select the drive labelled "FULL NAND".
emuNAND (files):
- Mount the SD card containing emuNAND on your computer
- Open NxNandManager then open new file (CTRL + O).
- Open the first split file of your emuNAND (i.e "sdmmc:\emuMMC\SD00\eMMC\00" for emuMMC or "sdmmc:\sxos\emunand\full.00.bin" for SX OS's emuNAND)
NxStorage types
The following types are supported by NxNandManager:
Type | Description | Can be restored from |
---|---|---|
BOOT0 | BOOT0 partition (single file) |
BOOT0 |
BOOT1 | BOOT1 partition (single file) |
BOOT1 |
PRODINFO | PRODINFO partition (single file). Also known as "CAL0" |
PRODINFO |
PRODINFOF | PRODINFO partition (single file) |
PRODINFOF |
BCPKG2-1-Normal-Main | BCPKG2-1-Normal-Main partition (single file) |
BCPKG2-1-Normal-Main |
BCPKG2-2-Normal-Sub | BCPKG2-2-Normal-Sub partition (single file) |
BCPKG2-2-Normal-Sub |
BCPKG2-3-SafeMode-Main | BCPKG2-3-SafeMode-Main partition (single file) |
BCPKG2-3-SafeMode-Main |
BCPKG2-4-SafeMode-Sub | BCPKG2-4-SafeMode-Sub partition (single file) |
BCPKG2-4-SafeMode-Sub |
BCPKG2-5-Repair-Main | BCPKG2-5-Repair-Main partition (single file) |
BCPKG2-5-Repair-Main |
BCPKG2-6-Repair-Sub | BCPKG2-6-Repair-Sub partition (single file) |
BCPKG2-6-Repair-Sub partition |
SAFE | SAFE partition (single file) |
SAFE |
SYSTEM | SYSTEM partition (single file) |
SYSTEM |
USER | USER partition (single file) |
USER |
RAWNAND |
RAWNAND contains: |
RAWNAND |
FULL NAND |
FULL NAND contains: |
FULL NAND |
Notes on transfer speed
Performance depends greatly on hardware/drive limitations. For example, if you're doing backup/restore operations on a drive mounted through "memloader", the transfer speed will be very slow, due to memloader limitations.
That said, the transfer rate will be reduced if you choose to encrypt or decrypt data. Data integrity validation (MD5 hash) can also affect the tranfer rate.
Compatibility
All dumps made with Hekate are supported by NxNandManager (and vice versa).
NxNandManager also supports splitted dumps (such as SX OS's (emu)NAND dumps).
Split filenames should be: basename[00->99].(bin|.*) or basename[0->9].(bin|.*) or basename.[0->∝]
Set the first split file as input.
CLI Usage
NxNandManager.exe [--list] -i inputFilename|\\.\PhysicalDriveX [-o outputFilename|\\.\PhysicalDriveX] [-part=nxPartitionName] [--info] [--enable_autoRCM] [--disable_autoRCM] [--incognito] [-user_resize=n] [Flags]
Arguments | Description |
---|---|
-i |
Path to input file or physical drive. |
-o |
Path to output file or physical drive. |
-part= |
Partition(s) to copy (apply to both input & output if possible). |
-d |
Decrypt content (-keyset mandatory). |
-e |
Encrypt content (-keyset mandatory). |
-keyset | Path to a file containing bis keys. |
-user_resize= |
Size in Mb for new USER partition in output. |
--gui | Launch graphical user interface (optional). |
--info |
Display information about input/output (depends on NAND type): |
--list | List compatible physical drives. |
--incognito |
Wipe all console unique ids and certificates from CAL0 (a.k.a incognito). |
--enable_autoRCM | Enable auto RCM. -i must point to a valid BOOT0 file/drive. |
--disable_autoRCM | Disable auto RCM. -i must point to a valid BOOT0 file/drive. |
Flag | Description |
---|---|
BYPASS_MD5SUM |
Used to by-pass all md5 verifications. |
FORCE | Program will never prompt for user confirmation. |
FORMAT_USER | To format USER partition (-user_resize arg mandatory). |
Examples
Dump full NAND to file
From physical drive (you first need to mount NX eMMC with memloader (via TegraRcmGUI for ex):
.\NxNandManager.exe -i \\.\PhysicalDrive3 -o "C:\Users\Public\NAND dump\rawnand.bin"
From existing dump file:
.\NxNandManager.exe -i "C:\Users\Public\NAND dump\rawnand.bin" -o D:\rawnand2.bin
Dump specific partition to file
Dump SYSTEM partition from physical drive:
.\NxNandManager.exe -i \\.\PhysicalDrive3 -o "C:\Users\Public\NAND dump\SYSTEM.bin" -part=SYSTEM
Extract PRODINFOF partition from existing dump file:
.\NxNandManager.exe -i "C:\Users\Public\NAND dump\rawnand.bin" -o D:\PRODINFOF.bin -part=PRODINFOF
Restore NAND dump
Restore full raw NAND to physical drive:
.\NxNandManager.exe -i "C:\Users\Public\NAND dump\rawnand.bin" -o \\.\PhysicalDrive3
Restore full splitted raw NAND to physical drive:
.\NxNandManager.exe -i "C:\Users\Public\NAND dump\full00.bin" -o \\.\PhysicalDrive3
Restore specific partition to physical drive:
.\NxNandManager.exe -i "C:\Users\Public\NAND dump\rawnand.bin" -o \\.\PhysicalDrive3 -part=PRODINFO
or
.\NxNandManager.exe -i "C:\Users\Public\NAND dump\PRODINFO" -o \\.\PhysicalDrive3 -part=PRODINFO
Copy partition from file to rawNand file
Copy specific partition from rawNand file:
.\NxNandManager.exe -i "C:\Users\Public\NAND dump\rawnand.bin" -o "C:\Users\Public\NAND dump\rawnand2.bin" -part=BCPKG2-1-Normal-Main
Copy specific partition from partition file:
.\NxNandManager.exe -i "C:\Users\Public\NAND dump\BCPKG2-1-Normal-Main" -o "C:\Users\Public\NAND dump\rawnand2.bin" -part=BCPKG2-1-Normal-Main
NAND decryption/encryption (AES-XTS)
NxNandManager can decrypt or encrypt NAND file/drive (rawnand or encrypted partition file "PRODINFO", "SAFE", "SYSTEM", etc). A keyset file containing biskeys must be provided.
Use -d
argument to decrypt, -e
to encrypt.
Keys can be provided by the -keyset argument to the keyset filename. The program can parse keyset files made with biskeydump or lockpick:
BIS Key 0 (crypt): <16-byte hex key> BIS Key 0 (tweak): <16-byte hex key> ...
or
bis_key_00 = <32-byte hex key> bis_key_01 = <32-byte hex key> ...
When -keyset and --info arguments are provided, the program can also retrieve some useful information, such as firmware version, exFat driver, last boot time, etc.
Examples:
Decrypt full rawnand:
NxNandManager.exe -i rawnand.bin -o rawnand.dec -d -keyset keys.dat
Decrypt single partition file:
NxNandManager.exe -i PRODINFO -o PRODINFO.dec -d -keyset keys.dat
Encrypt single partition file:
NxNandManager.exe -i PRODINFO.dec -o PRODINFO.enc -e -keyset keys.dat
Decrypt & restore single partition file to physical drive:
NxNandManager.exe -i PRODINFO.dec -o \\.\PhysicalDrive3 -part=PRODINFO -e -keyset keys.dat
Encrypt & restore full rawnand:
NxNandManager.exe -i rawnand.dec -o \\.\PhysicalDrive3 -e -keyset keys.dat
Screenshots
Changelog
v5.2 2022/04/20
- Firmware detection : added support for 14.0.0, 14.1.0 & 14.1.1.
- Fixed #79 : Incognito hanging on newer PRODINFO versions.
- Fixed #82 : Error while performing backup/restore from/to NAND without GPT header backup (mounted via Hekate's UMS Tool for example).
v5.1 2022/02/02
Bug fixes:
- #74, #37 - NAND without GPT backup is now recognized as a valid NxStorage.
- #71 - A bug was fixed that caused checksum mismatch error.
- #61, #47 - Several bugs were fixed regarding partition formatting.
- #59 - Filebased emunand with extra dots in file path were not recognized, fixed.
- #57, #44 - File paths with non ASCII characters are now properly managed.
- #46 => #24.
- #24 - A bug was fixed that caused crypto validation error for empty/formatted partitions.
New features:
- Partition mounting (virtual disk / virtual FS):
- New option: User can select mouting point (drive letter).
- New option: Nintendo's archive folder virtualization (handled as single file NCA, file size can exceed 4 GB).
- New option: Partition can be mounted as read-only.
- Virtual FS now uses multithreading which allows for file sharing & faster transfer speeds.
- NAND partition formatting (USER, SYSTEM):
- Code has been redesigned. FatFS lib is now used.
- Explorer (Beta):
- Explore the content of USER & SYSTEM partitions. Provides useful info: title name & id, user name & id, etc.
- List, save or extract files from saveFS (title saves, under /save folder).
- List, save, decrypt or extract content from NCAs (installed titles) using hactoolnet.
- Please note:
- You'll need to re-configure your keyset (import all keys from both prod.keys & title.keys).
- Content (JPEG) will be downloaded from Nintendo's public CDN and cached in
/cache
folder. - Content will be downloaded from eliboa.com (nca filename DB as json file, title DB as json file).
- External program hactoolnet.exe is used to decrypt & extract files from NCAs.
- Keyset configuration:
- You can import all sorts of keys into keyset, not only Bis keys (useful for Explorer).
- Firmware detection:
- BOOT0, SYSTEM: added support for latest firmwares (up to 13.2.1).
- SYSTEM: added a feature to query firmware version from a remote database : eliboa.com/switch/nca.php (#75).
v5.0 2021/05/17
- Added firmware detection support for 12.0.1 & 12.0.2.
- Added a feature to mount any FAT partition (USER, SYSTEM, etc.) as virtual disk. Follow steps to install Dokan's driver first.
- Improved transfer speeds (especially for splitted NAND).
- Various bug fixes & improvements.
v4.1.2 2021/04/06
- Added firmware detection support for 12.0.0.
v4.1.1 2021/01/19
- Added firmware detection support for 10.2.0, 11.0.0 & 11.0.1.
v4.1 2020/08/04
- Added support for mariko's BOOT0 (prevent autoRCM activation for mariko).
- Added firmware detection support for 10.1.0 & 10.1.1 (CHN).
- Fixed a bug caused by a nullptr when creating rawbased emunand from FULL NAND.
- Fixed segmentation fault in NxHandle destructor.
- Fixed a bug occuring when some bis keys were missing from keyset file.
- Output file handle is now correctly freed after copying.
GUI:
- UI scaling implementation (many thanks to Chrscool8 for his contribution).
- You can now close an opened file/drive from 'File' menu (to release file handle).
CLI:
- New option --crypto_check : Validate crypto for a given keyset file (-keyset) and input (-i).
- Fixed a bug when displaying remaining time.
- Encryption/decryption for FULL NAND was broken, fixed.
v4.0 2020/06/13
- Emunand creation tool has been implemented for CLI use.
- List of NCAs has been update for a better firmware detection (thanks to @shadow2560 & @throwawayay).
- Firmware detection (from pckg1ldr header) update.
Bug fixes:
- AutoRCM was broken. One byte in each of four BCTs is now XORed.
- Copy failed during dump via Nyx UMS tool (emuMMC).
- Fixed a critical bug caused by an unresized copy buffer when splitting output file into chunks.
- GUI: Data integrity validation was missing for full dump.
- CLI: Remaining time display was broken (restore).
- #26 : Selection of the nand image file was not possible in the Emunand Creation Tool.
- #27 : By default, the program wasn't running with elevated permissions.
v4.0-beta 2020/04/25
- New GUI layout.
- New feature "advanced copy" (passthrough zeroes, split output, zip output, etc.)
- New tool "Emunand Creation Tool" (GUI only) provides an easy way to create a file based emuNAND or raw based emuNAND on micro SD card.
- NB: You'll have to open a valid RAWNAND or FULL NAND image before you can lauch the tool from the Options menu.
- GUI : you can now choose to open any emuMMC partition, in case of multiple emuMMC on the same micro SD card (Open Drive, CTRL+D)
- Many fixes and improvements.
- Edit April 25: #26 fixed.
- Edit April 30 : #27 fixed.
v3.0.3 2019/11/14
- Fix USER's boot sector when creating resized NAND larger than 32Gb (Horizon OS was unable to detect the real size of USER partition).
v3.0.2 2019/11/03
- GUI : Fixed a bug that caused backup GPT not to be found for RAWNAND as a memloader drive (#10).
- GUI : Fixed a bug that caused BCPKG2 partitions not to be recognized (#8).
- Input volume is now locked before making dump/restore to prevent any other process from writing to volume during operation.
- Misc fixes.
v3.0.1 2019/11/01
- Writing to emuMMC partition is fixed (#6).
- Fixed an error when input or output path contains non latin characters (#5).
- Edit 11/02 : this release was updated with a quick fix for emuMMC partition detection bug on Windows 7 (#7).
v3.0.0 2019/10/27
- Edit : Writing to emuMMC is broken :/ I'm working on it. It should still work for SX OS hidden partition though.
Added suppport for SD partition emuMMC and SX OS hidden partition (emuNAND):
- Thus, support for a new NxStorage type "FULL NAND" was added. FULL NAND contains BOOT0, BOOT1 and RAWNAND in a single file/storage. You can pretty much perform the same operations to FULL NAND and RAWNAND (dump, restore, decrypt partition, dump partition, etc).
- Additionally, you can extract RAWNAND from FULL NAND as well as BOOT0 & BOOT1 (CLI : use argument -part=RAWNAND, -part=BOOT0,etc. GUI : "Tools" > "Dump RAWNAND only"). You can also restore FULL NAND to RAWNAND (BOOT0 and BOOT1 will be skipped) and vice versa.
- To open your emuNAND partition, mount your SD card on your computer, then :
- GUI : Use shortcut
CTRL
+D
to list compatible drives, then select the detected drive, labelled "FULL NAND". - CLI usage : use
command NxNandManager.exe --list
to get the disk name to use with input argument "-i".
- GUI : Use shortcut
Resize NAND:
- You can now resize any RAWNAND or FULL NAND storage. The resize feature will create a new file for your NAND with resized USER partition. This is mainly useful to reduce the size of your emuNAND (file or partition) but you can also increase the size of USER partition, above 26 Gb. Optionally, USER partition can be formatted while resizing.
CLI : a list of partition can now be provided through argument "-part":
- In case you want to dump or restore several partitions at the same time, you can provide a list of partitions, seperated by a comma, through "-part=" argument. In this case, output must be a directory. When output is a valid NxStorage (restore), every partition that exists in both input and output, will be restored to output.
- One thing to remember is that when argument -part is provided, the program will never copy the GPT (partition table).
Misc.:
- Restoring to splitted dump is now allowed.
- When keyset is provided, the program can retrieve new information:
- device ID (can be useful to disable parental control).
- WLAN mac address.
- Available FAT32 space for partitions SYTEM & USER.
- Improved BOOT1 detection (will look for magic PK11 in the entire file).
- Except for some GUI parts, the whole code has be refactored. Although this is mainly transparent for end user, you should notice a general improvement in performance when copying (except when using memloader which is still super slow).
- CLI : remaining time and amount of bytes copied are now displayed during copy.
v2.0.2 2019/09/20
- Added support for 9.0 RAWAND firmware detection.
- Added support for 9.0 BOOT1.
- Improved firmware detection : since nca filename based detection is not so accurate, the program will also and always search in journal/play reports for firmware version (opening rawnand or SYSTEM partition will be a bit slower, especially with memloader).
v2.0.1 2019/08/14
- Added support for emuMMC (SD Files). Restoring to a splitted dump is still not supported but you can dump/join and decrypt emuMMC, or install incognito on emuMMC (open the file "sdmmc:\emuMMC\SD00\eMMC\00" to open your emuMMC).
- Fixed error when installing incognito on splitted dump.
Credits
- Special thanks to shadow256 without whom this work would not have been possible.
- CTCaer's hekate, which I borrowed a few pieces of code.
- MCMrARM for switch_decrypt.
- blawar for incognito.
- shchmue for Firmware Version Inspector.
- Chan for FatFs.
- Qt team and contributors.
- Dokan team and contributors.