Difference between revisions of "DSiWare Exports"

From 3dbrew
Jump to navigation Jump to search
Line 48: Line 48:
 
| Data for the 4 content sections are stored here.
 
| Data for the 4 content sections are stored here.
 
| AES-CTR
 
| AES-CTR
 +
|}
 +
 +
=Header=
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x38
 +
| Unknown
 +
|-
 +
| 0x38
 +
| 0x8
 +
| TWL TitleID for the exported title.
 +
|-
 +
| 0x40
 +
| 0x60
 +
| ?
 +
|}
 +
 +
=Footer=
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0xD0
 +
| Hashes?
 +
|-
 +
| 0xD0
 +
| 0xE0
 +
| Normally all-zero?
 +
|-
 +
| 0x1B0
 +
| 0x20
 +
| SHA256 hash?
 +
|-
 +
| 0x1D0
 +
| 0x20
 +
| Normally all-zero?
 +
|-
 +
| 0x1F0
 +
| 0x3C
 +
| ECDSA signature over the previous data, signed by the AP cert?
 +
|-
 +
| 0x22C
 +
| 0x180
 +
| ECDSA "APXXXXXXXXXXXXXXXX" cert signed by the [[CTCert]], where X is random ASCII hex data.
 +
|-
 +
| 0x3AC
 +
| 0x54
 +
| ECDSA certificate, the last 0x14-bytes here are all-zero.
 
|}
 
|}

Revision as of 16:26, 22 April 2013

The DSiWare exported from a 3DS is located at "sdmc:/Nintendo 3DS/<ID0>/<ID1>/Nintendo DSiWare". Filenames are same format as DSi: "<TitleID-Low>.bin". The below sizes include the 0x20-byte block metadata.

DSiWare exported from 3DS use keyslots initialized by movable.sed.

Block Metadata

Offset Size Description
0x0 0x10 AES MAC
0x10 0x10 CTR for AES-CTR / IV for AES-CBC, generated by the RNG.

Each section begins with the actual encrypted data, followed by this block metadata.

File Structure

Offset Size Description Algorithm Type
0x0 0x4020 Banner section AES-CBC
0x4020 0xC0 Header section AES-CBC
0x40E0 0x420 Footer section AES-CBC
0x4500 Data for the 4 content sections are stored here. AES-CTR

Header

Offset Size Description
0x0 0x38 Unknown
0x38 0x8 TWL TitleID for the exported title.
0x40 0x60 ?

Footer

Offset Size Description
0x0 0xD0 Hashes?
0xD0 0xE0 Normally all-zero?
0x1B0 0x20 SHA256 hash?
0x1D0 0x20 Normally all-zero?
0x1F0 0x3C ECDSA signature over the previous data, signed by the AP cert?
0x22C 0x180 ECDSA "APXXXXXXXXXXXXXXXX" cert signed by the CTCert, where X is random ASCII hex data.
0x3AC 0x54 ECDSA certificate, the last 0x14-bytes here are all-zero.