[Info] FRITZ!Box 7580 ohne Shell-Zugang ... was nun?

Das Skript dient doch dazu, eine andere Lücke auszunutzen, nämlich die #480894 - steht m.W. auch groß und breit im ersten Beitrag dieses Threads. Wenn diese Lücke bei Deiner Firmware gar nicht mehr existiert (auch das steht wieder im GitHub-Repository, welches ich schon in #1 verlinkt hatte), dann macht es ja auch keinen Sinn, da 1:1 auf diese Lücke zu bauen und nun zu hoffen, daß irgendwann mal ein Telnet- oder rcmd-"Daemon" gestartet würde.

Ich gewinne immer mehr den Eindruck, daß Du #1 gar nicht wirklich gelesen hast ... da war ja schon das Mißverständnis mit der Form des Aufrufs und nun willst Du 1:1 ein Skript verwenden, das auf eine Lücke baut, die seit Anfang November 2016 gefixt ist - zunächst in den Labor-Versionen und seit der 06.8x auch in den Release-Firmwares.

Irgendetwas verstehe ich da jetzt nicht so richtig ... zumal ich in #1 ja auch noch etwas dazu geschrieben hatte. Selbst wenn die "provideradditive.tar" durch Deinen "Angriff" nun richtig erzeugt wird (und das wird sie wohl), behandelt das FRITZ!OS sie beim Start anders seit der Version 06.80 - so wirst Du also nicht zu Deinem Telnet-Zugang kommen. Entweder Du besinnst Dich wieder auf die Variante zurück, die bei den "Pseudo-Images" verwendet wurde und brichst zunächst den Neustart ab, um danach alle Services wieder zu starten, die im Rahmen der Update-Vorbereitung gestoppt wurden oder Du überlegst Dir etwas anderes, wo und wie Du eine permanente Änderung des Systems erreichen könntest.
 
Das Skript dient doch dazu, eine andere Lücke auszunutzen, nämlich die #480894 - steht m.W. auch groß und breit im ersten Beitrag dieses Threads. Wenn diese Lücke bei Deiner Firmware gar nicht mehr existiert (auch das steht wieder im GitHub-Repository, welches ich schon in #1 verlinkt hatte), dann macht es ja auch keinen Sinn, da 1:1 auf diese Lücke zu bauen und nun zu hoffen, daß irgendwann mal ein Telnet- oder rcmd-"Daemon" gestartet würde.

Ich gewinne immer mehr den Eindruck, daß Du #1 gar nicht wirklich gelesen hast ... da war ja schon das Mißverständnis mit der Form des Aufrufs und nun willst Du 1:1 ein Skript verwenden, das auf eine Lücke baut, die seit Anfang November 2016 gefixt ist - zunächst in den Labor-Versionen und seit der 06.8x auch in den Release-Firmwares.

Naja, für mich als Neuling im Fritzbox-Tuning Umfeld ist es halt schwer, in einem Wust von Millionen von Beiträgen und Webseiten die für mich wichtigen und die für meine FB passenden Informationen herauszufinden und viel wichtiger - diese auch zu verstehen. Aber ich tu natürlich mein Bestes und ich hoffe, du glaubst mir, wenn ich Dir sage, dass ich vor jedem Beitrag hier im Forum mehrere Stunden lese und teste. Aber trotzdem kann da mal die ein oder andere Information durchrutschen.

Entweder Du besinnst Dich wieder auf die Variante zurück, die bei den "Pseudo-Images" verwendet wurde und brichst zunächst den Neustart ab, um danach alle Services wieder zu starten, die im Rahmen der Update-Vorbereitung gestoppt wurden oder Du überlegst Dir etwas anderes, wo und wie Du eine permanente Änderung des Systems erreichen könntest.

Da mir "Pseudo-Image" nichts sagt, kann ich mich daher nicht "besinnen". Ich habe aber natürlich nachgelesen. Nun kommen jedoch schon wieder Fragen bei mir auf, bei denen ich bislang keine Antwort gefunden habe. Ich habe nämlich gelesen, dass man inzwischen keine unsignierten Images mehr flashen kann. Geht diese Methode daher noch?

Aber... ich habs nun einfach mal mit was anderem versucht:
Über das AVM recovery Tool hab ich die 6.54er Firmware installiert. Danach lief dein invade.sh Script natürlich problemlos und inzwischen läuft der telnetd problemlos. Nun stellt sich mir jedoch die Frage, wie es weitergehen könnte? Kann man modfs installieren oder ist dies (noch) nicht mit einer 7580er FB kompatibel?

Code:
# cat /proc/sys/urlader/environment | grep linux
#
Habe ich nun keine Dual-Boot-Umgebung?

Oder habe ich ohne modfs auch eine Chance, die 6.83er Firmware zu installieren ohne den telnetd zu verlieren?
 
Zuerst mal: Ich glaube Dir Deine Bemühungen durchaus ... aber Du verstehst sicherlich auch, daß ich etwas (oder sogar sehr) irritiert bin, wenn Du die Beiträge in diesem Thread nicht richtig liest (oder beachtest) und da ist der Wust an Informationen dann nur eine recht schwache "Entschuldigung", weil es gar nicht notwendig wäre (für diese Details jedenfalls nicht), daß man andere Threads sucht und liest ... es steht direkt in diesem und ich schreibe in #21 im zweiten Absatz auch nicht, daß Du m.E. zuwenig im gesamten IPPF suchst und liest, ich beziehe mich unzweideutig auf genau diesen Thread und den ersten Beitrag mit meiner Beschreibung.

Ich "unterstelle" Dir also nicht mangelndes Bemühen ... aber mangelnde "Gründlichkeit" (oder Sorgfalt, falls Dir das mehr sagt) kann man schon annehmen - gerade auch, weil es für mich wieder selbstverständlich wäre, daß ich bei eigenen Fehlschlägen noch einmal damit beginnen würde, die von mir wirklich ausgeführten Schritte mit den beschriebenen penibel abzugleichen und zuerst nach eigenen Fehlern dabei zu suchen. Da hätte man dann zwangsweise (in meinen Augen) #1 in diesem Thread erneut lesen müssen und damit ist das versehentliche "Überlesen" von dort enthaltenen Informationen (aka "Durchrutschen") auch nicht mehr ganz so plausibel und nachvollziehbar, wie Du es darstellen möchtest - daher bleibe ich auch dabei, daß ich nichts aus #21 zurücknehmen würde.

Wenn Du diese "Ermahnung" meinerseits auch wirklich als solche verstehst (mehr ist es auch nicht) und sie künftig berücksichtigst, ist doch alles gut ... wenn mich das (jenseits des bereits Geschriebenen) richtig stören würde, stündest Du in der Ignorieren-Liste und das Thema wäre für mich durch.

Trotzdem war/ist es mir ein "Bedürfnis", das hier noch einmal klarzustellen, weil ich auch nicht als jemand erscheinen will, der andere ausschließlich auf die aussichtslose Suche nach bereits an anderer Stelle Geschriebenem schickt. Wenn ich anhand von Beiträgen von jemandem der Meinung bin, daß er sich wirklich mit dem Thema befaßt und mich nicht nur als kostenlose Arbeitskraft einspannen oder als allzu bereitwillige Quelle für Informationen (anstelle der eigenen Anstrengungen bei einer Suche) mißbrauchen will, dann kriegt er auch ordentliche Antworten ... zumindest mit Stichworten, die er dann für weitere eigene Aktivitäten verwenden kann; aber das ist "ad libitum", ob er solche Hinweise dann aufnimmt und umsetzt. Ich kann niemanden dazu zwingen ... aber mich kann auch niemand zwingen, mich unwidersprochen "ausbeuten" zu lassen und alles mehrfach zu schreiben, nur weil jemand nicht suchen oder lesen will (oder gar kann, dann hat er aber auch andere Probleme, die er zuerst mal lösen sollte).


-"modfs" in der aktuell veröffentlichten Version kann keine 7580 oder 7560, weil das Dateisystem ohne die Wrapper-Partition arbeitet.

Beim Verweis auf das Pseudo-Image (als Suchbegriff war das sicherlich geeignet) für Telnet ging es eher darum, das dort realisierte Prinzip (Abbrechen des Reboots und Neustart aller Services, die zuvor von der Firmware bereits gestoppt wurden) wieder aufleben zu lassen. Das hast Du ja nun durch die ältere Firmware mit der Lücke bzgl. #480894 umgangen.

Eine andere Alternative wäre das (externe) Vorbereiten eines eigenen Dateisystems (mit dem Link für das Telnet-Applet, da ändert sich ja am Prinzip gar nichts) und das Kopieren dieser Datei zusammen mit dem originalen AVM-Kernel in das alternative System, wenn man irgendwie eigene Befehle ausführen kann. Wie so eine Installation eigener Firmware beim Herunterfahren des Systems aussehen könnte, findet man im "autoupdate"-Ordner des Repositories ... auch hier wieder eher als "Prinzip-Skizze" denn als schlüsselfertige Lösung.

Ansonsten bleibt natürlich immer noch der Weg über den Bootloader ... auch hier braucht es nur das originale AVM-Image, die Tools zum Entpacken und Packen von SquashFS-Images und eine passende Umgebung (ein Linux-System, weil ein Dateisystem mit passender Rechteverwaltung benötigt wird für das Bearbeiten des Image-Inhalts) und ein paar eigene Modifikationen des Dateisystems nach dem Entpacken. Der einfachste Fall (nur für das Reaktivieren des Telnet-Daemons) wäre das, was im "modscript" zu diesem Zweck ebenfalls passiert - es reicht bereits, einen einzigen Symlink zusätzlich anzulegen, wie man es im "install"-Zweig des "case"-Statements sehen kann.

Die Variable "linux_fs_start" wird erst dann zum ersten Mal angelegt, wenn eine weitere Firmware in der Partition mit dem Index 1 installiert wird ... allgemein nach der Version 06.60 und bei der 7580 wohl auch schon in der 06.5x (bei der 7560 habe ich nicht nachgesehen) wird von den AVM-Skripten zur Installation aus dem Speicher (die ja auch bei Recovery verwendet werden) die Variable nicht mehr angefaßt und damit auch nicht mehr gesetzt, wenn sie noch nicht vorhanden ist. Nach einem "normalen" Update über das AVM-GUI (ob nun manuell oder automatisch, ist dabei egal) wird die Variable dann von "/var/install" im neuen Firmware-Image gesetzt, auch wenn sie noch nicht existiert.

Das wäre dann auch der nächste Weg, wie man eigene Firmware installieren kann (jenseits von dem in "autoupdate" gezeigten) ... man baut sich sein eigenes, signiertes Firmware-Image (wie das Signieren geht, habe ich irgendwo beschrieben) aus dem oben erstellen Dateisystem und einem originalen AVM-Image, in welchem man nur das Dateisystem-Image austauscht. Je nachdem, ob man das eigene Dateisystem-Image mit einer TI-Prüfsumme versehen will oder nicht, kann/muß man dann noch das Programm "chksum" im Firmware-Image durch ein Skript ersetzen, was sich nicht an einer fehlenden Prüfsumme stört und immer "gültig" (Return-Code ist Null) liefert.

Der Begriff "Image" wird hier zwar von mir mehrfach verwendet, aber man sollte - wenn man das in Angriff nehmen will - auch schon vorher in der Lage sein, den Unterschied zwischen einem Firmware-Image (tar-File), einem Dateisystem-Image (SquashFS-Dateisystem oder auch "ext2" mit passendem Dummy-Header) und einem Kernel-Image (die Datei "kernel.image" in einem Firmware-Image) klar zu erkennen und darf diese nicht durcheinanderwürfeln.

Jedenfalls kann man - bei vorhandenem Shell-Zugang zur Box - dann auch ein solches selbstsigniertes Firmware-Image von der AVM-Firmware installieren lassen, wenn man zuvor der gerade laufenden Firmware mittels bind-Mount einfach den eigenen öffentlichen Schlüssel untergeschoben hat.
 
Wenn Du diese "Ermahnung" meinerseits auch wirklich als solche verstehst (mehr ist es auch nicht) und sie künftig berücksichtigst, ist doch alles gut ... wenn mich das (jenseits des bereits Geschriebenen) richtig stören würde, stündest Du in der Ignorieren-Liste und das Thema wäre für mich durch.

Gut, Ermahnung zur Kenntnis genommen. Dann bin ich schon mal beruhigt, sodass ich jetzt noch eine neue Frage stellen möchte.

Ansonsten bleibt natürlich immer noch der Weg über den Bootloader ... auch hier braucht es nur das originale AVM-Image, die Tools zum Entpacken und Packen von SquashFS-Images und eine passende Umgebung (ein Linux-System, weil ein Dateisystem mit passender Rechteverwaltung benötigt wird für das Bearbeiten des Image-Inhalts) und ein paar eigene Modifikationen des Dateisystems nach dem Entpacken. Der einfachste Fall (nur für das Reaktivieren des Telnet-Daemons) wäre das, was im "modscript" zu diesem Zweck ebenfalls passiert - es reicht bereits, einen einzigen Symlink zusätzlich anzulegen, wie man es im "install"-Zweig des "case"-Statements sehen kann.

Die Variable "linux_fs_start" wird erst dann zum ersten Mal angelegt, wenn eine weitere Firmware in der Partition mit dem Index 1 installiert wird ... allgemein nach der Version 06.60 und bei der 7580 wohl auch schon in der 06.5x (bei der 7560 habe ich nicht nachgesehen) wird von den AVM-Skripten zur Installation aus dem Speicher (die ja auch bei Recovery verwendet werden) die Variable nicht mehr angefaßt und damit auch nicht mehr gesetzt, wenn sie noch nicht vorhanden ist. Nach einem "normalen" Update über das AVM-GUI (ob nun manuell oder automatisch, ist dabei egal) wird die Variable dann von "/var/install" im neuen Firmware-Image gesetzt, auch wenn sie noch nicht existiert.

Ich habe mich nun für diese Lösung entschieden, da ich glaube, dass ich sie am einfachsten durchführen kann, ohne dass ich allzu viele Fragezeichen in meinem Kopf habe.
Ich habe mit nun per SVN die neuesten Freetz-Sourcen gezogen, in denen auch der squashfs4-Patch enthalten ist, und habe diese kompiliert.
Nun habe ich erfolgreich die beiden Dateien mksquashfs4-avm und unsquashfs. Mit den unsuqashfs habe ich nach einem Entpacken des tar-Archivs von AVM auch das filesystem.image erfolgreich entpackt:
Code:
Filesystem on ../filesystem.image is xz compressed (4:0)
Parallel unsquashfs: Using 4 processors
3872 inodes (4522 blocks) to write


[==============================================================================================================================================================\] 4522/4522 100%


created 3238 files
created 247 directories
created 547 symlinks
created 87 devices
created 0 fifos

Guuut soweit! (hoffe ich mal)

Jetzt zu meinen Fragen:
1) Ich verstehe natürlich, dass Du sagtest, ich soll einen Symlink telnetd in diesem entpackten Filesystem anlegen, wie ich deinen Beispielen.
Ich verstehe allerdings nicht, warum dieser einzelne Symlink ausreichen soll. Wie startet sich denn der Telnetd, wenn ich über Port 23 komme? Es fehlt doch ein Eintrag in der inetd.conf, sodass auf Port 23 in der Fritzbox nichts lauscht. Oder ist es tatsächlich so, dass durch diesen Symlink die Telefon-Kombi #96*7* gewählt werden kann und dann dadurch der telnetd gestartet wird?

2) Ich habe mir dann nochmal
https://github.com/PeterPawn/YourFritz/tree/master/autoupdate
angeguckt, um eine Möglichkeit zu finden, wie ich diese modifizierte Firmware auf die Fritzbox eingespielt bekomme.
Ist das soweit richtig, dass ich alle Dateien aus diesem autoupdate Ordner nach /var/media/ftp schiebe und die /var/post_install wie beschrieben anpasse?
Du schreibst, die neue Firmware muss als /var/media/ftp/newfirmware.image vorliegen. Ist newfirmware.image das tar-file, das squashfs-file oder der Kernel?
Da ich im ersten Schwung keine Lust aufs Signieren habe, würde ich dann das openssl binary umbenennen.
Danach einfach nur rebooten und die Scripte sollten das Update mit dem Reboot erledigen?
Kümmert sich dieses Script automatisch auch darum, dass die neue Firmware in der Partition mit dem Index 1 installiert wird?
 
Zu 1. kann ich versichern, daß das tatsächlich ausreichen sollte - aber ich habe es selbst nicht getestet bei der 7580.

Bisher hatte AVM jedenfalls am "telefon"-Daemon noch nichts geändert (das bezieht sich jetzt auf die anderen Modelle, sollte aber bei der 7580 auch so sein) und damit funktionieren die Telefon-Codes zum Aktivieren und Deaktivieren des Telnet-Services tatsächlich noch.

In den Quellen für die AVM-BusyBox (s. OpenSource-Paket von AVM) wurde aber beim Start des "telnetd"-Applets ein zusätzlicher Test eingebaut, ob es einen Symlink "/usr/sbin/telnetd" gibt oder nicht - wohin der am Ende zeigt, ist sogar vollkommen egal. Existiert dieser Symlink nicht, beendet sich der Telnet-Server bei Start unmittelbar wieder. Dieser Aufruf des Telnet-Servers erfolgt aus dem "telefon"-Daemon von AVM heraus (und da muß er dann auch wieder auf "/bin/busybox" zeigen, damit der Start funktioniert oder zumindest auf irgendeinen Wrapper) ... der "telefon"-Daemon macht das dann entweder bei seinem Start, wenn der Dienst zuvor schon aktiviert war oder bei dessen Aktivierung über den Telefon-Code.

Einer ständigen Aktierung und Reaktivierung während das System läuft, widersetzt sich der Service trotzdem (liegt aber am "telefon"-Daemon und nicht am Telnet-Server), weil da ein paar Ungereimtheiten existieren (habe ich irgendwo mal beschrieben), die AVM wohl auch nicht (mehr) beseitigen wird, nachdem die Funktion ja "offiziell" gar nicht mehr existiert.

Bei 2. verweise ich wieder auf die Beschreibung meinerseits zum "autoupdate" ... der Link dorthin sollte sich in der README.md im "autoupdate"-Verzeichnis befinden (bzw. er befindet sich da definitiv, das habe ich vor dieser Behauptung noch einmal geprüft). Das sollte dann auch die Frage klären, wie das arbeitet und welches Format die "newfirmware.image" haben sollte/muß. Wenn Du den Beitrag in dem anderen Thread bereits gelesen haben solltest, ist das aus Deiner Frage zu Punkt 2 nicht zu erkennen ... denn dort habe ich ja u.a. auch etwas dazu geschrieben, welchen Prüfungen diese Datei unterzogen wird. Auch auf die Frage, wer da dann eigentlich die "Installation" übernimmt, bin ich dort eingegangen.

Insofern irritiert mich eben der Fragenkomplex zu 2. dann doch wieder ... die einzige, halbwegs plausible Erklärung wäre es jetzt, daß Du den Link in der README.md nicht gefunden hast und da frage ich mich dann wieder, warum das so gewesen sein sollte - der Link funktioniert jedenfalls noch, davon habe ich mich soeben noch einmal selbst überzeugt.

BTW ... wenn es rein um die Binaries für x86 zum Entpacken und Packen von SquashFS4-Images nach AVM-Geschmack ging, dann finden sich die notwendigen Dateien auch im YourFritz-Repository unter "/bin/x86" - dafür wäre Freetz jetzt nicht direkt notwendig gewesen, wobei meine generelle Empfehlung aber auch lautet, daß man sich besser seine eigenen Werkzeuge übersetzen sollte, wenn man dazu in der Lage ist.
 
Zuletzt bearbeitet:

Statistik des Forums

Themen
246,215
Beiträge
2,248,182
Mitglieder
373,782
Neuestes Mitglied
Gigasetuser
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.