About
NSTool is a general purpose reading/extraction tool for Nintendo Switch file formats.
Supported File Formats
- PartitionFs (
PFS0
) (.pfs0) - Sha256PartitionFs (
HFS0
) (.hfs0) - RomFs (.romfs)
- Nintendo Content Archive (.nca)
- Nintendo Submission Package (.nsp)
- NX GameCard Image (.xci)
- Meta (
META
) (.npdm) - Nintendo Application Control Property (.nacp)
- Content Metadata (.cnmt)
- ES Certificate (.cert)
- ES Ticket (v2 only) (.tik)
- Nintendo Shared Object (
NSO0
) (.nso) - Nintendo Relocatable Object (
NRO0
) (.nro) - Initial Program Bundle (
INI1
) (.ini) - Initial Program (
KIP1
) (.kip)
Change Log since v1.4.1
- [NEW] CLI option to extract a file or directory from an archive (
-x, --extract
).- This extract command is supported by all archive types, including XCI and NCA.
- See README.md for usage help.
- [Deprecated] CLI option
--listfs
renamed to--fstree
.--listfs
is still accepted for now, but may be removed in a later version.
- [Deprecated] CLI options redundant
--fsdir
,--update
,--logo
,--normal
,--secure
,--part0
,--part1
,--part2
,--part3
- These are implemented as aliases for a full
--extract
option, and so they are extract jobs. - This means
--fsdir
works with XCI and NCA too.
- These are implemented as aliases for a full
- [BugFix] Passing ticket at command-line (using
--tik
) now correctly imports title key. - [Change] New keys supported in
prod.keys
anddev.keys
key-file.- It turns out XCI header keys are shared between prod and dev, and are selected based on an index in XCI header.
xci_header_key_##
replacesxci_header_key
xci_header_key
inprod.keys
is mapped toxci_header_key_00
xci_header_key
indev.keys
is mapped toxci_header_key_01
- Processing XCI Initial Data isn't implemented yet, but support for importing key data was added:
xci_initial_data_kek_##
AES128 key
- Processing XCI CERT isn't implemented yet, but support for importing key data was added:
xci_cert_sign_key_modulus
RSA2048 Modulusxci_cert_sign_key_private
RSA2048 Private Exponent
- It turns out XCI header keys are shared between prod and dev, and are selected based on an index in XCI header.
- [Change] Most publicly known RSA public keys are now built-in, but can still be overridden by a user key-file.
- [Change] Keys and hashes no longer have bytes separated with
:
in command-line output. - [Remove] Removed CompressedRomFs support
- The implementation was for a pre-release version, and did not support the actually released CompressedRomFs format.