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''' |