General purpose read/extract tool for Nintendo Switch file formats.
Go to file
2018-08-06 17:56:23 +08:00
.vscode Take out non-ticket code from libes into new libpki. 2018-08-06 16:59:56 +08:00
lib Take out non-ticket code from libes into new libpki. 2018-08-06 16:59:56 +08:00
programs [nstool] Add some punctuation to usage text. 2018-08-06 17:56:23 +08:00
.gitignore Update project metadata 2018-04-07 15:56:38 +08:00
KEYS.md [nstool] Root issuer validation, via key provided in key file. 2018-07-30 04:21:19 +08:00
LICENSE Fix typo in license 2018-06-02 02:50:38 +08:00
makefile [ncatool] Add program. Can only process header currently. 2017-07-05 18:58:33 +10:00
NXTools.sln Update VS2017 Project Files. 2018-06-11 13:31:43 +08:00
NXTools.vcxproj Initial commit of support libraries. 2017-07-03 01:18:59 +10:00
NXTools.vcxproj.filters Initial commit of support libraries. 2017-07-03 01:18:59 +10:00
README.md Take out non-ticket code from libes into new libpki. 2018-08-06 16:59:56 +08:00

NXTools

Tools & Libraries for NX (Nintendo Switch).

License

Tools

  • nstool - read *.npdm, read/extract PartitionFS (PFS0|HFS0) blobs (including *.nsp), read/extract RomFS blobs, read/extract *.xci, read/extract *.nca, read *.cnmt, read *.nso, read *.nro, read *.nacp

Libraries

  • libfnd - Foundation library.
  • libcrypto - Cryptographic functions (AES,SHA,RSA). Wrapper for mbedTLS
  • libcompress - Compression algorithms (LZ4). Wrapper for lz4
  • libpki - Processes Nintendo's proprietary PKI.
  • libes - Processes Nintendo's eShop file types.
  • libnx - Processes NX file types.
  • libnx-hb - Processes NX file types (homebrew extensions).

Building

On MacOS/Linux/WSL run make.

For Windows, Visual Studio 2017 is supported.

External Keys

Programs/libraries don't embed any keys that are copyright protected. However keys can be imported via a keyset file.

For programs that support it, the keyset file can be provided via the command line (see program usage for details). Alternatively a keyset file located in $HOME/.switch/prod.keys (or $HOME/.switch/dev.keys for dev) will be imported automatically if one is not provided at the command line.

Keyset files are ASCII text files containing one key per line, in the form "key_name = HEXADECIMALKEY". Case and whitespace do not matter, ';' character can be used to insert comments.

See KEYS.md for more details.