NCA: Difference between revisions

No edit summary
No edit summary
Line 1: Line 1:
Raw NCAs are encrypted.
The entire raw NCAs are encrypted.


The only known section which is not encrypted in the raw NCA is the logo section, when the NCA includes that section.
The only known area which is not encrypted in the raw NCA is the logo section, when the NCA includes that section.
 
=Header=
{| class="wikitable" border="1"
|-
! Offset
! Size
! Description
|-
| 0x0
| 0x100
| RSA-2048 signature over the 0x200-bytes starting at offset 0x200.
|-
| 0x100
| 0x100
| Unknown. All-zero in some NCAs, non-zero for others. Presumably a RSA signature?
|-
| 0x200
| 0x4
| Magicnum "NCA3"
|-
| 0x208
| 0x8?
| Size of the entire NCA.
|-
| 0x210
| 0x8
| titleID
|-
| 0x230
| 0x8
| Big-endian titleID.
|-
| 0x240
| 0x10*0x4(0x40)
| Table for each section, see below.
|-
| 0x280
| 0x20*0x4(0x80)
| Table of SHA256 hashes, over each 0x200-byte Section Header Block.
|}
 
The header is 0x400-bytes, at NCA+0.
 
==Section Table Entry==
{| class="wikitable" border="1"
|-
! Offset
! Size
! Description
|-
| 0x0
| 0x4
| Media offset
|-
| 0x4
| 0x4
| Media end-offset
|-
| 0x8
| 0x4
| Unknown
|-
| 0xC
| 0x4
| Unknown
|}
 
Entry size is 0x10-bytes.
 
Media offset is absoluteoffset/{mediasize}, where mediasize is hard-coded to 0x200.
 
=Section Header Block=
{| class="wikitable" border="1"
|-
! Offset
! Size
! Description
|-
| 0x0
| 0x1
| ?
|-
|-
| 0x1
| 0x1
| ?
|-
| 0x2
| 0x1
| ?
|-
| 0x3
| 0x1
| ?
|-
| 0x4
| 0x1
| Crypto type. 0 and >4 are invalid. 1 = none(plaintext from raw NCA). 2 = other crypto. 3 = regular crypto. 4 = unknown.
|-
| 0x5
| 0x1
| Padding?
|-
| 0x8
|
| Start of the fs-specific header data.
|}
 
The Section Header Block for each section is at absoluteoffset+0x400+(sectionid*0x200), where sectionid corresponds to the index used with the entry/hash tables.
 
The total size is 0x200-bytes.


==Logo section==
==Logo section==
Contains the raw FS for the logo FS, see [[NCA_Content_FS|here]] for mounted-FS contents.
This is a PFS0. See [[NCA_Content_FS|here]] for the mounted-FS logo contents.


==ExeFS section ==
This is a PFS0.
This is a PFS0.
See [[ExeFS|here]] for mounted-FS ExeFS contents.


=PFS0=
=PFS0=