Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

NDecrypt 3DS: Difference between revisions

From GameBrew
No edit summary
No edit summary
Line 2: Line 2:
|title=NDecrypt
|title=NDecrypt
|image=NDecrypt.jpg
|image=NDecrypt.jpg
|description=Cartridge encrypt/decrypt
|description=Cartridge encrypt/decrypt.
|author=SabreTools
|author=SabreTools
|lastupdated=2020/12/18
|lastupdated=2020/12/18
Line 8: Line 8:
|version=0.2.2
|version=0.2.2
|license=Mixed
|license=Mixed
|download=https://dlhb.gamebrew.org/3dshomebrew/NDecrypt.rar
|download=https://dlhb.gamebrew.org/3dshomebrews/ndecrypt.7z
|website=https://github.com/SabreTools/NDecrypt
|website=https://github.com/SabreTools/NDecrypt
|source=https://github.com/SabreTools/NDecrypt
|source=https://github.com/SabreTools/NDecrypt
}}
}}
<youtube>iL5R83zxXpU</youtube>
NDecrypt is a tool that allows you to encrypt and decrypt your personally dumped NDS and N3DS roms with minimal hassle. The only caveat right now is that you need a <code>keys.bin</code> file for your personally obtained encryption keys.
 
== NDecrypt ==
 
A simple tool for simple people.
 
== What is this? ==


This is a code port of 3 different programs:
This is a code port of 3 different programs:
* <code>3ds_encrypt.py</code>
* <code>3ds_encrypt.py</code>
* <code>3ds_decrypt.py</code>
* <code>3ds_decrypt.py</code>
* <code>woodsec</code> (part of [https://github.com/TuxSH/wooddumper wooddumper])
* <code>woodsec</code> (part of [https://github.com/TuxSH/wooddumper wooddumper])


== No really, what is this? ==
==User guide==
===How to use===
'''Note:''' This overwrites the input files, so make backups if you're working on your original, personal dumps.


This tool allows you to encrypt and decrypt your personally dumped NDS and N3DS roms with minimal hassle. The only caveat right now is that you need a <code>keys.bin</code> file for your personally obtained encryption keys.
NDecrypt.exe <operation> [flags] <path> ...
Possible values for <operation>:
e, encrypt - Encrypt the input files
d, decrypt - Decrypt the input files
Possible values for [flags] (one or more can be used):
-c, --citra          - Enable using aes_keys.txt instead of keys.bin
-dev, --development  - Enable using development keys, if available
-f, --force          - Force operation by avoiding sanity checks
-h, --hash            - Output size and hashes to a companion file
-k, --keyfile <path> - Path to keys.bin or aes_keys.txt
<path> can be any file or folder that contains uncompressed items.
More than one path can be specified at a time.


== So how do I use this? ==
Mixed folders or inputs are also accepted, you can decrypt or encrypt multiple files, regardless of their type.  
 
NDecrypt.exe <operation> [flags] <path> ...
 
Possible values for <operation>: e, encrypt - Encrypt the input files d, decrypt - Decrypt the input files
 
Possible values for [flags] (one or more can be used): -dev, --development - Enable using development keys, if available -f, --force - Force operation by avoiding sanity checks
 
<path> can be any file or folder that contains uncompressed items. More than one path can be specified at a time.
 
'''Note:''' This overwrites the input files, so make backups if you're working on your original, personal dumps.


'''Note:''' Mixed folders or inputs are also accepted, you can decrypt or encrypt multiple files, regardless of their type. This being said, you can only do encrypt OR decrypt at one time.
This being said, you can only do encrypt or decrypt at one time.


== I feel like something is missing... ==
===keys.bin===
This is used only for Nintendo 3DS and New 3DS files. You need the 9 16-bit keys in little endian format (most common extraction methods produce big endian, so keep that in mind).  


You are! In fact, you may be asking, &quot;Hey, what was that <code>keys.bin</code> you mentioned??&quot;. I'm glad you asked. It's used only for Nintendo 3DS and New 3DS files. Since some people don't like reading code, you need the 9 16-bit keys in little endian format (most common extraction methods produce big endian, so keep that in mind). It's recommended that you fill with 0x00 if you don't have access to a particular value so it doesn't mess up the read. They need to be in the following order:
It's recommended that you fill with 0x00 if you don't have access to a particular value so it doesn't mess up the read. They need to be in the following order:


* Hardware constant
* Hardware constant
Line 58: Line 58:
* DevKeyX0x2C
* DevKeyX0x2C


The last 4 are only required if you use the <code>-dev</code> flag. Once again, don't ask for these, please. If you're missing a required key, then things won't work. Don't blame me, blame society. Or something. And yes, I'll fix this being required across the board at some point.
The last 4 are only required if you use the <code>-dev</code> flag. Once again, don't ask for these, please. If you're missing a required key, then things won't work.


== But does it work? ==
===Compatibility rates===
Here's a list of the supported sets and their current compatibility percentages with woodsec and the Python scripts (as of 2020-12-19):


As much as I'd like to think that this program is entirely without flaws, numbers need to speak for themselves sometimes. Here's a list of the supported sets and their current compatibility percentages with woodsec and the Python scripts (as of 2020-12-19):
* Nintendo DS - >99% compatible (Both encryption and decryption).
* Nintendo DSi - 100% compatible (Both encryption and decryption).
* Nintendo 3DS - 100% compatible (Both encryption and decryption).
* Nintendo New 3DS - 100% compatible (Both encryption and decryption).


* '''Nintendo DS''' - &gt;99% compatible (Both encryption and decryption)
Please note the above numbers are based on the current, documented values.
* '''Nintendo DSi''' - 100% compatible (Both encryption and decryption)
* '''Nintendo 3DS''' - 100% compatible (Both encryption and decryption)
* '''Nintendo New 3DS''' - 100% compatible (Both encryption and decryption)


Please note the above numbers are based on the current, documented values. The notable exceptions to this tend to be unlicensed carts which may be dumped incorrectly or have odd information stored in their secure area.
The notable exceptions to this tend to be unlicensed carts which may be dumped incorrectly or have odd information stored in their secure area.


== Anything else? ==
==Credits==
Thanks to the developers of the original programs for doing the actual hard work to figure things out.


I'd like to thank the developers of the original programs for doing the actual hard work to figure things out. I'd also like to thank everyone who helped to test this against the original programs and made code suggestions.
Also thanks to everyone who helped to test this against the original programs and made code suggestions.


Unofficially, this is entirely, 100% FOSS, no strings attached. I keep forgetting what license that is.
Disclaimer: This program is only for use with personally dumped files and keys and is not meant for enabling illegal activity.  


== Disclaimer ==
==External links==
* GitHub - https://github.com/SabreTools/NDecrypt


This program is '''ONLY''' for use with personally dumped files and keys and is not meant for enabling illegal activity. I do not condone using this program for anything other than personal use and research. If this program is used for anything other than that, I cannot be held liable for anything that happens.
[[Category:3DS homebrew applications]]
[[Category:PC utilities for 3DS homebrew]]

Revision as of 02:35, 19 March 2022

NDecrypt
File:NDecrypt.jpg
General
AuthorSabreTools
TypePC Utilities
Version0.2.2
LicenseMixed
Last Updated2020/12/18
Links
Download
Website
Source

NDecrypt is a tool that allows you to encrypt and decrypt your personally dumped NDS and N3DS roms with minimal hassle. The only caveat right now is that you need a keys.bin file for your personally obtained encryption keys.

This is a code port of 3 different programs:

  • 3ds_encrypt.py
  • 3ds_decrypt.py
  • woodsec (part of wooddumper)

User guide

How to use

Note: This overwrites the input files, so make backups if you're working on your original, personal dumps.

NDecrypt.exe <operation> [flags] <path> ...

Possible values for <operation>:
e, encrypt - Encrypt the input files
d, decrypt - Decrypt the input files

Possible values for [flags] (one or more can be used):
-c, --citra           - Enable using aes_keys.txt instead of keys.bin
-dev, --development   - Enable using development keys, if available
-f, --force           - Force operation by avoiding sanity checks
-h, --hash            - Output size and hashes to a companion file
-k, --keyfile <path>  - Path to keys.bin or aes_keys.txt

<path> can be any file or folder that contains uncompressed items.
More than one path can be specified at a time.

Mixed folders or inputs are also accepted, you can decrypt or encrypt multiple files, regardless of their type.

This being said, you can only do encrypt or decrypt at one time.

keys.bin

This is used only for Nintendo 3DS and New 3DS files. You need the 9 16-bit keys in little endian format (most common extraction methods produce big endian, so keep that in mind).

It's recommended that you fill with 0x00 if you don't have access to a particular value so it doesn't mess up the read. They need to be in the following order:

  • Hardware constant
  • KeyX0x18
  • KeyX0x1B
  • KeyX0x25
  • KeyX0x2C
  • DevKeyX0x18
  • DevKeyX0x1B
  • DevKeyX0x25
  • DevKeyX0x2C

The last 4 are only required if you use the -dev flag. Once again, don't ask for these, please. If you're missing a required key, then things won't work.

Compatibility rates

Here's a list of the supported sets and their current compatibility percentages with woodsec and the Python scripts (as of 2020-12-19):

  • Nintendo DS - >99% compatible (Both encryption and decryption).
  • Nintendo DSi - 100% compatible (Both encryption and decryption).
  • Nintendo 3DS - 100% compatible (Both encryption and decryption).
  • Nintendo New 3DS - 100% compatible (Both encryption and decryption).

Please note the above numbers are based on the current, documented values.

The notable exceptions to this tend to be unlicensed carts which may be dumped incorrectly or have odd information stored in their secure area.

Credits

Thanks to the developers of the original programs for doing the actual hard work to figure things out.

Also thanks to everyone who helped to test this against the original programs and made code suggestions.

Disclaimer: This program is only for use with personally dumped files and keys and is not meant for enabling illegal activity.

External links

Advertising: