General purpose read/extract tool for Nintendo Switch file formats.
Go to file
2021-10-22 04:11:36 +08:00
.github/workflows Update build_master workflow. 2020-06-21 14:30:26 +08:00
build/visualstudio Rename PkiCertProcess to EsCertProcess 2021-10-16 16:00:17 +08:00
deps Update libtoolchain 2021-10-19 17:17:56 +08:00
src Show ticket property mask even when empty with verbose output. 2021-10-22 04:11:36 +08:00
.gitignore Add .vscode dir to gitignore 2020-08-16 14:14:15 +08:00
.gitmodules Add libfmt and update dependencies. 2021-09-25 10:45:58 +08:00
BUILDING.md Update build instructions 2019-02-17 15:22:43 +08:00
LICENSE Make source code about nstool only. 2019-01-31 17:10:19 +08:00
makefile Begin migration from libfnd to libtoolchain 2021-09-28 19:15:54 +08:00
README.md Update readme 2021-10-16 16:01:09 +08:00
SWITCH_KEYS.md Typo 2020-03-10 20:33:26 +08:00

Nintendo Switch Tool (NSTool) DeviceTag

General purpose reading/extraction tool for Nintendo Switch file formats.

Supported File Formats

  • Meta (.npdm)
  • PartitionFS (and Sha256PartitionFS) (includes raw .nsp)
  • RomFS
  • NX GameCard Image (.xci)
  • Nintendo Content Archive (.nca)
  • Content Metadata (.cnmt)
  • Nintendo Software Object (.nso)
  • Nintendo Relocatable Software Object (.nro)
  • Kernel Initial Process List (.ini)
  • Kernel Initial Process (.kip)
  • Nintendo Application Control Property (.nacp)
  • ES Certificate (.cert)
  • ES Ticket (v2 only) (.tik)

Usage

Usage: nstool [options... ] <file>

  General Options:
      -d, --dev       Use devkit keyset.
      -k, --keyset    Specify keyset file.
      -t, --type      Specify input file type. [xci, pfs, romfs, nca, meta, cnmt, nso, nro, ini, kip, nacp, aset, cert, tik]
      -y, --verify    Verify file.

  Output Options:
      --showkeys      Show keys generated.
      --showlayout    Show layout metadata.
      -v, --verbose   Verbose output.

  XCI (GameCard Image)
    nstool [--listfs] [--update <dir> --logo <dir> --normal <dir> --secure <dir>] <.xci file>
      --listfs        Print file system in embedded partitions.
      --update        Extract "update" partition to directory.
      --logo          Extract "logo" partition to directory.
      --normal        Extract "normal" partition to directory.
      --secure        Extract "secure" partition to directory.

  PFS0/HFS0 (PartitionFs), RomFs, NSP (Ninendo Submission Package)
    nstool [--listfs] [--fsdir <dir>] <file>
      --listfs        Print file system.
      --fsdir         Extract file system to directory.

  NCA (Nintendo Content Archive)
    nstool [--listfs] [--bodykey <key> --titlekey <key>] [--part0 <dir> ...] <.nca file>
      --listfs        Print file system in embedded partitions.
      --titlekey      Specify title key extracted from ticket.
      --bodykey       Specify body encryption key.
      --tik           Specify ticket to source title key.
      --cert          Specify certificate chain to verify ticket.
      --part0         Extract "partition 0" to directory.
      --part1         Extract "partition 1" to directory.
      --part2         Extract "partition 2" to directory.
      --part3         Extract "partition 3" to directory.

  NSO (Nintendo Software Object), NRO (Nintendo Relocatable Object)
    nstool [--listapi --listsym] [--insttype <inst. type>] <file>
      --listapi       Print SDK API List.
      --listsym       Print Code Symbols.
      --insttype      Specify instruction type [64bit|32bit] (64bit is assumed).

  INI (Initial Process List Blob)
    nstool [--kipdir <dir>] <file>
      --kipdir        Extract embedded KIPs to directory.

  ASET (Homebrew Asset Blob)
    nstool [--listfs] [--icon <file> --nacp <file> --fsdir <dir>] <file>
      --listfs        Print filesystem in embedded RomFS partition.
      --icon          Extract icon partition to file.
      --nacp          Extract NACP partition to file.
      --fsdir         Extract RomFS partition to directory.

External Keys

NSTool doesn't embed any keys that are copyright protected. However keys can be imported via various keyset files.

See SWITCH_KEYS.md for more info.

Building

See BUILDING.md.