WAD
Eine WAD (Wii Archive Data) ist ein verschlüsselter Container, der Titel für die Nintendo Wii beinhaltet - darunter Kanäle, IOS und Systemmenüs. WADs können mit einem WAD-Installer installiert werden - wenn es sich dabei um Kanäle handelt, tauchen diese im Wii-Menü auf (sollten diese keine versteckte Kanäle sein, wie der EULA-Kanal).
Struktur
Header
| Start | Ende | Länge | Beschreibung |
|---|---|---|---|
| 0x0000 | 0x0003 | 4 | Header-Größe (immer 0x0020) |
| 0x0004 | 0x0005 | 2 | WAD-Typ: Is für installierbare WADs, ib für Boot2, Bk für Backup-WADs
|
| 0x0006 | 0x0007 | 2 | WAD-Version (immer 0) |
| 0x0008 | 0x000B | 4 | Größe der Zertifikatskette |
| 0x000C | 0x000F | 4 | Größe der Certificate Revocation List (immer 0) |
| 0x0010 | 0x0013 | 4 | Ticket-Größe (ohne Zertifikate) |
| 0x0014 | 0x0017 | 4 | TMD-Größe (ohne Zertifikate) |
| 0x0018 | 0x001B | 4 | Daten-Größe der verschlüsselten APP-Daten |
| 0x001C | 0x001F | 4 | Footer-Größe |
Körper
Die Sektionen im Körper der WAD sind in der gleichen Reihenfolge angeordnet wie im Header. Jeder Block (Header, Sektionen) ist an 0x40 Bytes ausgerichtet. Demzufolge ist der Körper so angeordnet:
- Zertifikatskette
- Certificate Revocation List (nie vorhanden)
- Ticket
- TMD
- Verschlüsselte APP-Dateien
- Footer
Dateien
Die Dateien im Körper sind verschlüsselt mit dem Title-Key (kann vom Ticket entschlüsselt werden), wobei der jeweilige Inhaltsindex als Initialisierungsvektor dient (die ersten zwei Bytes, die restlichen 14 sind mit Nullen aufgefüllt). Die SHA1-Summen der entschlüsselten Dateien muss mit den SHA1-Summen aus der TMD übereinstimmen.
Die Reihenfolge ist dieselbe wie in der TMD, und jede Datei für sich ist auf 0x40 Bytes aufgefüllt. Größe und SHA1-Summe in der TMD zählen dabei nur die echten Daten, nicht das Padding.
Der Footer ("Meta") ist ein optionaler, unverschlüsselter Time-/Buildstamp. Bei WADs auf Update-Partitionen ist er 64 Byte groß und enthält den Namen des Titels mit Zeitstempel im Format JJMMTTHHMM, ab 0x2C zwei Versionsbytes und ab 0x30 den Benutzer, der den Build angestoßen hat:
0000 66 69 72 6d 77 61 72 65 2e 36 34 2e 31 30 30 37 firmware.64.1007 0010 32 36 30 37 30 39 00 00 00 00 00 00 00 00 00 00 260709.......... 0020 00 00 00 00 00 00 00 00 00 00 00 00 01 02 00 00 ................ 0030 61 64 6d 69 6e 40 46 57 50 55 42 4c 49 53 48 00 admin@FWPUBLISH.
Installiert werden Footer nach /meta.
WADs für ES_ImportBoot
Daneben gibt es eine zweite Kopfform, die IOS beim Aufruf von ES_ImportBoot erwartet. Sie hat keine eigene Kennung.
| Start | Ende | Länge in Byte | Beschreibung |
|---|---|---|---|
| 0x0000 | 0x0003 | 4 | Header-Größe (immer 0x0020) |
| 0x0004 | 0x0007 | 4 | Offset der Inhalte |
| 0x0008 | 0x000B | 4 | Größe der Zertifikatskette |
| 0x000C | 0x000F | 4 | Ticket-Größe |
| 0x0010 | 0x0013 | 4 | TMD-Größe |
| 0x0014 | 0x0017 | 4 | Größe des Footers |
| 0x0018 | 0x001B | 4 | Inhalts-ID des Footers |
| 0x001C | 0x001F | 4 | Größe der Certificate Revocation List |
Der Körper enthält Zertifikatskette, Ticket, TMD und Footer direkt ohne Padding hintereinander.
Backup-WADs
WADs vom Typ Bk werden vom Wii-Systemmenü erstellt, wenn Kanäle und Speicherdaten auf die SD-Karte abgelegt werden (als content.bin).