Ik ben de firmware van mijn WD PR4100 aan het modden, waarbij het rootfs als een squashfs image op het interne flash geheugen staat. De firmware voegt ook een checksum toe aan de squashfs image zodat bij eventuele corruptie de backup image kan ingeladen worden.
WD biedt een GPL pakket aan die mits heel veel tweaken de firmware kan bouwen.
https://support.wdc.com/downloads.aspx?p=276&lang=en
Ik wil nu enkel de bestaande image uitpakken, licht wijzigen en weer een image ervan maken met mksquashfs.
Ik zou daarbij graag deze tool die de checksum maakt omzetten in python voor wat meer transparantie.
http://s000.tinyupload.co...e_id=01947567422758218230
Deze binary zit in het GPL pakket en zal een checksum in-place toevoegen aan de file die je als argument meegeeft.
De tool voegt 2048 bytes toe aan het begin van de binary, die allemaal 0 zijn behalve de eerste 8 bytes.
De eerste 4 bytes komen overeen met de size van de binary (0x00004000 little endian), de andere 4 bytes zijn een checksum... maar welke???
Ik heb CRC32 en een hoop online checksums nagekeken maar geen enkele die matcht...
Enige mede tweaker met raad of zin om me te helpen deze puzzel te kraken?
WD biedt een GPL pakket aan die mits heel veel tweaken de firmware kan bouwen.
https://support.wdc.com/downloads.aspx?p=276&lang=en
Ik wil nu enkel de bestaande image uitpakken, licht wijzigen en weer een image ervan maken met mksquashfs.
Ik zou daarbij graag deze tool die de checksum maakt omzetten in python voor wat meer transparantie.
http://s000.tinyupload.co...e_id=01947567422758218230
Deze binary zit in het GPL pakket en zal een checksum in-place toevoegen aan de file die je als argument meegeeft.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| tfl@reveng:~$ dd if=/dev/urandom of=foo.bin bs=1 count=1k tfl@reveng:~$ ls -l foo.bin rwxrwxrwx 1 tfl tfl 1024 jun 24 14:56 foo.bin tfl@reveng:~$./image_checksum foo.bin image len = 1024 image checksum = 935c9f23 tfl@reveng:~$ ls -l foo.bin rwxrwxrwx 1 tfl tfl 3072 jun 24 14:59 foo.bin tfl@reveng:~$ head -c 2k foo.bin | hd 00000000 00 04 00 00 23 9f 5c 93 00 00 00 00 00 00 00 00 |....#.\.........| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000800 |
De tool voegt 2048 bytes toe aan het begin van de binary, die allemaal 0 zijn behalve de eerste 8 bytes.
De eerste 4 bytes komen overeen met de size van de binary (0x00004000 little endian), de andere 4 bytes zijn een checksum... maar welke???

Ik heb CRC32 en een hoop online checksums nagekeken maar geen enkele die matcht...
Enige mede tweaker met raad of zin om me te helpen deze puzzel te kraken?