Bootloader (Flash Partition mtd2) verändern

el_valiente

Aktives Mitglied
Mitglied seit
9 Aug 2005
Beiträge
2,222
Punkte für Reaktionen
1
Punkte
36
Der bootloader (Urlader) auf mtd2 ist das "Herz" jeder Fritzbox, vergleichbar dem BIOS bei einem Windows PC. Bei den neueren FW Versionen (Kernel 2.6) sind viele interessante Parameter permanent im bootloader definiert. Oftmals möchte man einige dieser Parameter ändern. Leider ist das nicht ganz einfach.

Bei meinen Experimenten mit einem JTAG Interface (Wiederbelebung scheintoter FritzBoxen) habe ich gelernt, den bootloader zu lesen, zu verändern und wieder nach mtd2 zu schreiben.
Da offenbar viele User das auch möchten, sich aber nicht trauen oder nicht wissen, wie es geht, eröffne ich dazu einen neuen Thread.

Achtung! Die folgende Kurzbeschreibung einer "Operation am offenen Herzen" ist riskant; Fehler können für die FritzBox tödlich enden (Zerstörung des Urladers).
Deswegen beschreibe ich die Schritte absichtlich nicht detailliert.
Nur nachmachen, wenn man sich ganz sicher ist, was man tut. Jegliche Aktivität erfolgt auf eigenes Risiko!


Im Prinzip ist es eigentlich einfach:
Viele ehemalige environment Parameter (z.B. HWRevision, Annex) stehen bei FW mit dem Kernel 2.6 (ungefähr ab FW xx.04.30) im Urlader (bootloader) in der Flash-Partition mtd2 (file "mtdblock3"). Somit werden sie bei jedem reboot neu geladen.
Um diese Parameter permanent zu ändern, muss man "nur" den bootloader kopieren, modifizieren und wieder zurück auf die FB schreiben.
Problem: Der bootloader "mtdblock3" steht im Verzeichnis /dev und lässt sich mit normalen Mitteln (FTP, Telnet etc.) nicht überschreiben.

Vorgehensweise:

a) Man geht mit Telnet auf die FB und kopiert den bootloader "mtdblock3" aus dem Verzeichnis /dev in das Verzeichnis /var/tmp, z.B. mit dem Namen "mtd2.bin"

b) Man holt sich den bootloader auf den PC, z.B. mit Telnet und tftp32 (Befehl "tftp -p -l mtd2.bin 192.168.178.xxx").
Dabei ist "192.168.178.xxx" die aktuelle IP-Adresse des PCs.

c) Mit einem geeigneten Hex-Editor öffnet man die Datei mtd2.bin und ersetzt die zu ändernden Parameter überall dort, wo sie vorkommen

d) Man schreibt den modifizierten Bootloader mit Telnet und tftp32 zurück in das Verzeichnis /var/tmp auf der FB (Befehl "tftp -g -r mtd2.bin 192.168.178.xxx")

e) Mit Telnet kopiert man den modifizierten bootloader vom Verzeichnis /var/tmp mit dem Namen "mtdblock3" in das Verzeichnis /dev der FB

f) Fertig! Die FritzBox meldet sich jetzt mit den neuen Parametern (z.B. annex A statt annex B), als ob sie "so geboren wäre"

Die Schritte a) und e) habe ich absichtlich nicht ausführlich beschrieben. Jeder, der sich ein wenig mit Telnet auskennt, weiss, welche Befehle er dazu braucht (ist auch hier im Forum mehrfach beschrieben).

Viel Erfolg für den, der sich traut!
el_valiente
.
 
  • Like
Reaktionen: OlliK75
Schritt c könntest du etwas ausführlicher beschreiben... hab noch nicht in meinen Bootloader reingeguckt - vielleicht ist es ja offensichtlich?
 
Schritt c könntest du etwas ausführlicher beschreiben ... vielleicht ist es ja offensichtlich?
Genau so ist es.
Der Hexeditor muss über eine Option "Textansicht" und über eine Suchfunktion verfügen.
Damit suchst Du die Parameter im Klartext und ersetzt Ihren Wert durch Überschreiben.

Edit:
MaxMuster (er hat mir immer sehr geholfen - Danke, Jörg!) hat gerade zu Recht darauf hingewiesen, dass eine Änderung im bootloader mit einem Hexeditor nur dann trivial ist, wenn Zeichen 1:1 ersetzt werden, z.B. "annex B" durch "annex A".
Müssen strings unterschiedlicherer Länge ersetzt werden, z.B. "HWRevision 94" durch "HWRevision 127", wird es evtl. schwieriger. Dann ist Kreativität gefragt!
.
 
Zuletzt bearbeitet:
Ich hab das Dumpen eben in mein Tool eingebaut.

Hast Du eine Beschreibung, wo was steht? Irgendwo hab ich mal einen Beginn der Beschreibung gesehen.

Wenn Du das mit ftpput ausprobiert hast und es funktioniert, kann ich das Zurückschreiben auch einbauen. Experten-Mode² :)

Happy computing!
R@iner
 
Ich hab das Dumpen eben in mein Tool eingebaut.
Du meinst sicher ein backup von mtd2, also vom bootloader.
Das finde ich sehr gut; viele User werden es Dir danken.


Hast Du eine Beschreibung, wo was steht?
Sorry, habe ich nicht. Habe selber auch irgendwann mal Beiträge dazu gelesen, mir aber die Quelle nicht notiert.
Allgemein will ich nicht detaillierter beschreiben, weil ich befürchte, dass sonst viele Briefbeschwerer produziert werden.
Wenn Du konkrete Fragen hast, antworte ich gerne; bei Dir auch per PN.
.
 
Hast Du eine Beschreibung, wo was steht?
Das meiste, was ich dazu gefunden habe, steht wohl hier bei wehavemorefun.
Die Parameter von Bedeutung sind aber nur teilweise "einfach" zu ändern, wenn es eine "1:1" Änderung ist (z.B. MAC-Adressen, Flash-Partitionierung ...). Bei "veränderlich langen" Variablen wird es schwieriger wie ProductID (mit z.B. Fritz_Box_7170 oder Fritz_Box_FON_2_WLAN), teilweise HWRevision (mit z.B. 94.1.0.0 oder 76) usw.

Jörg
 
Das meiste, was ich dazu gefunden habe, steht wohl hier bei wehavemorefun.
Danke für Deine Wortmeldung und den link, Jörg.
Betreffend unterschiedliche Stringlänge beim Ersetzen von Parametern mit einem Hexeditor habe ich Dein Kommentar in meine [post=1384549]obige Antwort[/post] aufgenommen.

Ich möchte mich hier keinesfalls mit fremden Federn schmücken!
Deswegen dieses statement:
Nur dank der intensiven Hilfe von MaxMuster bei meinen JTAG Bemühungen bin ich so weit gekommen, den Bootloader bearbeiten zu können.
Vielen Dank, Jörg.

Falls mich jemand nach Basiswissen, wie z.B. Struktur des Bootloaders fragt, muss ich passen. Da kennt sich MaxMuster wesentlich besser aus.
.
 
... nun untertreib mal nicht ;-)

Aber zum Inhalt (sofern du das hier mit aufnehmen willst, es passt ja nicht direkt zum HEX-Editor-Ansatz): Bei den älteren Boxen, die den Schritt von einer Firmware mit 2.4-er Linux-Kernel auf einen mit 2.6-er mitgemacht haben (es gibt also Firmwares "< xx.04.30" und ">= xx.04.30") hat man deutlich bessere Chancen, Dinge zu verändern. Hintergrund ist, dass bei diesem Wechsel ein neuer (bezogen auf die besagten Werte "leerer") Bootlader in die Box geschrieben wird der dann im Laufe des Updates mit den entsprechenden Werten beschrieben wird. Hier hat man somit zumindest prinzipiell die Möglichkeit, diesen Prozess mit geänderten Werten nochmal zu durchlaufen.

Jörg
 
Zuletzt bearbeitet:
Hallo Jörg,

dank Dir für die Infos und für den Link. Ich werde mir das mal in Ruhe anschauen.

Gibt es aus deiner Sicht irgendwas, was man darin verändern werden können soll? Also außer das von el_valiente angesprochene Annex?

Hast Du schon mal via NcFTP oder NcFtpPut den Bootloader zurückgeschrieben?

Happy computing!
R@iner
 
... es gibt also Firmwares "< xx.06.30" und ">= xx.06.30") ...
Danke für diesen weiteren Hinweis. Ich denke, es reicht, wenn er hier steht.
.
Aber: Du meinst sicher "< xx.04.30" und ">= xx.04.30" ?
Solltest Du evtl. korrigieren, zwecks Verständnis bzw. unnötige Rückfragen ...
.
 
Moin,

noch (sinnvoll) veränderbar wären MAC-Adressen (wenn was richtig schiefläuft bekommt die Box ggf. Default-MACs, damit gibt es dann potenzielle Probleme), manchmal/in Einzelfällen die mtd-Aufteilung des Flashs (z.B. um ein IAD 5130 das ganze 8MB Flash nutzen zu lassen) oder auch HWRevision, wenn sie denn gleichlang ist (z.B. Eumex300IP/FritzboxFON; auch haben manche Boxen für D und international verschiedene Kennungen)...

Eigentlich wird das direkte Überschreiben des Bootladers (mtd2) vom Bootlader selbst unterbunden (ein put schlägt dann fehl). Eine Ergänzung des Befehls ermöglicht es, dass er zumindest abläuft, dann gibt es aber zuletzt eine Fehlermeldung (553 Urlader_Update failed.). Damit kann man aber potenziell viel Unheil anrichten, deshalb möchte ich das hier nicht unbedingt breittreten aber wenn du genaueres wissen willst, melde dich.

Ich vermute mal, dass dabei von AVM (die das im Recover auch nutzen) irgendwie nicht der komplette Urlader erwartet/geschrieben wird, um die gespeicherten Daten nicht zu überschreiben, sondern ein "Loch" im Bereich dieser Werte (ab 0x580 bei mir bekannten Boxen bis 0x97B. ). Ist aber wie gesagt nur Theorie...

Jörg

EDIT @el_valiente: FW-Bezeichnung korrigiert ;-)
 
Ich vermute mal, dass dabei von AVM (die das im Recover auch nutzen) irgendwie nicht der komplette Urlader erwartet/geschrieben wird, um die gespeicherten Daten nicht zu überschreiben, sondern ein "Loch" im Bereich dieser Werte (ab 0x580 bei mir bekannten Boxen bis 0x97B. ). Ist aber wie gesagt nur Theorie...
Dieser Vermutung schliesse ich mich an.

Man kann die recovery dazu zwingen, den bootloader neu zu schreiben, in dem man dem Parameter "urlader-version" mit ftp einen "alten" Wert gibt, z.B. "urlader-version 89".
Dann wird bei der recovery mtd2 neu geschrieben.
Aber nicht die gesamte Partition mtd2 wird neu geschrieben - die "wichtigen" Parameter (HWRevision, annex etc.) bleiben unverändert.
Das hat mich früher oft geärgert und ich habe es nicht verstanden.
Inzwischen vermute ich, dass die Hypothese von Jörg zutrifft.

@skyteddy:
Das Flashen von mtd2 mit FTP bzw. mit NcFTP ist eine heikle Sache und scheitert aus den von MaxMuster genannten Gründen.
Ich werde mich bei meiner nächsten JTAG Aktivität näher damit befassen, vorher nicht.
.
 
Müssen strings unterschiedlicherer Länge ersetzt werden, z.B. "HWRevision 94" durch "HWRevision 127", wird es evtl. schwieriger. Dann ist Kreativität gefragt!.

Mal blöd gefragt: Was macht man in so einem Fall? Deine 7140 hatte ja vermutlich auch mal HWRevision 95 und jetzt ist's 127.
 
Zuletzt bearbeitet:
... man nimmt eine FW, in der dieser Parameter geändert ist ;-). Wenn in der für die 7140 geänderten Firmware der 7170 auch die erwartete HWRevision an die Nummer der 7140 angepasst wird, dann geht das auch.
Ansonsten könnte man natürlich auch den Bootlader der 7170 (mit dem gewünschten Bootlader) auf eine 7140 spielen, das muss aber nicht unbedingt funkionieren. Dann lieber den Bootlader lassen, und die FW ändern ;-)

Jörg
 
Was macht man in so einem Fall?
Also ich habe mich micht getraut, den bootloader der 7170 (mit HWRevision 127) auf die 7140 zu transplantieren.
Ich habe statt dessen HWRevision 95 im bootloader der 7140 auf 127 verändert. Dazu bin ich im Hex editor bis zum nächsten doppelten spacing (bei meinem Hexeditor ist das X 00 00) gegangen und habe dann den Text um ein space "00" verschoben. Damit hatte ich eine zusätzliche Position frei und konnte "95" durch "127" ersetzen. Funktioniert prima.
Die Methode habe ich danach noch mehrfach erfolgreich mit anderen Boxen angewandt.
.
 
Meine Güte, bevor ich mich das traue muss ich wohl einen Schnaps nehmen ... :saufen2:

Ich bin hier momentan an einem Mac, Hex-Editor nennt sich Hex-Fiend. Ich darf mal einen Screenshots posten, man erkennt gleich den relevanten Abschnitt und das was ich rot eingerahmt habe, ist laut Suchfunktion des Hex-Editors die erste Position, an denen zwei mal der Hex-Wert '00' hintereinander vorkommt.

Soll ich nun einfach bei der HWRevision den Wert '94' durch '127' ersetzen und dafür einen dieser beiden '00' entfernen? Dannw wäre die Gesamtlänge wieder identisch.
 
d) Man schreibt den modifizierten Bootloader mit Telnet und tftp32 zurück in das Verzeichnis /var/tmp auf der FB (Befehl "tftp -g -r mtd2.bin 192.168.178.xxx")

e) Mit Telnet kopiert man den modifizierten bootloader vom Verzeichnis /var/tmp mit dem Namen "mtdblock3" in das Verzeichnis /dev der FB
.
Ich habe zwei identische Fritzboxen, aber unterschiedliche Bootloader-Versionen (1.1964 und 1.3179). Alle beide bin-dateien sind 256kb groß.
Kann man den Bootloader updaten mit einer anderen Version? Oder sind diese spezifisch abgestimmt mit der Fritzbox?
 
also kann man den Bootloader z.B. bei der 7590 mit den Werten von der anderen Box (6890) überschreiben.
 
Kann man den Bootloader updaten mit einer anderen Version? Oder sind diese spezifisch abgestimmt mit der Fritzbox?
Spezifisch abgestimmt.

Wenn man bspw. (mit einem HEX-Editor) die spezifischen Daten aus dem zu überschreibenden Bootloader in den alten Bootloader-Dump, mit dem der neuere überschrieben werden soll, korrekt übernimmt, geht es vielleicht, aber vielleicht auch nicht. Den von dir erwähnten Bootloader-Versionen nach könnte es sich in deinem Fall um zwei 7490er handeln. Und da sollen ja bei den neueren Modellen (Gerüchten nach) auch andere Speicher-Chips verbaut worden sein. Kann dann also durchaus sein, dass nach dem flashen eines alten 7490er-Bootloader auf eine neue 7490 (selbst wenn man die spezifischen Daten angepasst hat) diese zum Briefbeschwerer degradiert wird.


@prisrak1
Das wurde hier nicht behauptet. Aber theoretisch ist es natürlich dennoch möglich, nur ist das dann nicht so zu machen wie hier beschrieben. Das Thema ist, wie schon angemerkt, bereits 10 Jahre alt und damals gab es weder Modelle mit GRX5-SoC noch mit NAND-Flash.
 
  • Like
Reaktionen: prisrak1 und OlliK75

Zurzeit aktive Besucher

Statistik des Forums

Themen
245,753
Beiträge
2,239,187
Mitglieder
372,947
Neuestes Mitglied
jahel98
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.