Line 13: |
Line 13: |
| * and finally followed by a read-only filesystem (RomFS). | | * and finally followed by a read-only filesystem (RomFS). |
| | | |
− | The extended header contains additional information regarding access control. | + | The extended header contains additional information regarding access control. |
| The plain binary region is an area specifically stored in plaintext, mostly containing SDK library strings for identification. | | The plain binary region is an area specifically stored in plaintext, mostly containing SDK library strings for identification. |
| | | |
− | The extended header, the ExeFS and the RomFS are encrypted using 128-bit AES CTR. | + | The extended header, the ExeFS and the RomFS are encrypted using 128-bit AES CTR. |
| | | |
| + | By default encrypted regions are compressed with a LZ77 variant, then encrypted. The spec allows for both unencrypted and uncompressed regions to exist. System titles expect a fixed system key. |
| | | |
| === NCCH Header === | | === NCCH Header === |
Line 84: |
Line 85: |
| | 0x188 | | | 0x188 |
| | 8 | | | 8 |
− | | Flags | + | | Flags: byte[5]-byte[7] indicate content type ( system update, application, ... ) size of media unit ( 512*2^byte[6] ) and encryption. |
| |- | | |- |
| | 0x190 | | | 0x190 |
Line 200: |
Line 201: |
| | | |
| A tool for parsing this format is available [http://github.com/neimod/ctr/tree/master/ctrtool here] | | A tool for parsing this format is available [http://github.com/neimod/ctr/tree/master/ctrtool here] |
| + | |
| + | ==== Example dependency list from the extended header ==== |
| + | |
| + | 00850 41 50 54 3A 55 00 00 00 24 68 69 6F 46 49 4F 00 APT:U...$hioFIO. |
| + | 00860 24 68 6F 73 74 69 6F 30 24 68 6F 73 74 69 6F 31 $hostio0$hostio1 |
| + | 00870 61 63 3A 75 00 00 00 00 62 6F 73 73 3A 55 00 00 ac:u....boss:U.. |
| + | 00880 63 61 6D 3A 75 00 00 00 63 65 63 64 3A 75 00 00 cam:u...cecd:u.. |
| + | 00890 63 66 67 3A 75 00 00 00 64 6C 70 3A 46 4B 43 4C cfg:u...dlp:FKCL |
| + | 008A0 64 6C 70 3A 53 52 56 52 64 73 70 3A 3A 44 53 50 dlp:SRVRdsp::DSP |
| + | 008B0 66 72 64 3A 75 00 00 00 66 73 3A 55 53 45 52 00 frd:u...fs:USER. |
| + | 008C0 67 73 70 3A 3A 47 70 75 68 69 64 3A 55 53 45 52 gsp::Gpuhid:USER |
| + | 008D0 68 74 74 70 3A 43 00 00 6D 69 63 3A 75 00 00 00 http:C..mic:u... |
| + | 008E0 6E 64 6D 3A 75 00 00 00 6E 65 77 73 3A 75 00 00 ndm:u...news:u.. |
| + | 008F0 6E 77 6D 3A 3A 55 44 53 70 74 6D 3A 75 00 00 00 nwm::UDSptm:u... |
| + | 00900 70 78 69 3A 64 65 76 00 73 6F 63 3A 55 00 00 00 pxi:dev.soc:U... |
| + | 00910 73 73 6C 3A 43 00 00 00 79 32 72 3A 75 00 00 00 ssl:C...y2r:u... |
| + | 00920 69 72 3A 55 53 45 52 00 6C 64 72 3A 72 6F 00 00 ir:USER.ldr:ro.. |
| + | 00930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ |
| + | 00940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ |
| + | 00950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ |
| + | 00960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ |
| + | ... ... |
| + | 009D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
| + | 009E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ |
| + | 009F0 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 02 . ............. |
| + | 00A00 5B 53 44 4B 2B 4E 49 4E 54 45 4E 44 4F 3A 43 54 [SDK+NINTENDO:CT |