Ticket
Tickets are found in many encrypted files used by the Wii (e.g. WAD Files or Wii Discs). Tickets for NAND titles are stored in /ticket, while tickets for discs are stored on the disc itself. Tickets contain the encrypted AES "title key" and the Title ID of the data and are signed by a certificate from a certificate chain (which usually is the same for all titles and stored somewhere on the NAND). So far only tickets with RSA-2048 signatures have been seen. Discs will only work with those signatures because the size of partition ticket is always 0x2a4.
While all Wii titles are available on NUS, they are encrypted with a title key found in the ticket. For system titles and certain official channels (such as the Internet Channel), the ticket is also available on NUS - all other titles require a console-specific ticket, which is what is purchased with the Wii Shop Channel. Deleting a title using the data management feature of the System Menu leaves the ticket intact; this is responsible for allowing software to be redownloaded. However, tools such as AnyTitle Deleter delete tickets when they delete titles, which removes all traces of the title.
File structure
Signed blob header
Absolute start | Absolute end | Length | Description |
---|---|---|---|
0x0000 | 0x0003 | 0x04 | Signature type (always 0x10001 for RSA-2048) |
0x0004 | 0x0103 | 0x100 | Signature by a certificate's key |
0x0104 | 0x013F | 0x3C | Padding module 64 |
v0 ticket
This part of the ticket is included in both v0 and v1 tickets.
Absolute start | Absolute end | Length | Description |
---|---|---|---|
0x0140 | 0x017F | 0x40 | Signature issuer |
0x0180 | 0x01BB | 0x3C | ECDH data, used to generate one-time key during install of console specific titles |
0x01BC | 0x01BC | 0x01 | Ticket format version |
0x01BD | 0x01BE | 0x02 | Reserved |
0x01BF | 0x01CE | 0x10 | Title Key, encrypted by Common Key |
0x01CF | 0x01CF | 0x01 | Unknown |
0x01D0 | 0x01D7 | 0x08 | ticket_id (used as IV for title key decryption of console specific titles) |
0x01D8 | 0x01DB | 0x04 | Console ID (NG ID in console specific titles) |
0x01DC | 0x01E3 | 0x08 | Title ID / Initialization Vector (IV) used for AES-CBC encryption |
0x01E4 | 0x01E5 | 0x02 | Unknown, mostly 0xFFFF |
0x01E6 | 0x01E7 | 0x02 | Ticket title version |
0x01E8 | 0x01EB | 0x04 | Permitted Titles Mask |
0x01EC | 0x01EF | 0x04 | Permit mask. The current disc title is ANDed with the inverse of this mask to see if the result matches the Permitted Titles Mask. |
0x01F0 | 0x01F0 | 0x01 | Title Export allowed using PRNG key (1 = allowed, 0 = not allowed) |
0x01F1 | 0x01F1 | 0x01 | Common Key index (2 = Wii U Wii mode, 1 = Korean Common key, 0 = "normal" Common key) |
0x01F2 | 0x0221 | 0x30 | Unknown. Is all 0 for non-VC, for VC, all 0 except last byte is 1. |
0x0222 | 0x0261 | 0x40 | Content access permissions (one bit for each content) |
0x0262 | 0x0263 | 0x02 | Padding (Always 0) |
0x0264 | 0x0267 | 0x04 | Limit type (0 = disable, 1 = time limit (minutes), 3 = disable, 4 = launch count limit) |
0x0268 | 0x026B | 0x04 | Maximum usage, depending on limit type |
0x026C | 0x02A3 | 0x38 | 7 more ccLimit structs as above ({int type, max}) |
To get the title key decrypt the 16 bytes at offset 0x1bf with the Common Key using the Title ID (offset 0x1dc) as the initialization vector (the last 8 bytes of the IV should be zero).
v1 ticket
This part is only present in v1 tickets (stored as .tv1 files in the NAND), which are only supported in versions of IOS56 and above bundled with 4.2 or newer. All offsets are relative to the beginning of the v0 ticket.
Ticket header
Absolute start | Absolute end | Length | Description |
---|---|---|---|
0x02A4 | 0x02A5 | 2 | Version of the v1 ticket header |
0x02A6 | 0x02A7 | 2 | Size of the v1 ticket header |
0x02A8 | 0x02AB | 4 | Size of the v1 ticket (0x14?) |
0x02AC | 0x02AF | 4 | Offset to the section headers |
0x02B0 | 0x02B1 | 2 | Number of section headers |
0x02B2 | 0x02B3 | 2 | Size of each section header (0x14?) |
0x02B4 | 0x02B7 | 4 | Miscellaneous flags |
Section header
Start | End | Length | Description |
---|---|---|---|
0x00 | 0x03 | 4 | Offset to the records |
0x04 | 0x07 | 4 | Number of records |
0x08 | 0x0B | 4 | Size of each record in this section |
0x0C | 0x0F | 4 | Size of the section |
0x10 | 0x11 | 2 | Section type |
0x12 | 0x13 | 2 | Miscellaneous flags |