Difference between revisions of "Content.bin file structure"

From WiiBrew
Jump to navigation Jump to search
m (fixed link to parse-channel.c)
(Redirecting to Content.bin#File structure)
 
(6 intermediate revisions by 5 users not shown)
Line 1: Line 1:
These are the details of the [[Content.bin]] file structure.
+
#REDIRECT [[Content.bin#File_structure]]
 
 
VC games and Wii channels, when saved to a SD card, will be stored in a file named "private/wii/title/XXXX/content.bin", where XXXX is the four-character name of the game/channel.
 
 
 
A program to help parse and analyze the structure of content.bin files: [[parse-channel.c]]. '''Put it in the same directory as a compiled version of [[Segher's Wii.git]] tools, since it depends on them.'''
 
 
 
=== General layout ===
 
 
 
The general layout of this file is as follows. Most of the data here is sketchy, at best.
 
 
 
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em;"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ccc;" | '''Length'''
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dcc;" | '''Description'''
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0x0640
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Part A: Encrypted header
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | variable, padded to 64-byte boundary
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Part B: Encrypted banner
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0x70, padded to 64-byte boundary
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Part C: Cleartext "Bk" header
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0x1E4 + num_contents*0x24, padded to 64-byte boundary
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Part D: Cleartext TMD block, including content_records for the following files
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | num_contents*variable, padded to 64-byte boundary
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Part E: Encrypted data contents
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0x340
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Part F: Cleartext certificates
 
|}
 
 
 
===Part A: Encrypted header===
 
The header is encrypted by the SD key and SD IV. When decrypted, it contains the following structure:
 
(* means the field is discussed below)
 
 
 
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em;"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #cdc;" | '''Start'''
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ccd;" | '''End'''
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ccc;" | '''Length'''
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dcc;" | '''Description'''
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x000
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x007
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 8
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Title ID (which is 00 01 00 01 followed by the four-character code)
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x008
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00B
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Size of part B
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x00C
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x01B
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 16
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | MD5 Hash of header
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x01C
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x02B
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 16
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | unknown_1 (crypto usage, md5 hash of something?)
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x02C
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x02F
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | * unknown_2
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x030
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x037
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 8
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | * Title-ID-reference_1
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x038
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x03F
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 8
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | * Title-ID-reference_2
 
|- style="background-color: #ddd;"
 
| |
 
| |
 
| |
 
| | The part below is identical to the start of [[opening.bnr]]
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x040
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x07F
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 64
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | * Zeroes_1
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x080
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x09B
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 28
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | * IMET data
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x09C
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x0EF
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 42
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Channel name in Unicode, padded with 00 (Japanse version -- can be empty).
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x0F0
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x143
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 42
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Channel name in Unicode, padded with 00 (English version).
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x144
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x197
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 42
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Channel name in Unicode, padded with 00 (German version).
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x198
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x1EB
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 42
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Channel name in Unicode, padded with 00 (French version).
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x1EC
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x23F
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 42
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Channel name in Unicode, padded with 00 (Spanish version).
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x240
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x293
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 42
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Channel name in Unicode, padded with 00 (Italian version).
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x294
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x2E7
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 42
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Channel name in Unicode, padded with 00 (Dutch version).
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x2E8
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x63F
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0x358
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | * Padding (normally zero)
 
|}
 
 
 
* unknown_2
 
This value looks almost like the four-letter code of a channel/game. I have found HADP on most files, but HAGP on Super Mario/NES and '\0UPD' (that is, the first byte is 00, then UPD) on two N64-games.
 
 
 
* Title-ID-reference_1 and Title-ID-reference_2
 
These two looks like two Title-ID:s. On most files I have analyzed they are: 00 01 00 08 HALP and 00 01 00 08 HAKP (this is from a PAL Wii). However, on Super Mario/NES I found 00 01 00 02 HAFP and 00 01 00 02 HAGA.
 
A guess is that they might stipulate some kind of dependencies on system files.
 
 
 
* Zeroes_1
 
If the guess about depencencies is correct, then this might be a padding field which is zero only if not more than two dependencies are needed.
 
 
 
* IMET data
 
The IMET data follows a quite strict format, with a few changes between files. I don't have any good idea what those changes represent. The only major difference is found i Metroid Prime 3 Preview, which have everyting zero except the "IMET" header. The values indicated below is for all other files I've studied, which was non-zero.
 
 
 
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em;"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #cdc;" | '''Start'''
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ccd;" | '''End'''
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ccc;" | '''Length'''
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dcc;" | '''Description'''
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x000
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x003
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | IMET header "IMET"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x004
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00B
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 8
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Fixed value, always 00 00 06 00 00 00 00 03.
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x00C
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x017
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 12
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Three 32-bit numbers (sizes?), typically in the range of 0x84BC to 0x56318.
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x018
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x01B
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Flags? This is normally just zero, but Everybody Votes has 0050 0000 and Mii Contest has 0060 4100.
 
|}
 
 
 
* Padding (normally zero)
 
For Metroid Prime 3 Preview, this field was not completely zero. The three bytes with positions 0x313, 0x367 and 0x3BB was 0x20 instead of 0. My guess is that this doesn't matter, but then again, it could have something to do with the weird IMET data of MP3preview.
 
 
 
===Part B: Encrypted banner===
 
 
 
This part is is also encrypted by the SD key and SD IV. It contains a small header followed by LZ77 compressed data. The compressed data is presumably the opening banner (the animated logo/channel preview in the channel selector), and it is similar to at least a part of the file [[opening.bnr]].
 
 
 
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em;"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #cdc;" | '''Start'''
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ccd;" | '''End'''
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ccc;" | '''Length'''
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dcc;" | '''Description'''
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x000
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x003
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | IMD5 header "IMD5"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x004
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x007
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | * Size.
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x008
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00F
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 8
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Zeroes
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x010
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x01F
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 16
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Crypto usage (?). Could be an MD5 sum.
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x020
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x023
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | LZ77 tag "LZ77"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x024
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x027
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | * Unknown (flags?).
 
|}
 
 
 
 
 
* Size.
 
This value is the size of Part B (as stored in Part A), minus 32 bytes. Another way to see this is as the size from (and including) the LZ77 header.
 
 
 
* Unknown (flags?).
 
There is some kind of pattern to this field, but it's not obvious what it is. The first byte always seem to be 0x10. The last byte is almost always 0x00, but has been seen to be 0x01 in Internet Channel and Mii Contest. This could indicate some kind of flags.
 
 
 
: The remaining part is compressed using a LZ77 like algorithm (just like the Nintendo DS). Here ([[Content.bin Part B decompresser|local]] & [http://pastebin.com/f43e9b2cc mirror]) is a little snippet of code to decompress it (uses XXXX_02_gameinfo.bin files as output by [[User:Magicus|Magicus]] [[parse-channel.c]], downloadable here). This code is NOT fully functional, because sometimes the algorithm request data not present in the buffer, and fills it with 'X' instead. Maybe someone can fix it, I think it's not difficult ;) [[User:Arcnor|Arcnor]] 21:40, 27 February 2008 (GMT)
 
:: The latest version of [[parse-channel.c]] now properly handles LZ77 compression. Thanks for the hint! [[User:Magicus|Magicus]] 10:23, 1 March 2008 (PST)
 
 
 
===Part C: Cleartext "Bk" header===
 
 
 
This part is not encrypted. It is similar to the Bk header found in savegames, but the contents only partially match.
 
The header could also be exactly 0x80 long; the size of 0x70 is a guess based on the first field being a size parameter.
 
 
 
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em;"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #cdc;" | '''Start'''
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ccd;" | '''End'''
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ccc;" | '''Length'''
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dcc;" | '''Description'''
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x000
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x003
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Size of this part (presumably; always 0x70)
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x004
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x007
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Magic word, always 0x42 0x6B 0x00 0x01 (Bk..)
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x008
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00B
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | NG-id
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x00C
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x015
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 10
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Always zero.
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x016
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x021
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 12
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Not yet analyzed, first byte is 0x03 or 0x02. On VCs, this always starts with 0x02 0xE0 and ends with 0x63 0x00.
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x022
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x06F
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0x4E
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Always zero.
 
|}
 
 
 
===Part D: Cleartext TMD block===
 
This part is not encrypted. It is well described on the [[Tmd_file_structure|TMD file format]] page. Some things to note:
 
* Only the tmd struct is included here, not the certificates.
 
* As described on the [[Tmd_file_structure|TMD file format]] page, after the main struct (with a size of 0x1E4), there follows an array of content_record structs.
 
* There is as many structs as the num_contents field in the tmd struct indicates. For VC, this seems to be always 7.
 
* The type and size file of the content_record is of special interest, since they describe part E.
 
* If type is 0x80 0x01, then the content is included in part E, and the size of the content is given by the size field.
 
* Otherwise, type will be 0x00 0x01, and the content is (presumably) shared between VCs and stored elsewere on the Wii.
 
 
 
===Part E: Encrypted data contents===
 
This part is encrypted. The encryption key is currently unknown. It might be unique to the Wii which saved the VC.
 
It consists of several separate "files", one for each of the contents with the 0x80 type flag in the TMD content_record, padded to 64-byte boundary.
 
 
 
: This part is probably the same for every Wii, but unique to each VC.  It's probably encrypted with the title key, stored in a ticket somewhere. [[User:Bushing|Bushing]] 03:42, 11 February 2008 (PST)
 
 
 
===Part F: Cleartext certificates===
 
This part is not encrypted. The exact details of this field is not yet analyzed, but it is likely related to the chain of certificates as described on the [[Tmd_file_structure|TMD file format]] page.
 

Latest revision as of 01:39, 26 October 2008