Changes

236 bytes added ,  15:34, 30 December 2011
no edit summary
Line 43: Line 43:  
Los siguientes dos bytes que siguen al blockmap son el CRC16 (con 0xFFFF como valor inicial (como el modbus)) de los primeros 8 bytes del blockmap.
 
Los siguientes dos bytes que siguen al blockmap son el CRC16 (con 0xFFFF como valor inicial (como el modbus)) de los primeros 8 bytes del blockmap.
   −
Then comes the journal.
+
Entonces hay el journal.
The journal structure is as follows:
+
La estructura del journal es:
 
<pre>
 
<pre>
 
struct sector_entry {
 
struct sector_entry {
         uint8_t virt_sec;      // Mapped to sector
+
         uint8_t virt_sec;      // Asignado al sector
         uint8_t prev_virt_sec;  // Physical sector previously mapped to
+
         uint8_t prev_virt_sec;  // Sector físico previamente asignado
         uint8_t phys_sec;      // Mapped from sector
+
         uint8_t phys_sec;      // Asignado desde el sector
         uint8_t prev_phys_sec;  // Virtual sector previously mapped to
+
         uint8_t prev_phys_sec;  // Sector virtual previamente asignado
         uint8_t phys_realloc_cnt;      // Amount of times physical sector has been remapped
+
         uint8_t phys_realloc_cnt;      // Cantidas de veces que el sector físico ha sido reasignado
         uint8_t virt_realloc_cnt;      // Amount of times virtual sector has been remapped
+
         uint8_t virt_realloc_cnt;      // Cantidas de veces que el sector virtual ha sido reasignado
 
         uint8_t chksums[8];
 
         uint8_t chksums[8];
 
} __attribute__((__packed__));
 
} __attribute__((__packed__));
Line 63: Line 63:  
</pre>
 
</pre>
   −
With magic being a constant 0x080d6ce0.
+
Con la constante mágica 0x080d6ce0.
   −
The checksums in the blockmap/journal entries work as follows:
+
Los checksums de las entradas del blockmap/journal trabajan de la siguiente forma:
* each byte is the checksum of an encrypted 0x200 bytes large block
+
* cada byte es el checksum de un bloque de tamaño 0x200 bytes encriptado
* to calculate the checksum, a CRC16 of the block (with starting value 0xFFFF) is calculated, and the two bytes of the CRC16 are XORed together to produce the 8bit checksum
+
* para calcular el checksum, el CRC16 del bloque ( con el valor iniciar 0xFFFF) es calculado, y los dos bytes del CRC16 son XOReados juntos para producir un checksum de 8 bits.
   −
=== Partitions ===
+
=== Particiones===
   −
There can be multiple partitions on the chip.  
+
Puede haber múltiples particiones en el chip.  
The partitions are represented by tables of DIFI blobs inside a DISA structure.
+
Las particiones están representadas por tablas de manchas del DIFI dentro de la estructura DISA.
The order of the DIFI blobs is the order of the partitions in the chip.
+
El orden de las manchas del DIFI es el orden de las particiones del chip.
    
'''DISA'''
 
'''DISA'''
Line 82: Line 82:  
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Start
+
! Principio
! Length
+
! Longitud
! Description
+
! Descripción
 
|-
 
|-
 
| 0x00
 
| 0x00
Line 92: Line 92:  
| 0x04
 
| 0x04
 
| 4
 
| 4
| Unknown (maybe magic, the same in all the save files so far)
+
| Desconocido (puede ser mágico, puede ser el mismo que todas las partidas)
 
|-
 
|-
 
| 0x08
 
| 0x08
 
| 8
 
| 8
| Partition table size
+
| Tamaño de la tabla de particiones
 
|-
 
|-
 
| 0x10
 
| 0x10
 
| 8
 
| 8
| Offset to primary partition table in DISA
+
| Offset a la partición primaria de la tabla del DISA
 
|-
 
|-
 
| 0x18
 
| 0x18
 
| 8
 
| 8
| Offset to secondary partition table in DISA
+
| Offset a la partición secundaria de la tabla del DISA
 
|-
 
|-
 
| 0x20
 
| 0x20
 
| 8
 
| 8
| Partition table's length
+
| Longitud de la tabla de particiones
 
|-
 
|-
 
| 0x28
 
| 0x28
 
| 8
 
| 8
| SAVE Partition entry offset in the partition table
+
| Offset de la entrada de guardado en la tabla de particiones
 
|-
 
|-
 
| 0x30
 
| 0x30
 
| 8
 
| 8
| SAVE Partition entry length in the partition table
+
| Longitud de la entrada de guardado en la tabla de particiones
 
|-
 
|-
 
| 0x38
 
| 0x38
 
| 8
 
| 8
| DATA Partition entry offset in the partition table
+
| Offset de la entrada de datos en la tabla de particiones
 
|-
 
|-
 
| 0x40
 
| 0x40
 
| 8
 
| 8
| DATA Partition entry length in the partition table
+
| Longitud de la entrada de datos en la tabla de particiones
 
|-
 
|-
 
| 0x48
 
| 0x48
 
| 8
 
| 8
| SAVE Partition offset
+
| Offset de la partición de guardado
 
|-
 
|-
 
| 0x50
 
| 0x50
 
| 8
 
| 8
| SAVE Partition length
+
| Longitud de la partición de guardado
 
|-
 
|-
 
| 0x58
 
| 0x58
 
| 8
 
| 8
| DATA Partition offset
+
| Offset de la partición de datos
 
|-
 
|-
 
| 0x60
 
| 0x60
 
| 8
 
| 8
| DATA Partition length
+
| Longitud de la partición de datos
 
|-
 
|-
 
| 0x68
 
| 0x68
 
| 4
 
| 4
| Active table (and the offset to the filebase)
+
| Tabla activa (y el offset hacia la filebase)
 
|-
 
|-
 
| 0x6C
 
| 0x6C
 
| 0x20
 
| 0x20
| Hash from active table
+
| Hash desde la partición activa
 
|-
 
|-
 
| 0x8C
 
| 0x8C
 
| 4*29
 
| 4*29
| Unknown
+
| Desconocido
 
|}
 
|}
  
85

edits