In memory of Ben “bushing” Byer, who passed away on Monday, February 8th, 2016.

Changes

Jump to navigation Jump to search
17,686 bytes removed ,  23:11, 7 April 2009
rm ugly colors
Line 3: Line 3:  
== Disc Format ==
 
== Disc Format ==
 
   
 
   
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em;"
+
{| class="wikitable"
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | '''Start'''
+
! Start
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''Size'''
+
! Size
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | '''Name'''
+
! Name
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | '''Description'''
+
! Description
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x00000
+
| 0x00000
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 1024
+
| 1024
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | Header
+
| Header
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |  
+
|  
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x40000
+
| 0x40000
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 48
+
| 48
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | Partitions information
+
| Partitions information
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |  
+
|  
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x4E000
+
| 0x4E000
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 32
+
| 32
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | Region setting
+
| Region setting
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |  
+
|  
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x4FFFC
+
| 0x4FFFC
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
+
| 4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | Magic (0xC3F81A8E)
+
| Magic (0xC3F81A8E)
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |  
+
|  
 
|}
 
|}
 
   
 
   
Line 35: Line 35:  
The first 0x400 bytes are like the GameCube disc header format.
 
The first 0x400 bytes are like the GameCube disc header format.
 
   
 
   
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em;"
+
{| class="wikitable"
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | '''Start'''
+
! Start
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''Size'''
+
! Size
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | '''Name'''
+
! Name
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | '''Typical Value'''
+
! Typical Value
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | '''Description'''
+
! Description
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x000
+
| 0x000
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 1
+
| 1
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | Disc ID
+
| Disc ID
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" |  
+
|  
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | [[Wiidisc_IDs]]
+
| [[Wiidisc_IDs]]
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x001
+
| 0x001
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 2
+
| 2
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | Game code
+
| Game code
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" |  
+
|  
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |  
+
|  
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x003
+
| 0x003
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 1
+
| 1
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | Region code
+
| Region code
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" |  
+
|  
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | 'E' = USA | 'P' = PAL | 'J' = JAP | 'K' = KOR
+
| 'E' = USA | 'P' = PAL | 'J' = JAP | 'K' = KOR
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x004
+
| 0x004
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 2
+
| 2
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | Maker code
+
| Maker code
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" |  
+
|  
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |  
+
|  
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x006
+
| 0x006
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 1
+
| 1
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | Disc ID
+
| Disc ID
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" |  
+
|  
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |  
+
|  
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x007
+
| 0x007
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 1
+
| 1
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | Disc version
+
| Disc version
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" |  
+
|  
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |  
+
|  
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x008
+
| 0x008
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 1
+
| 1
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | Audio streaming
+
| Audio streaming
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" |  
+
|  
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |  
+
|  
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x009
+
| 0x009
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 1
+
| 1
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | Streaming buffer size
+
| Streaming buffer size
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" |  
+
|  
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |  
+
|  
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x00A
+
| 0x00A
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 14
+
| 14
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" |  
+
|  
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00
+
| 0x00
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | unused?
+
| unused?
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x18
+
| 0x18
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
+
| 4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | Magicword
+
| Magicword
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x5D1C9EA3
+
| 0x5D1C9EA3
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |  
+
|  
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x020
+
| 0x020
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 64
+
| 64
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | Game title
+
| Game title
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" |  
+
|  
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | though most docs claim it to be 0x400 the Wii only reads 0x44 which will be padded by the DI driver to 0x60
+
| though most docs claim it to be 0x400 the Wii only reads 0x44 which will be padded by the DI driver to 0x60
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x060
+
| 0x060
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 1
+
| 1
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" |  
+
|  
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" |  
+
|  
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Disable hash verification and make all disc reads fail even before they reach the DVD drive.
+
| Disable hash verification and make all disc reads fail even before they reach the DVD drive.
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x061
+
| 0x061
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 1
+
| 1
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" |  
+
|  
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" |  
+
|  
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Disable disc encryption and h3 hash table loading and verification (which effectively also makes all disc reads fail because the h2 hashes won't be able to verify against "something" that will be in the memory of the h3 hash table. none of these two bytes will allow unsigned code)
+
| Disable disc encryption and h3 hash table loading and verification (which effectively also makes all disc reads fail because the h2 hashes won't be able to verify against "something" that will be in the memory of the h3 hash table. none of these two bytes will allow unsigned code)
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x080
+
| 0x080
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 380
+
| 380
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | Padding
+
| Padding
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00
+
| 0x00
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |  
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |  
 
|}
 
|}
Line 132: Line 132:  
The Wii disc format uses partitions, mostly one is used for updates (the 1st) and the 2nd for the game.
 
The Wii disc format uses partitions, mostly one is used for updates (the 1st) and the 2nd for the game.
 
   
 
   
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em;"
+
{| class="wikitable"
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | '''Start'''
+
! Start
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''Size'''
+
! Size
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | '''Description'''
+
! Description
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x40000
+
| 0x40000
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
+
| 4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Total partitions in the disc
+
| Total partitions in the disc
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x40004
+
| 0x40004
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
+
| 4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Partition info table offset, Address is (value << 2)
+
| Partition info table offset, Address is (value << 2)
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x40008
+
| 0x40008
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
+
| 4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Total 2nd partitions in the disc (optional)
+
| Total 2nd partitions in the disc (optional)
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x4000C
+
| 0x4000C
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
+
| 4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Partition info table offset, Address is (value << 2)
+
| Partition info table offset, Address is (value << 2)
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x40010
+
| 0x40010
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
+
| 4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Total 3rd partitions in the disc (optional)
+
| Total 3rd partitions in the disc (optional)
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x40014
+
| 0x40014
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
+
| 4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Partition info table offset, Address is (value << 2)
+
| Partition info table offset, Address is (value << 2)
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x40018
+
| 0x40018
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
+
| 4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Total 4th partitions in the disc (optional)
+
| Total 4th partitions in the disc (optional)
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x4001C
+
| 0x4001C
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
+
| 4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Partition info table offset, Address is (value << 2)
+
| Partition info table offset, Address is (value << 2)
 
|}
 
|}
    
==== Partition table entry ====
 
==== Partition table entry ====
   −
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em;"
+
{| class="wikitable"
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | '''Start'''
+
! Start
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''Size'''
+
! Size
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | '''Description'''
+
! Description
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x0
+
| 0x0
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
+
| 4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Partition offset, Address is (value << 2)
+
| Partition offset, Address is (value << 2)
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x4
+
| 0x4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
+
| 4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Type: 0 for a Data partition, 1 for an Update partition, 2 for a Channel installer. The demonstration VC titles on Super Smash Brothers Brawl use the Ascii title ID.
+
| Type: 0 for a Data partition, 1 for an Update partition, 2 for a Channel installer. The demonstration VC titles on Super Smash Brothers Brawl use the Ascii title ID.
 
|}
 
|}
   Line 194: Line 194:  
=== Region setting ===
 
=== Region setting ===
 
   
 
   
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em;"
+
{| class="wikitable"
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | '''Start'''
+
! Start
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''Size'''
+
! Size
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | '''Name'''
+
! Name
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | '''Description'''
+
! Description
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x4E000
+
| 0x4E000
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
+
| 4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | Region byte
+
| Region byte
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | 0 = JAP, 1 = USA, 2 = EUR, 4 = KOR
+
| 0 = JAP, 1 = USA, 2 = EUR, 4 = KOR
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x4E010
+
| 0x4E010
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 1
+
| 1
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | Region JAP byte
+
| Region JAP byte
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Set to zero if 'Region byte' is set to 0
+
| Set to zero if 'Region byte' is set to 0
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x4E011
+
| 0x4E011
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 1
+
| 1
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | Region USA byte
+
| Region USA byte
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Set to zero if 'Region byte' is set to 1
+
| Set to zero if 'Region byte' is set to 1
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x4E014
+
| 0x4E014
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 1
+
| 1
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | Region EUR byte
+
| Region EUR byte
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Set to zero if 'Region byte' is set to 2
+
| Set to zero if 'Region byte' is set to 2
|}
+
|}AP byte', 'Region USA byte' and 'Region EUR byte' will work too.
  −
Note : Blanking all 'Region JAP byte', 'Region USA byte' and 'Region EUR byte' will work too.
      
=== [[TMD]] and [[Certificate chain]] ===
 
=== [[TMD]] and [[Certificate chain]] ===
 
   
 
   
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em;"
+
{| class="wikitable"
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;"| '''Start'''
+
! Start
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;"| '''Size'''
+
! Size
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;"| '''Description'''
+
! Description
|- style="background-color: #ddd;"
+
|-
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;"| 0x00000000
+
| 0x00000000
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" align="center" | <tt>0x2A4</tt>
+
| <tt>0x2A4</tt>
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;"| [[Ticket]]
+
| [[Ticket]]
|- style="background-color: #ddd;"
+
|-
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;"| 0x000002A4
+
| 0x000002A4
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" align="center" | <tt>4</tt>
+
| <tt>4</tt>
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;"| TMD size
+
| TMD size
|- style="background-color: #ddd;"
+
|-
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;"| 0x000002A8
+
| 0x000002A8
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" align="center" | <tt>4</tt>
+
| <tt>4</tt>
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;"| TMD offset >> 2
+
| TMD offset >> 2
|- style="background-color: #ddd;"
+
|-
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;"| 0x000002AC
+
| 0x000002AC
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" align="center" | <tt>4</tt>
+
| <tt>4</tt>
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;"| Cert chain size
+
| Cert chain size
|- style="background-color: #ddd;"
+
|-
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;"| 0x000002B0
+
| 0x000002B0
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" align="center" | <tt>4</tt>
+
| <tt>4</tt>
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;"| Cert chain offset >> 2
+
| Cert chain offset >> 2
|- style="background-color: #ddd;"
+
|-
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;"| 0x000002B4
+
| 0x000002B4
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" align="center" | <tt>4</tt>
+
| <tt>4</tt>
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;"| Offset to the H3 table >> 2 (size is always 0x18000)
+
| Offset to the H3 table >> 2 (size is always 0x18000)
|- style="background-color: #ddd;"
+
|-
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;"| 0x000002B8
+
| 0x000002B8
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" align="center" | <tt>4</tt>
+
| <tt>4</tt>
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;"| Data offset >> 2
+
| Data offset >> 2
|- style="background-color: #ddd;"
+
|-
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;"| 0x000002BC
+
| 0x000002BC
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" align="center" | <tt>4</tt>
+
| <tt>4</tt>
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;"| Data size >> 2
+
| Data size >> 2
|- style="background-color: #ddd;"
+
|-
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;"| 0x000002C0
+
| 0x000002C0
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" align="center" | <tt>varies</tt>
+
| <tt>varies</tt>
|style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;"| [[TMD]]
+
| [[TMD]]
 
   
|}
 
|}
   Line 273: Line 270:  
Partition data is encrypted using a key, which can be obtained from the partition header and the master key. The actual partition data starts at offset 0x20000 in the partition, and it is formatted in "clusters" of size 0x8000 (32k). Each one of these blocks consists of 0x400 bytes of encrypted SHA-1 hash data, followed by 0x7C00 bytes of encrypted user data. The 0x400 bytes SHA-1 data is encrypted using AES-128-CBC, with the partition key and a null (all zeroes) IV. Clusters are aggregated into subgroups of 8 clusters, and 8 subgroups are aggregated into one group of 64 clusters. The plaintext format is as follows:
 
Partition data is encrypted using a key, which can be obtained from the partition header and the master key. The actual partition data starts at offset 0x20000 in the partition, and it is formatted in "clusters" of size 0x8000 (32k). Each one of these blocks consists of 0x400 bytes of encrypted SHA-1 hash data, followed by 0x7C00 bytes of encrypted user data. The 0x400 bytes SHA-1 data is encrypted using AES-128-CBC, with the partition key and a null (all zeroes) IV. Clusters are aggregated into subgroups of 8 clusters, and 8 subgroups are aggregated into one group of 64 clusters. The plaintext format is as follows:
   −
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em;"
+
{| class="wikitable"
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | '''Start'''
+
! Start
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | '''End'''
+
! End
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''Length'''
+
! Length
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | '''Description'''
+
! Description
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x000
+
| 0x000
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x26B
+
| 0x26B
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0x26C
+
| 0x26C
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | 31 SHA-1 hashes ("H0", 20 bytes each), one for each block of 0x400 bytes of the decrypted user data for this cluster.
+
| 31 SHA-1 hashes ("H0", 20 bytes each), one for each block of 0x400 bytes of the decrypted user data for this cluster.
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x26C
+
| 0x26C
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x27F
+
| 0x27F
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0x014
+
| 0x014
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | 20 bytes of 0x00 padding
+
| 20 bytes of 0x00 padding
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x280
+
| 0x280
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x31F
+
| 0x31F
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0x0A0
+
| 0x0A0
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | 8 SHA-1 hashes ("H1"), one for each cluster in this subgroup. Each hash is of the 0x000-0x26B bytes, that is, of the 31 hashes above. This means that each cluster carries a hash of the data cluster hashes for each of the clusters in its subgroup. Every cluster in the subgroup has identical data in this section.
+
| 8 SHA-1 hashes ("H1"), one for each cluster in this subgroup. Each hash is of the 0x000-0x26B bytes, that is, of the 31 hashes above. This means that each cluster carries a hash of the data cluster hashes for each of the clusters in its subgroup. Every cluster in the subgroup has identical data in this section.
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x320
+
| 0x320
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x33F
+
| 0x33F
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0x020
+
| 0x020
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | 32 bytes of 0x00 padding
+
| 32 bytes of 0x00 padding
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x340
+
| 0x340
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x3DF
+
| 0x3DF
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0x0A0
+
| 0x0A0
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | 8 SHA-1 hashes("H2"), one for each subgroup in this group. Each hash is of the 0x280-0x31F bytes above. This means that each cluster carries a hash of the subgroup hash data for each of the subgroups in its group. All 64 clusters in a group have identical data in this section. Bytes 0x3D0-0x3DF here, when encrypted, serve as the IV for the user data.
+
| 8 SHA-1 hashes("H2"), one for each subgroup in this group. Each hash is of the 0x280-0x31F bytes above. This means that each cluster carries a hash of the subgroup hash data for each of the subgroups in its group. All 64 clusters in a group have identical data in this section. Bytes 0x3D0-0x3DF here, when encrypted, serve as the IV for the user data.
 
|-
 
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x3E0
+
| 0x3E0
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x3FF
+
| 0x3FF
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0x020
+
| 0x020
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | 32 bytes of 0x00 padding
+
| 32 bytes of 0x00 padding
 
|}
 
|}
  
2,375

edits

Navigation menu