1
0
Fork 0
mirror of https://github.com/DarkMatterCore/nxdumptool.git synced 2024-10-18 03:11:45 +01:00
Generates XCI/NSP/HFS0/ExeFS/RomFS/Certificate/Ticket dumps from Nintendo Switch gamecards and installed SD/eMMC titles.
Find a file
Pablo Curiel f376eb6db4 keys: relax mkey requirements on older firmwares.
A hardcoded table with HOS version numbers and master key indexes is now used to determine the HOS key generation at runtime, whenever possible. This allows the application to more accurately determine the key generation that's actually required by the console it's running on.

Most parts of the code that relied on the Atmosphère key generation value have been updated to use the HOS key generation value instead. If the HOS version is too high/unknown, the code will fallback to the Atmosphère key generation value.

Furthermore, if the HOS key generation value is lower than our last known key generation, the code will now try to look for the highest available master key it can use to derive all lower master keys, beginning with the last known master key and ending with the master key that matches the HOS key generation value. Previous behavior only checked the availability of the master key that matched the Atmosphère key generation, which isn't completely reliable nor accurate.

If this process fails, current master key derivation will be carried out as a last resort, which wasn't being done either under this specific scenario.

Other changes include:

* keys: add keysGetHorizonOsKeyGeneration().
* keys: move current master key derivation logic into its own function, keysDeriveCurrentMasterKey(), which is now used if both Atmosphère and HOS and up-to-date, or if a lower master key is required (as a last resort method).
2024-10-12 20:38:33 +02:00
.github Update nxdt_host_exe.yml 2024-08-28 14:16:36 +02:00
code_templates poc: small fixes 2024-08-26 09:45:52 +02:00
host host: fix speed calculation issues 2024-10-08 00:57:01 +02:00
include keys: relax mkey requirements on older firmwares. 2024-10-12 20:38:33 +02:00
libs LayeredErrorFrame: use focus stack references 2024-05-10 12:18:57 +02:00
romfs Remove all references to NSWDB. 2024-05-02 15:38:39 +02:00
source keys: relax mkey requirements on older firmwares. 2024-10-12 20:38:33 +02:00
.gitignore Uses a dynamically allocated buffer to hold the CSV data, which can then be written to an output file. 2024-08-24 20:10:16 +02:00
.gitmodules libs: update libusbhsfs. 2022-03-04 13:24:28 +01:00
build.sh workflow: fix issues + remove ccache support 2024-05-02 14:27:32 +02:00
LICENSE.md Change project layout + upgrade license to GPLv3. 2021-03-25 15:26:58 -04:00
Makefile Upgrade C standard to C23. 2024-10-08 00:58:45 +02:00
README.md Uses a dynamically allocated buffer to hold the CSV data, which can then be written to an output file. 2024-08-24 20:10:16 +02:00
todo.txt Remove all references to NSWDB. 2024-05-02 15:38:39 +02:00

nxdumptool

Nintendo Switch Dump Tool

Official Discord server: https://discord.gg/SCbbcQx

This branch is used for the development of the ongoing nxdumptool rewrite. Code is highly experimental and lacks a proper UI at this time, but it has been thoroughly tested and should be safe to use. Proof-of-concept (PoC) builds are provided to test different aspects of the codebase.

If a nxdumptool build from the releases page isn't working for whatever you're trying to do (e.g. RomFS dumping), odds are it will work with a PoC build from this particular branch. The old branch will not receive any further updates.

A GitHub workflow is used to automatically build each new commit -- feel free to check it out. Furthermore, the assets from the rewrite-prerelease tag are automatically updated by this workflow, so you can always find the latest NRO binary there.

This readme will be updated whenever the rewrite branch is ready for a proper release.

Currently planned changes for this branch include:

  • USB ABI (dump data directly to a PC).
  • USB Mass Storage device support (FAT, NTFS, EXT) via libusbhsfs.
  • NX Card Image (XCI) gamecard dumps, with optional KeyArea prepending and certificate removal.
  • Gamecard header dumps.
  • Gamecard certificate dumps.
  • Plaintext gamecard CardInfo area dumps.
  • Gamecard InitialData area dumps.
  • Gamecard CardIdSet dumps.
  • Gamecard Hash FS partition dumps (in both extracted and raw image forms).
  • Lotus ASIC firmware (LAFW) blob dumping from RAM.
  • Properly detect if an inserted gamecard requires a LAFW update.
  • Nintendo Submission Package (NSP) dumps for both digital and gamecard-based titles.
  • Individual Ticket dumps from digital titles, with support for temporary/volatile tickets with AES-128-CTR crypto data kept in RAM.
  • Individual Nintendo Content Archive (NCA) dumps from a specific title.
  • Individual NCA filesystem section (Partition FS / ExeFS, RomFS, Patch RomFS) dumps from a specific NCA belonging to a specific title, in both extracted and raw image forms.
  • Better support for NCA BucketTree storages (Indirect, AesCtrEx, Sparse, Compressed), as well as better handling of multi-layered reads in combination with game updates.
  • System title support (e.g. dump qlaunch, shared fonts and much, much more at runtime).
  • Better memory handling while dealing with compressed NRO binaries.
  • Event-driven background threads to manage gamecard insertions/ejections, gamecard application metadata parsing (e.g. the game would be properly identified even if its gamecard has never been used on your console), USB ABI sessions and USB Mass Storage devices.
  • Improved support for multigame gamecards and titles with more than one Program NCA (e.g. SM3DAS).
  • Control.nacp patching while dumping NSPs (lets you patch screenshot, video, user account and HDCP restrictions).
  • Partition FS / Hash FS / RomFS browser using custom devoptab wrappers.
  • Full system update dumps.
  • Batch NSP dumps.
  • FsFileSystem + FatFs based eMMC browser using a custom devoptab wrapper (allows copying files protected by the FS sysmodule at runtime).
  • New UI using a customized borealis fork. ⚠️

Legend:

  • - Implemented
  • ⚠️ - Partially implemented
  • - Not implemented