Modifizierte Firmware für Siemens Gigaset SE515 mit SSH Zugang für admin
Download modifizierte Firmware für Siemens Gigaset SE515 dsl Version 2.14.02.19
(mit aktiviertem admin Login bei SSH)
se515b-gr-v021402_19_ba09b6f_mod.bin.zipEinleitung
Nachdem ich nun seit etwa zwei Jahren stolzer Besitzer eines Siemens Gigaset SE515 dsl Routers bin, traten einige unangenehme Eigenschaften dieses Gerätes zutage. (Das bekannte Problem mit dem DNS Server und Abstürze bei zu vielen weitergeleiteten Verbindungen.) Da Siemens offenbar nicht mehr willig ist, die Fehler zu beseitigen, habe ich mich etwas intensiver mit dem SE515 beschäftigt. Erstaunlicherweise läuft da Linux drauf. Das hätte ich nicht erwartet. Beim Lesen in folgendem Forum: http://k0.j0t.de/index.php/board,1.0.html habe ich unter anderem erfahren, dass man sich bis Firmware Version 2.14.02.16 per SSH als admin einloggen konnte. Mit der neuesten Version geht das nicht mehr. Das löst zwar mein Problem nicht, aber mein Ehrgeiz war geweckt. Es gibt eine einfache Möglichkeit, einen Login bei der aktuellen Firmware zu aktivieren: (Der Tip ist aus dem Forum, ich schreibe es nur der Vollständigkeit wegen hier auf.)
- Man spielt eine alte Firmware auf den Router. (Maximal Version 2.14.02.16).
- Mit SSH als Benutzer admin einloggen.
- Mit Menüpunkt 9 einen neuen Benutzer anlegen.
- Neueste Firmware aufspielen.
- Jetzt kann man sich mit dem neuen Benutzernamen per SSH einloggen. (Einloggen als admin geht aber trotzdem nicht.)
Die Herausforderung
Ok, dachte ich mir, das ist schön, aber ich will mich trotzdem als admin einloggen. Nachdem ich etwas gesucht hatte, habe ich tools gefunden, die mir dabei helfen würden.
Mit der ersten Software kann man die Firmware zerlegen und wieder zusammen fügen. (Das geht auch mit der zweiten, allerdings gibt es bei der ersten noch ein komfortables Script dazu: se515.)
Mit der zweiten Software kann man das Dateisystem (cramfs) entpacken und wieder komprimieren. Leider konnte ich sie nicht auf meinem Ubuntu 6.10 compilieren. Ich musste erst einige kleine Änderungen an einer Datei vornehmen. Hier ist meine modifizierte Version: cramfs.tar.bz2. ACHTUNG: die normalen cramfs tools, die bei den Linux Distributionen für x86 Prozessoren dabei sind, funktionieren nicht, da die Bytereihenfolge des Prozessors eine andere ist.
Der Plan
Da Siemens für die Firmware GPL Software verwendet hat, mussten sie natürlich diese Software gemäß den Lizenzbestimmungen auch veröffentlichen. Also habe ich erstmal ein paar Stunden in der Firmware bzw. dem Linux gestöbert. Irgendwann hab ich dann gemerkt, dass anstelle von telnet und anderen Programmen busybox verwendet wird. Im Quellcode von busybox hab ich dann auch gesehen, dass da irgendwas abgefragt wird, ob der Login vom inneren oder äußeren Netzwerk kommt. Das war also die richtige Stelle um das "Problem" mit dem Login zu "fixen". Das ändern im Quellcode war mir zu aufwendig, da Siemens offenbar nicht die aktuellen Quellen veröffentlicht hat und ich erst eine tool chain hätte installieren müssen.
KISS - keep it simple stupid
Machen wir es ganz einfach, dachte ich mir, ich ersetze mal das busybox in der aktuellen Firmware durch das von der Revision 16. Gesagt getan, nach ein bisschen probieren war es geschafft. So habe ich es dann letztendlich gemacht:
- Die aktuelle Firmware herunterladen. (Die findet man noch bei Siemens.)
- Die ältere Firmware runterladen, und zwar hier: http://j0t.de/ (Datei se515b-v021402_16_ba09b6e.bin)
- Neue und alte Firmware in unterschiedlichen Verzeichnissen zerlegen (siehe auch Anleitung hier:
http://k0.j0t.de/index.php/topic,160.0.html):
decompose se515b-gr-v021402_19_ba09b6f.bin - Dateisystem der neuen und alten Firmware in unterschiedlichen Verzeichnissen entpacken: (das geht nur als root)
cramfs/cramfsck root_fs -x root_fs.dir
(siehe auch hier: http://tobias.schroepf.de/doku/doku.php?id=hardware:siemens_se515_router_firmware) - Jetzt einfach die Datei busybox im Verzeichnis bin von der alten Firmware zur neuen kopieren.
- Danach muss das Dateisystem wieder zusammen gepackt werden:
cramfs/mkcramfs -r root_fs.dir/ root_fs_new
(die Dateien root_fs und root_fs_new sollten in etwa gleich groß sein) - Nun das Script se515 anpassen und die Firmware wieder zusammen packen.
(Dazu müssen sich in dem Verzeichnis die Dateien kernel und root_fs befinden, d.h. die alte root_fs Datei muß durch die neue ersetzt werden.) - Fertig, nun kann die neue Firmware ausprobiert werden.
Wer das nicht alles selbst machen will, kann sich natürlich einfach die Firmware oben auf der Seite runterladen.
Ich habe noch eine Kleinigkeit an der Firmware geändert. Ich habe die Datei README.txt ins Wurzelverzeichnis kopiert, die die Änderung beschreibt und ich habe in der Datei webs/de.js "dsl" durch "mod" ersetzt, so dass man sieht, das es eine modifizierte Version ist. (Viele HTTP Ausgaben sind offenbar im ehttpd fest einkodiert, weshalb nicht alle "Siemens Gigaset SE515 dsl" Ausgaben geändert wurden.)