Se a qualcuno può interessare ho fatto reverse engineering sia del formato rbi (cifrato) sia del payload decifrato (ovvero quello che viene scritto sul bank):
Formato di un'immagine RBI
Tutti i valori sono big-endian
Offset Lun Esempio Spiegazione
0x0000 4 "BLI2" ; magic number
0x0004 2 "23" ; fim
0x0006 2 "ZA" ; fia
0x0008 12 "0" (stringa terminata con null) ; prodid
0x0014 12 "0" (stringa terminata con null) ; varid
0x0020 4 0x00000000 ; Versione (0.0.0.0)
0x0024 6 0x000000000000 ; sconosciuto
0x002A 2 0x0171 ; Lunghezza totale header (369)
0x002C 4 0x0192F04A ; Lunghezza dati (26406986)
0x0030 4 0xE1A40D85 ; CRC32 dati (da fine headers in avanti)
0x0034 256 0x3776... ; Firma RSA2048
Headers (1 byte tipo + 1 byte lunghezza + contenuto)
0x0134 6 0x02 0x04 0x207F57E0 ; timestamp
0x013A 8 0x08 0x06 "VBNT-K" ; boardname
0x0142 24 0x09 0x16 "Technicolor DGA0130TCH" ; prodname
0x015A 12 0x0A 0x0A "DGA0130TCH" ; varname
0x0166 5 0x20 0x03 "200" ; tagparserversion
0x016B 6 0x81 0x04 0x05A00000 ; flashaddress
Fine headers
0x0171 1 0xB7 ; Formato del payload (B0 -> in chiaro, B1 -> aes128, B2 -> rsa, B3 -> sha1, B4 -> zip, B7 -> aes256, B8 -> sha256)
0x0175 4 "MUTE" ; magic
0x0176 1 0x0A ; Lunghezza header
0x0177 4 0x0192F040 ; Lunghezza payload (26406982)
0x017B payload cifrato
Una volta decifrato all'interno si trova un payload formato B8 (per la verifica dell'sha256), che ne incapsula uno B4 (zip), che ne incapsula uno B0
Formato del payload decifrato e decompresso
0x0000 4 0xFFFFFFFF ; FVP (viene messo a 0 alla fine della scrittura su nand)
0x0010 1 0xB6 ; Formato payload (LZMA)
0x0011 4 "LINU" ; magic
0x0015 1 0x0A ; Lunghezza header
0x0016 4 0x001B3D82 ; Lunghezza payload (kernel + 12)
0x001A 4 0x008000C0 ; loadaddr
0x001E 4 0x008000C0 ; entryaddr
0x0022 4 0x763D1B00 ; Lunghezza kernel in little endian
0x0000026 immagine del kernel compressa con LZMA
0x0200000 rootfs (squashfs)
0x1980000 infoblock:
0x1980000 4 0x00000084 ; Lunghezza footer (incluso questo campo)
0x1980004 4 0x00000054 ; Lunghezza campo versione (+ 4 per questo campo)
0x1980008 80 "VRSS16.3"... ; Versione firmware
0x1980058 4 0x0000000C ; Lunghezza campo HWDT + 4
0x198005C 8 "HWDT" 0x00000001 ; HWDT
0x1980064 4 0x00000020 ; Lunghezza campo TOID + 4
0x1980068 28 "TOID"... ; TOID
0x1980084 4 0x00000108 ; Lunghezza footer RSA (incluso questo campo)
0x1980088 260 "RSAS" + 256 bytes ; Firma RSA2048