Line 147:
Line 147:
=== Partitions ===
=== Partitions ===
−
There can be multiple partitions on the chip.
+
There can be multiple partitions in the image.
The partitions are represented by tables of DIFI blobs inside a DISA/DIFF structure.
The partitions are represented by tables of DIFI blobs inside a DISA/DIFF structure.
−
The order of the DIFI blobs is the order of the partitions in the chip.
+
The order of the DIFI blobs is the order of the partitions in the image.
'''DISA'''
'''DISA'''
* This is located @ 0x100 in the image, following the MAC header.
* This is located @ 0x100 in the image, following the MAC header.
−
* If the uint32 @ 0x168 in the image in the DISA(the low 8-bits) is non-zero, then first table is is hashed, otherwise the second DIFI table is hashed.
+
* If the uint32 @ 0x68 in the DISA(the low 8-bits) is non-zero, then the first table is is hashed, otherwise the second DIFI table is hashed.
* If the table has more then 1 DIFI then the uint32 @ 0x168 is the offset from the DATA partition to the file base (masked with 0xFFFFFFFE).
* If the table has more then 1 DIFI then the uint32 @ 0x168 is the offset from the DATA partition to the file base (masked with 0xFFFFFFFE).
Line 177:
Line 177:
| 0x10
| 0x10
| 8
| 8
−
| Offset to primary partition table in DISA
+
| Offset to primary partition table
|-
|-
| 0x18
| 0x18
| 8
| 8
−
| Offset to secondary partition table in DISA
+
| Offset to secondary partition table
|-
|-
| 0x20
| 0x20
Line 291:
Line 291:
'''DIFI'''
'''DIFI'''
−
These 0x130 large blobs describe the partitions. Every DIFI blob describes a partition. Partitions are catted together, so after the end of one partition is the beginning of the next.
+
These 0x12C-byte blobs describe the partitions. Following each partition is an unused 0xFFFFFFFF cleartext word in the raw image. Every DIFI blob describes a partition. Partitions are catted together, so after the end of one partition is the beginning of the next.
−
−
Actually DIFI blobs are 0x12C large because the last 4 are not used and appear 0xFFFFFFFF at the encrypted image.
For most games there's only 1 partition (The SAVE partition) and some (like Asphalt 3D, Steel Diver & Lego Star Wars III) has 2 partitions.
For most games there's only 1 partition (The SAVE partition) and some (like Asphalt 3D, Steel Diver & Lego Star Wars III) has 2 partitions.
Line 299:
Line 297:
* 2 Partitions means that the files inside the SAVE partition is on the other partition (we would call it DATA partition).
* 2 Partitions means that the files inside the SAVE partition is on the other partition (we would call it DATA partition).
−
* No more than 2 partitions have been seen yet (and can't be because of the DISA known structure).
+
* The DISA/DIFF headers support a maximum of 2 partitions.
{| class="wikitable"
{| class="wikitable"
Line 484:
Line 482:
The hashtable entries' size is 2^x where x is the 'Hashed block size' from the IVFC block.
The hashtable entries' size is 2^x where x is the 'Hashed block size' from the IVFC block.
−
'''Hash'''
+
'''DIFI Hash'''
−
After the DIFI,IVFC & DPFS comes a 0x20 long hash, it is unknown what it's hashing.
+
The last 0x20-bytes of the partition following the DIFI, IVFC and DPFS is a 0x20-byte hash, it is unknown what it's hashing. The offset to this hash is stored in the DIFI.
'''Summary Drawing'''
'''Summary Drawing'''