[Gelöst] Image aus der Box downloaden?

Bratwurst0815

Neuer User
Mitglied seit
29 Mai 2007
Beiträge
110
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich habe ein kleines Problem, ich würde gern das Image aus der Box ( mit ds-mod ) wieder runterladen, damit ich eine "Kopie" habe. Wie geht das? Auch ohne Linux?

Danke
 
Zuletzt bearbeitet:
Meine Wiki-Seite "Flash-Partitionen im laufenden Betrieb sichern" erklärt, wie's geht.

Frage am Rande aus reiner Neugierde: Das FW-Image hast Du nicht mehr? Das aufzuheben, ist meistens sinnvoll, dann kann man auch mal wieder rein schauen. ;-)
 
Zuletzt bearbeitet:
Ich habe es noch, aber leider habe ich mehrere und alle heißen sie kernel.image :mad:
Gibt es ne Möglichkeit das "richtige" zu identifizieren? Z.B. die MD5 des Images aus der Box abzufragen?
 
Du kannst die datei mit den "squashfstools" auspacken für dich ist vermutlich "unsquashfs-lzma" das richtige.

Jörg
 
Schau doch auf der Box bei den Dateien nach dem Datum, wann die Dateien erzeugt wurden. Es bietet sich z.B.

/usr/www/html/cgi-bin

mit seinen Symlinks an.
Ich weiß allerdings nicht, ob die Symlinks neu angelegt werden, wenn du deine Firmware neu baust.

MfG
 
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
Code:
md5sum kernel.image
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. :D

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.
 
Zuletzt bearbeitet:
hmmm,

unter Kubuntu - Rechtsklick - Eigenschaften - Größe: 3.854.088

laut meinem TR lässt sich das aber nicht ohne Rest durch 256 teilen????
 
Dann mach es andersherum:
Code:
dd if=/dev/mtdblock2 bs=[B]3854088[/B] count=1 2>/dev/null | md5sum
Dafür sollte der Speicher in der Box noch reichen.
 
hehe,

ich bin "nur" per vnc mit der Box verbunden, aber das hat einen Reboot verursacht
 
Entschuldigung, ich hatte nicht an die CRC-Checksumme am Ende von kernel.image (8 Bytes) gedacht. In meinem privaten Skript wird sie berücksichtigt, in der vereinfachten Form hier hatte ich sie zunächst vergessen. Siehe Korrektur weiter oben.
 
Zuletzt bearbeitet:
Was hat das denn zu bedeuten?:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "de_DE:de:en_GB:en",
LC_ALL = (unset),
LANG = "de_DE.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
no checksum found.

Danke!
 
D.h., daß Du Deine Locale-Einstellungen unter Linux nicht so hast, wie Perl es gern hätte. Ich hatte das auch mal, weiß aber nicht auswendig, wie ich es behoben habe damals. Das hat auch nichts mit der Fritz!Box zu tun, sondern mit Linux und Perl i.a. Ich habe damals einfach auf Google gesucht, bis ich eine Lösung fand. Zu "no checksum found": Kam die Meldung auch beim ersten Aufruf auf das frisch entpackte kernel.image oder erst ab dem zweiten Mal. Dann wäre es ja normal, denn nach dem ersten Aufruf ist die Prüfsumme ja weg. Dann müßte sich aber auch die Dateigröße um 8 Bytes verringert haben und dann durch 256 teilbar sein.
 
Wenn die Größe der Datei bekannt ist, kann man auch das Programm head verwenden.
Code:
SIZE=3854088 
head -c $SIZE < /dev/mtdblock2 | md5sum
head -c $SIZE < kernel.image | md5sum
 
Ja, unter Unix führen ja viele Wege nach Rom. :-)
 
Kostenlos!

Neueste Beiträge

Statistik des Forums

Themen
248,873
Beiträge
2,303,517
Mitglieder
378,533
Neuestes Mitglied
PatrickSt91