Difference between revisions of "Nintendo DS Cart Whitelist"

From DSiBrew
Jump to navigation Jump to search
(→‎Header Structure: 0x04 is an RSA signature)
(→‎Basic File Structure: added basic info on NDHX and NDHI)
Line 1: Line 1:
 
The '''Nintendo DS Cart Whitelist''' is a system title (HNHA / 0003000f484e4841) on DSi and 3DS TWL_MODE that contains a list of whitelisted DS carts. Other carts can be loaded if they have a valid RSA signature, which is how newer DS games load on DSi systems.
 
The '''Nintendo DS Cart Whitelist''' is a system title (HNHA / 0003000f484e4841) on DSi and 3DS TWL_MODE that contains a list of whitelisted DS carts. Other carts can be loaded if they have a valid RSA signature, which is how newer DS games load on DSi systems.
  
== Basic File Structure ==
+
== Format ==
The file consists in one header, a list of titles and a footer. Note: this page only covers the initial versions of the whitelist. Later versions also have NDHX and NDHI sections and have footer differences.
+
Newer versions of the file contain 3 sections: NDHT, NDHX, and NDHI. Older versions only contain NDHT.
  
=== Header Structure ===
+
=== Header ===
 
The header is 136 bytes.
 
The header is 136 bytes.
 
{| class="wikitable"
 
{| class="wikitable"
Line 14: Line 14:
 
| 0x00
 
| 0x00
 
| 4
 
| 4
| An ID (NDHT)
+
| Section type (NDHT, NDHX, NDHI)
 
|-
 
|-
 
| 0x04
 
| 0x04
 
| 0x80
 
| 0x80
| RSA signature of the entire NDHT section below this point.
+
| RSA signature of the entire section below this point.
 
|-
 
|-
 
| 0x84
 
| 0x84
 
| 4
 
| 4
| Number of titles in NDHT section
+
| Number of entries
 
|}
 
|}
  
=== Title Structure ===
+
=== NDHT entry ===
A title is 48 bytes.
+
NDHT entries correspond to titles and are 48 bytes. The NDHT section is always first.
 +
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
Line 50: Line 51:
 
|}
 
|}
  
=== Footer Structure ===
+
=== NDHT footer ===
The footer is 24 bytes.
+
The NDHT footer is 24 bytes.
 
{| class="wikitable"
 
{| class="wikitable"
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
Line 60: Line 61:
 
| 0x00
 
| 0x00
 
| 24
 
| 24
 +
| Unknown
 +
|}
 +
 +
=== NDHX entry ===
 +
{| class="wikitable"
 +
|- style="background-color: #ddd;"
 +
! Start
 +
! Length
 +
! Description
 +
|-
 +
| 0x00
 +
| 0x1c
 +
| Unknown
 +
|}
 +
 +
=== NDHI entry ===
 +
{| class="wikitable"
 +
|- style="background-color: #ddd;"
 +
! Start
 +
! Length
 +
! Description
 +
|-
 +
| 0x00
 +
| 0x5c
 
| Unknown
 
| Unknown
 
|}
 
|}

Revision as of 05:45, 25 September 2022

The Nintendo DS Cart Whitelist is a system title (HNHA / 0003000f484e4841) on DSi and 3DS TWL_MODE that contains a list of whitelisted DS carts. Other carts can be loaded if they have a valid RSA signature, which is how newer DS games load on DSi systems.

Format

Newer versions of the file contain 3 sections: NDHT, NDHX, and NDHI. Older versions only contain NDHT.

Header

The header is 136 bytes.

Start Length Description
0x00 4 Section type (NDHT, NDHX, NDHI)
0x04 0x80 RSA signature of the entire section below this point.
0x84 4 Number of entries

NDHT entry

NDHT entries correspond to titles and are 48 bytes. The NDHT section is always first.

Start Length Description
0x00 4 ROM serial
0x04 4 ROM revision
0x08 20 The first SHA-1 sum
0x1C 20 The second SHA-1 sum

NDHT footer

The NDHT footer is 24 bytes.

Start Length Description
0x00 24 Unknown

NDHX entry

Start Length Description
0x00 0x1c Unknown

NDHI entry

Start Length Description
0x00 0x5c Unknown