kernel.image per MD5 mit /dev/mtdblock2 vergleichen
So, ich habe ein bißchen herumgespielt und einen Weg gefunden, halbautomatisch einen Vergleich via MD5 zu machen.
Zunächst enpackst Du Dein zu vergleichendes Firmware-Image bzw. wenigstens die
kernel.image daraus und entfernst erst einmal mit
Code:
tools/rmtichksum -f kernel.image
die CRC-Prüfsumme. Dadurch wird die Datei um 8 Bytes kleiner.
Dann erzeugst Du mittels
eine MD5-Prüfsumme zum späteren Vergleich. Außerdem schaust Du Dir die Größe der Datei an und teilst sie durch die 256, um später den Befehl
dd auf der Fritz!Box zu beschleunigen. Wieso 256? Weil aufgrund Padding
kernel.image immer eine Größe hat, die ein Vielfaches von 256 Bytes beträgt.
Beispiel: Dein
kernel.image hat die Größe 6.310.656 Bytes = 256 *
24.651 Bytes. Diese beiden Zahlen nimmst Du nun und führst auf der Box folgenden Befehl aus:
Code:
dd if=/dev/mtdblock2 bs=256 count=[COLOR="Blue"][B]24651[/B][/COLOR] 2>/dev/null | md5sum
Wenn die Prüfsumme mit der
md5sum von
kernel.image übereinstimmt, hast Du Dein Firmware-Image eindeutig identifiziert! Andernfalls fängst Du mit dem nächsten
kernel.image von vorne an, berechnest aufs Neue aus dessen Dateigröße
bs und
count für
dd und vergleichst die beiden nächsten Prüfsummen, bis Du einen Treffer gelandet hast.
Vorteil dieser Methode ist, daß Du nicht einmal die Daten von der Box weg kopieren mußt, um diesen Vergleich zu machen.
Postskriptum: Diese Methode funktioniert nur auf Boxen mit
Hidden Root. Auf alle aktuellen Kernel-2.6-Firmwares von AVM und T-Com trifft das zu, daneben immerhin noch meines Wissens auf alte Kernel-2.4-Firmwares von 5010, 5012, 3070 und SL, nicht aber z.B. auf die 2.4-FWs von Fon (Ausland), Font ATA (D und Ausland), Fon WLAN (Ausland) und 3050. Man kann also sagen, es funktioniert für fast alle noch verbreiteten Boxen. Für die anderen - bei den meisten sind ja nur die veralteten internationalen FWs betroffen - müßte man das Verfahren etwas modifizieren, aber es wäre auch hinzubekommen.