Generate XORpads for a game or application in .3ds or .cci format using a 3DS - ihaveamac/3DS-rom-tools GitHub Wiki
This guide explains how you can generate XORpads for a CTR Cart Image (.3ds/.cci) so you can extract its files on a computer.
Generally decrypting the game directly is preferred now. If you still need to generate XORpads, or only want access to the ExHeader/ExeFS, XORpads can still be used.
- Python 2.7
- A 3DS system with arm9loaderhax
- arm9loaderhax is not technically required, but is the simplest and most popular setup on 3DS systems. Other setups are not covered in these guides.
-
Decrypt9WIP by d0k3
See its README on how to set it up. - One of the Python scripts for NCCHInfo generation:
-
ncchinfo_gen.py
- will generate XORpads for all partitions and sections -
ncchinfo_gen_exh.py
- will generate XORpads for ExHeader/ExeFS only
-
- Some patience with huge games, especially if generating XORpads for the RomFS
- Basic knowledge of the Terminal/Command Line
-
NCCH partitions of a CCI
Partition Use Type 0 Game Executable [[CXI 1 Manual [[CFA 2 Download Play Child container [[CFA 6 New3DS Update Data [[CFA 7 Old3DS Update Data [[CFA 3, 4, and 5 do exist and can be extracted, but don't usually contain anything.
-
Possible XORpads (all beginning with
000400000XXXXX00
), assumingncchinfo_gen
from this repository was used:-
.Main.exheader.xorpad
- Game Executable ExHeader -
.Main.exefs_norm.xorpad
- Game Executable ExeFS -
.Main.exefs_7x.xorpad
- Game Executable Exefs (7.x/9.3/9.6) -
.Main.romfs.xorpad
- Game Executable RomFS -
.Manual.romfs.xorpad
- Manual RomFS -
.DownloadPlay.romfs.xorpad
- Download Play Child container RomFS -
.N3DSUpdateData.romfs.xorpad
- New3DS Update Data RomFS -
.O3DSUpdateData.romfs.xorpad
- Old3DS Update Data RomFS
-
- Get the latest release of Decrypt9WIP.
- Make a folder at the root of the SD card named
files9
- Get these slot keys (or an
aeskeydb.bin
with them) and place them at the root or/files9
(you can find them online):
-
slot0x25KeyX.bin
- 7.x NCCH- Needed for decrypting Secure2 on Old3DS <7.0 or arm9loaderhax
- MD5:
817fd1bffba60f79cf8cdf19caf28923
-
slot0x18KeyX.bin
- New3DS 9.3 NCCH- Needed for decrypting Secure3 for some New3DS exclusive titles on Old3DS without arm9loaderhax
- MD5:
32ae55444f3feca802a6ed251a619bc7
-
slot0x1BKeyX.bin
- New3DS 9.6 NCCH- Needed for decrypting Secure4 for some New3DS exclusive titles in every environment
- MD5:
79cd40405d0f5417ae73a064318cbf0d
- Place your roms in a folder.
- Use one of the
ncchinfo_gen
scripts to generate a file calledncchinfo.bin
. For example:
# generate XORpads for all parts
python2 ncchinfo_gen.py game1.3ds game2.cci
# generate XORpads for just ExHeader and ExeFS
python2 ncchinfo_gen_exh.py *.3ds
- Place
ncchinfo.bin
in/files9
on your 3DS SD card. - Enter Decrypt9 using one of the various entry points.
- Choose "XORpad Generator Options".
- Choose "NCCH Padgen".
- Wait for the process to finish.
- Your XORpads will now be in
/files9
and are usable on a computer.
/Decrypt9/Decrypt9.log
can contain errors that might have happened generating.
- More will be added here...