|This application has been obsoleted by one or more applications that serve the same purpose, but are more stable or maintained.|
Decrypt9 WIP is a multipurpose content dumper and decryptor for the Nintendo 3DS. This is a work in progress fork of Archshifts original Decrypt9, including bleeding edge new features. Note that the names of the executable files for this are Decrypt9WIP, instead of Decrypt9.
There are three main versions of Decrypt9 available (Decrypt9, Decrypt9WIP, Decrypt9UI):
- Decrypt9 by Archshift - New features are pulled into this once they are thoroughly tested. The most stable but without some of the newer features.
- Decrypt9 WIP by d0k3 - The work in progress fork of Archshifts original Decrypt9. Contains the newest features and can be considered tested beta versions.
- Decrypt9 UI by Shadowtrance - A themed version of Decrypt9 WIP created by Shadowtrance. It contains a nice graphical user interface (instead of text only as the other two versions), but may not be up to date at all times.
Note: This is no longer being maintained, it is suggested to use GodMode 9 instead.
- Create XORpads for decryption of NCCH (.3DS) files.
- Create XORpads for decryption of files in the /Nintendo 3DS folder.
- Create XORpads for decryption of the TWLN and CTRNAND partitions.
- Decrypt Titlekeys, either from a file or directly from SysNAND/EmuNAND.
- Backup & restore your SysNAND and EmuNAND.
- Dump & Inject any partition from your SysNAND and EmuNAND.
- Dump & Inject a number of files (ticket.db,...) from your SysNAND and EmuNAND.
- Inject any app into the Health & Safety app.
- Create and update the SeedDB file.
- Directly decrypt (cryptofix) NCCH (.3DS) and CIA files.
- Directly decrypt files from the /Nintendo 3DS/ folder.
- Dump retail game cartridges.
- And a lot more.
Decrypt9 can be built to run from a number of entry points, descriptions are below. Note that you need to be on or below 3DS firmware version v9.2 for any of these to work.
- A9LH & Brahma:
- Homebrew Launcher:
- Copy Decrypt9.3dsx & Decrypt9.smdh into /3DS/Decrypt9 on your SD card.
- Run this via Homebrew Launcher or any other compatible software.
- Build this with
- CakeHax Browser:
- Copy Decrypt9.dat to the root of your SD card. For MSET also copy Decrypt9.nds to your SD card.
- You can then run it via http://dukesrg.github.io/?Decrypt9.dat from your 3DS browser.
- Build this via
- CakeHax MSET:
- Copy Decrypt9.dat to the root of your SD card and Decrypt9.nds to anywhere on the SD card.
- You can then run it either via MSET and Decrypt9.nds.
- Build this via
- Gateway Browser Exploit:
- Copy Launcher.dat to your SD card root and run this via http://go.gateway-3ds.com/ from your 3DS browser.
- Build this with
- Please note: this entrypoint is deprecated. While it may still work at the present time with little to no problems, bugs will no more be fixed and it may be completely removed at a later time. Use CakeHax instead.
Basically every input file for Decrypt9 can be placed into the SD card root and output files can be written there, too. Working folders are mostly optional.
However, using them is recommended and even required for some of the Decrypt9 features to work. These two folders (on the root of your SD card) are used:
|/files9/D9Game/||NCCH (.3DS), CIA, BOSS, SD card files (from the /Nintendo 3DS/ folder) go here and are decrypted in place by the respective features. The cart dumper uses this directory as output directory.|
|/files9/||Everything that doesn't go into |
Decryption of game files (NCCH, CIA, BOSS, SD) needs at least one of these two folders to exist. Input files are first searched in
/files9/ and (if not found) then in the SD card root.
Depending on the environment, Decrypt9 is ran from, you may need support files to have full functionality.
Support files are placed into either the root folder, or the work folder (
Here's a list of support files used in Decrypt9, when you need them and what they are used for:
|slot0x05keyY.bin||This file was previously needed for access to CTRNAND features (which is basically everything) on N3DS. At the moment it is not needed on any entrypoint.|
|slot0x25keyX.bin||This file is needed to decrypt 7x crypto NCCHs and CIAs on O3DS < 7.0.|
|slot0x18keyX.bin||This file is needed to decrypt Secure 3 crypto NCCHs and CIAs on O3DS without A9LH.|
|slot0x1BkeyX.bin||This file is needed to decrypt Secure 4 crypto NCCHs and CIAs in every environment.|
|slot0x24keyY.bin||This file is needed to properly dump & inject GBA VC savegames.|
|aeskeydb.bin||This is an alternative to the four |
|seeddb.bin||Decrypt9 can create and update this file from the seeds installed in your system. This file is needed to decrypt seed crypto NCCHs and CIAs. Note that your seeddb.bin must also contain the seed for the specific game you need to decrypt.|
|otp.bin||This file is console-unique and is required - on entrypoints other than A9LH - for decryption of the 'secret' sector 0x96 on N3DS (and O3DS with a9lh installed). Refer to this guide for instructions on how to get your own |
|movable.sed||This is dumpable by Decrypt9. It is needed to decrypt SD files from another 3DS, or from another installation on your own 3DS. It is not needed when decrypting your own SysNAND/EmuNAND SD files.|
|secret_sector.bin||A copy of the decrypted, untouched (non-a9lh) |
|d9logo.bin||Contains a logo (or, in fact, anything) to be displayed on the bottom screen. A |
Features in Decrypt9 are categorized into 7 main categories, see the descriptions of each below.
XORpad Generator Options
This category includes all features that generate XORpads. XORpads are not useful on their own, but they can be used (with additional tools) to decrypt things on your PC.
Most, if not all, of the functionality provided by these features can now be achieved in Decrypt9 in a more comfortable way by newer dump/decrypt features, but these are still useful for following older tutorials and to work with other tools.
|NCCH Padgen||This generates XORpads for NCCH/NCSD files (.3DS f.e.) from |
|SD Padgen (SDinfo.bin)||This generates XORpads for files installed into the /Nintendo 3DS/ folder of your SD card. Use the included Python script |
|SD Padgen (SysNAND dir)||This is basically an improved version of the above feature. For typical users, there are two folders in /Nintendo 3DS/ on the SD card, one belonging to the SysNAND, the other to EmuNAND. This feature will generate XORpads for encrypted content inside the folder belonging to the SysNAND. It won't touch your SysNAND, thus it is not a dangerous feature. A folder selection prompt will allow you to specify exactly the XORpads you want to be generated (use the arrow keys to select). Generating all of them at once is not recommended, because this can lead to several GBs of data and very long processing time.|
|SD Padgen (EmuNAND dir)||This is the same as the above feature, but utilizing the EmuNAND folder below /Nintendo 3DS/ on the SD card. The EmuNAND folder is typically a lot larger than the SysNAND folder, so be careful when selecting the content for which to generate XORpads for.|
|Any Padgen (anypad.bin)||This feature is a more versatile alternative to various other padgen features. It uses the anypad.bin file as base. For information on the format of this file, refer to |
|CTRNAND Padgen||This generates a XORpad for the CTRNAND partition inside your 3DS console flash memory. Use this with a NAND (SysNAND/EmuNAND) dump from your console and 3DSFAT16Tool to decrypt and re-encrypt the CTRNAND partition on PC. This is useful for any modification you might want to do to the main file system of your 3DS.|
|CTRNAND Padgen (slot0x4)||This is an N3DS only feature. It is the same as the above option, but forces to use slot0x04 when generating the XORpad. Slot0x04 XORpads are required for decryption and encryption of the CTRNAND partition from downgraded N3DS NAND (SysNAND/EmuNAND) dumps.|
|TWLNAND Padgen||This generates a XORpad for the TWLNAND partition inside your 3DS console flash memory. Use this with a NAND (SysNAND/EmuNAND) dump from your console and 3DSFAT16Tool to decrypt and re-encrypt the TWLNAND partition on PC. This can be used, f.e. to set up the SudokuHax exploit.|
|FIRM0FIRM1 Padgen||This generates the combined XORpad for the FIRM0 and FIRM1 partitions inside your 3DS console flash memory. Use this with a NAND (SysNAND/EmuNAND) dump from your console and 3DSFAT16Tool to decrypt and re-encrypt the FIRM0/FIRM1 partition on PC. This is useful f.e. for manual installation of the arm9loaderhax exploit.|
This category includes all titlekey related features.
Decrypted titlekeys (
decTitleKeys.bin) are used to download software from CDN via the included Python script
cdn_download.py and PlaiCDN. Encrypted titlekeys are used, for the same purpose, by FunKeyCIA.
You may also view the (encrypted or decrypted) titlekeys via
|Titlekey Decrypt (file)||First, generate the |
|Titlekey Encrypt (file)||This feature takes a |
|Titlekey Decrypt (SysNAND)||This will find and decrypt all the titlekeys contained on your SysNAND, without the need for additional tools. The |
|Titlekey Decrypt (EmuNAND)||This will find and decrypt all the titlekeys contained on your EmuNAND, without the need for additional tools. The |
|Titlekey Dump (SysNAND)||This will find all the titlekeys contained on your SysNAND and dump them, without the additional step of decryption, to |
|Titlekey Dump (EmuNAND)||This will find all the titlekeys contained on your EmuNAND and dump them, without the additional step of decryption, to |
|Ticket Dump (SysNAND)||Use this to dump all tickets found inside your SysNAND ticket.db file. Naming scheme for tickets is (commonkey index)-(console id)-(title id).tik. Commonkey index is typically 0 for eShop titles and 1 for system titles, a console id of zero for eShop titles typically means a forged (= non genuine) ticket. Dumped tickets are installable via FBI.|
|Ticket Dump (EmuNAND)||Same as above, but uses the ticket.db file from your EmuNAND.|
This is actually two categories in the main menu, but the functionality provided the same (for SysNAND/EmuNAND respectively). These categories include all features that dump, inject, modify or extract information from/to the SysNAND/EmuNAND.
For functions that output files to the SD card, the user can choose a filename from a predefined list. For functions that use files from the SD card for input, the user can choose among all candidates existing on the SD card.
For an extra layer of safety, critical(!) features - meaning all features that actually introduce change to the NAND - are protected by a warning message and an unlock sequence that the user has to enter. Caution is adviced with these protected features. They should only be used by the informed user.
|(Sys/Emu)NAND Backup & Restore...|
|NAND Backup||Dumps the |
|NAND Backup (minsize)||Same as the above option, but only dumps the actually used size of the NAND (the remainder is only unused data). Use this instead of the above to save some space on your SD card.|
|NAND Restore(!)||This fully restores your SysNAND or EmuNAND from the provided |
|NAND Restore (forced)(!)||Same as the above option, but skips most safety checks. This is not recommended to be used without being properly informed. Keep in mind that, if the above option stops you from restoring a NAND backup, it is normally with good reason and means a prevented brick.|
|NAND Restore (keep a9lh)(!)||Only available on SysNAND, this is the same as the standard (unforced) restore option, but keeps all your arm9loaderhax files intact. Only use if you actually have arm9loaderhax installed.|
|Validate NAND Dump||Use this to check and verify NAND dumps on your SD card. If this check passes on a NAND dump, you will also be able to restore it via the standard restore option.|
|Auto CTRNAND Transfer||Automatically transfer a transferable CTRNAND image to this consoles NAND. Without A9LH installed, this will overwrite the FIRM0, FIRM1, CTRNAND. With A9LH installed, this will only overwrite CTRNAND. O3DS images can be transferred into N3DS consoles, but the NCSD header of the NAND may be overwritten.|
|Dump transferable CTRNAND||Dump a CTRNAND image for later use in the feature above. Transferables images can be shared between consoles.|
|Autofix CTRNAND||Use this to automatically fixes the CMACs for |
|Partition Dump... (can be edited on Windows via OSFMount)|
|TWLN||TWL-NAND FAT16 File System - This is the same as on a Nintendo DSi console. Installed DSiWare titles reside in this partition. This partition can be used, f.e. to set up SudokuHax.|
|TWLP||TWL-NAND PHOTO FAT12 File System - This is a Nintendo DSi specific partition for storing photos.|
|AGBSAVE||AGB_FIRM GBA savegame - This contains a temporary copy of the current GBA games savegame.|
|FIRM0||Firmware partition - This is here for development purposes only and should not be changed by users.|
|FIRM1||Firmware partition backup - Usually an exact copy of FIRM0.|
|CTRNAND||CTR-NAND FAT16 File System - This contains basically you complete 3DS setup. Titles installed to the NAND reside here, and you can extract basically any file of interest from this partition.|
|Sector0x96||Console-unique encrypted New3DS key-storage - This contains N3DS keys, access to it is required for A9LH installation.|
|NAND header||NCSD header - The header of your NAND, this is is console-unique and contains the offsets/sizes of all partitions. It also contains the encrypted TWL MBR partition table.|
|This allows you to reencrypt & inject any of the partitions on your NAND from the respective files (|
|System File Dump...|
|ticket.db||Contains titlekeys for installed titles - Use this with Cearps FunkyCIA to download installed (legit, purchased) titles directly to your PCs ard drive.|
|title.db||A database of installed titles - Apart from informative purposes this doesn't serve a direct purpose for most users at the moment.|
|import.db||A database of titles to be installed - This can be used to get rid of the FW update nag at a later time. Read more on it in this GBAtemp thread.|
|certs.db||A database of certificates - Any practical use for this is unknown at the moment.|
|SecureInfo_A||This contains your region and an ASCII serial number - This can be used to temporarily change your 3DS region. The dump/inject options in Decrypt9 simplify the tutorial found here.|
|Local FriendCodeSeed_B||This contains your FriendCodeSeed - In theory this can be used to import your friend list to another 3DS.|
|movable.sed:||This contains the keyY for decryption of data on the SD card - Decrypt9 itself uses this in the SD Decryptor/Encryptor and in SD padgen.|
|System File Inject...(!)|
|This allows you to directly encrypt & inject various files of interest into the SysNAND and EmuNAND. For more information check out the list above.|
|System Save Dump...|
|seedsave.bin||Contains the seeds for decryption of 9.6x seed encrypted titles - Only the seeds for installed (legit, purchased) titles are included in this. Use SEEDconv (recommended) or the included Python script |
|nagsave.bin||Contains some data relating to system updates - It is possible to block automatic system updates (ie. the update nag) with this file. Research is still in progress. Read this and the posts after it for more information.|
|nnidsave.bin||Contains your NNID data - This can be used to reset/remove the NNID from your system, without removing any other data. See here for instructions.|
|friendsave.bin||Contains your actual friendlist - This can be used to backup and restore your friendlist in conjunction with |
|configsave.bin||The config savegame - Contains various things that are set via the config menu. It also contains a flag telling the system that initial setup was already executed.|
|System Save Inject...(!)|
|This allows you to directly encrypt & inject various system saves into the SysNAND and EmuNAND. For more information check out the list above.|
|Health&Safety Dump||This allows you to to dump the decrypted Health and Safety system app to your SD card. The dumped H&S app can be used to create injectable files for any homebrew software.|
|Health&Safety Inject(!)||This is used to inject any app into your Health & Safety system app (as long as it is smaller than the original H&S app). Multiple safety clamps are in place, and this is a pretty safe feature. Users are still adviced to be cautious using this and only use eiter the original hs.app or inject apps created with the Universal Inject Generator. This feature will detect all injectable apps on the SD card and let the user choose which one to inject.|
|GBA VC Save Dump||Only available on SysNAND, use this to dump the GBA VC Savegame from your NAND. Other than the headered |
|GBA VC Save Inject||Only available on SysNAND, use this to inject back a GBA VC Savegame (f.e. after manual editing) to your NAND. Same as above, |
|Update SeedDB||Use this to create or update the |
|Dump Config (for Citra)||Use this to dump the |
|NCCH FIRMs Dump||Use this to dump NATIVE_FIRM, SAFE_MODE_FIRM, TWL_FIRM and AGB_FIRM from your NAND. For N3DS FIRMs, the ARM9 section will be decrypted as well. This feature is at the moment only useful for research.|
|FIRM ARM9 Decryptor||Use this to decrypt the ARM9 section of N3DS FIRMs. This feature is at the moment only useful for research.|
Content Decryptor Options
This category includes all features that allow the decryption (and encryption) of external and internal content files.
Content files are directly processed - the encrypted versions are overwritten with the decrypted ones and vice versa, so keep backups.
The standard work folder for content files is
/files9/D9Game/, but if that does not exist, content files are processed inside the
/files9/ work folder.
|NCCH/NCSD File Options|
|NCCH/NCSD Decryptor||Use this to fully decrypt all NCCH/NCSD files in the folder. A full decryption of a .3DS file is otherwise also known as cryptofixing. Important Note: Depending on you 3DS console type /FW version and the encryption in your NCCH/NCSD files you may need additional files key files (see Support files above) and/or |
|NCCH/NCSD Encryptor||Use this to (re-)encrypt all NCCH/NCSD files in the folder using standard encryption (f.e. after decrypting them). Standard encryption can be processed on any 3DS, starting from the lowest firmware versions. On some hardware, .3DS files might need to be encrypted for compatibility.|
|CIA File Options (Content Installable Files)|
|CIA Decryptor (shallow)||Use this to decrypt, for all CIA files in the folder, the titlekey layer of CIA decryption. The internal NCCH encryption is left untouched.|
|CIA Decryptor (deep)||Use this to fully decrypt all CIA files in the folder. This also processes the internal NCCH encryption. Deep decryption of a CIA file is otherwise known as cryptofixing. This also may need additional key files and/or |
|CIA Decryptor (CXI only)||This is the same as CIA Decryptor (deep), but it does not process the deep NCCH encryption for anything but the first CXI content. On some hardware, fully deep decrypted CIA files might not be installable, but CIA files processed with this feature will work.|
|CIA Encryptor (NCCH)||Use this to encrypt the NCCH containers inside of the CIA files in the folder. NCCH encryption is required, for example, for system CIA files to be installable.|
|BOSS File Options (SportPass related)|
|BOSS Decryptor||Use this to decrypt BOSS files. This feature will decrypt all encrypted BOSS files (with a valid BOSS header) found in the folder.|
|BOSS Encryptor||Use this to encrypt BOSS files. This feature will encrypt all unencrypted BOSS files (with a valid BOSS header) found in the folder.|
|SD File Options|
|SD Decryptor & Encryptor||Use this to decrypt or encrypt SD files. For this feature to work, you need to manually copy the file(s) you want to process. Copy them with their full folder structure (that's everything after |
|SD Decryptor (SysNAND dir)||An improved version of the feature above. This allows you to select content from |
|SD Decryptor (EmuNAND dir)||This has the same functionality as the feature above, but handles the content of the |
|SD CXI Dumper (SysNAND dir)||This feature is similar to the SD Decryptor, but only handles the CXI (CTR eXecutable Image), uses |
|SD CXI Dumper (EmuNAND dir)||This has the same functionality as the feature above, but handles the content of the |
|CIA Builder Options|
|Build CIA from NCCH/NCSD||Previously called NCCH/NCSD to CIA Converter. It allows you to convert any NCCH/NCSD file (that means .3DS files, too) to an installable (on a signature patched system) CIA file. The CIA file will be written to |
|CIA Builder (SysNAND/orig.)||Previously called Content to CIA (SysNAND dir). This feature allows you to directly convert content installed to the SD card to a CIA file. It handles content from the |
|CIA Builder (EmuNAND/orig.)||Previously called Content to CIA (EmuNAND dir)__ and has the same functionality as the feature above, but handles the content of the |
|CIA Builder (SysNAND/decr.)||This feature has the same functionality as the features above. In addition, it fully decrypts the CIA files it generates for better compatibility. Take note that the additional decryption and recalculation of checksums mean longer processing times. This handles content from the |
|CIA Builder (EmuNAND/decr.)||This has the same functionality as the feature above, but handles the content of the |
Gamecart Dumper Options
This category includes all features handling dumping of content from external cartridges. Cartridge dumps are also known as .3ds files.
|Dump Cart (full)||This feature dumps the full, unaltered data from the inserted cartridge. For 4GB cartridges, the last sector is silently discarded, because the FAT32 file system can't handle files equal or above 4GB. This feature also handles NTR/TWL cartridges (aka. NDS and DSi crtridges).|
|Dump Cart (trim)||Same as the above feature, but discards the unused padding for smaller output and faster processing. Using this is recommended unless the padding is required for digital preservation purposes.|
|Dump & Decrypt Cart (full)||Same as Dump Cart (full), but also decrypts the cartridge data on-the-fly. Decrypted cartridge data is required for emulators and recommended for CIA conversion. The recommended CIA conversion tool is 3dsconv. NTR/TWL cartridges are not encrypted and thus won't be decrypted.|
|Dump & Decrypt Cart (trim)||Same as above, but discards the unused padding for smaller output and faster processing. This is recommended over the above feature.|
|Dump Cart to CIA||Use this to directly dump an inserted cartridge to a fully decrypted CIA file, which can be installed to a patched system using CIA installer software like FBI. For most users, this type of dump will be the most convenient. NTR/TWL cartridges can't be dumped to a CIA file.|
|Dump Private Header||Dumps the cartridge unique private header from the inserted cartridge.|
|Flash Savegame to Cart||Flash a savegame file to a retail game cartridge. This currently only works for NTR/TWL carts. The savegame to flash must have a filename of ndscart*.sav.|
NDS Flashcart Options
This category includes special features for certain NDS type flashcarts (currently only the AK2i).
|Auto NTRCARDHAX to AK2i||This performs an automatic NTRCARDHAX injection to the AK2i flashcart.|
|Dump AK2i||Use this to dump the AK2i flashcart bootrom to the game directory.|
|Inject AK2i||Use this to inject the AK2i flashcart bootrom from the game directory.|
|Inject NTRCARDHAX to AK2i||Patch and inject the NTRCARDHAX payload to the AK2i flashcart. AK2i 1.41 version is required. If your AK2i is not on this version, upgrade or downgrade to it.|
|Restore AK2i bootrom||Restore the AK2i flashcart original bootrom.|
This category includes special features which allow you to test and manage Decrypt9 internal functionality.
|System Info||Displays various information about your 3DS and SD card on screen. Used for informational purposes and to test if information is available.|
|Create Selftest Reference||Run this first on a known working entrypoint to generate the selftest reference data. This will create a file called |
|Run Selftest||Run the actual selftest (must have created the reference data before). This will create or update a file called |
|Build Key Database||This is used to build the |
|De/Encrypt Key Database||By default, the |
Down/Up - Navigate menus, Scroll output, Select between options
A - Enter submenu, Confirm action
B - Leave submenu, Cancel
L/R - Switch between submenus (first level submenu only)
X - Make a screenshot (works in menu and on console output, after a feature finishes)
X+Left/Right - Batch screenshot all submenus/entries (only on menu)
Select - Unmount SD card (only on menu)
Hone - Reboot the console
Power - Poweroff the console
Start (+Left) - Reboot (Start only), Poweroff (with Left) the console
How to Use Decrypt9WIP to rip a Game to CIA on your 3DS (TheTux2)
- Roxas75 for the method of ARM9 code injection.
- Cha(N), Kane49, and all other FatFS contributors for FatFS.
- Normmatt for
sdmmc.cas well as project infrastructure (Makefile, linker setup, etc).
- Relys, sbJFn5r for the decryptor.
- Everyone mentioned by Archshift above.
- Archshift for starting this project and being a great project maintainer.
- b1l1s, Normmatt for their 'behind-the-scenes' work and for making arm9loaderhax support possible.
- Gelex for various code improvements and useful advice throughout D9 development.
- ihaveamac for first developing the simple CIA generation method and for being of great help in porting it.
- patois, delebile, SteveIce10 for Brahma and it's updates.
- mid-kid for CakeHax and for hosting freenode #Cakey.
- Shadowtrance, Syphurith, AuroraWright for being of great help developing various features.
- dark_samus3 and Plailect for making CTRNAND transfers a possibility.
- osilloscorpion and idgrepthat for enabling NTR cart dumps.
- profi200 for helpful hints that first made developing some features possible.
- Al3x_10m for helping me with countless hours of testing and useful advice.
- Shadowhand for being awesome and hosting the nightlies.
- SciresM and Reisyukaku for helping me allow devkit compatibility.
- liomajor, Datalogger, zoogie, atkfromabove, mixups, key1340, k8099, Supster131, stbinan, Wolfvak, imanoob, Stary2001, kasai07 and countless others from freenode #Cakey and the GBAtemp forums for testing, feedback and helpful hints.