Modding der Fritzbox - Teil 3

So, heute möchte ich gerne einen SSH Server auf die Fritzbox bringen, da mich der Telnetzugang dann doch ziemlich nervt.

Es wird, wie immer, die Variante gewählt, den Server beim booten der Box aus dem Web nachzuladen.

Ich richte mich hierbei weitestgehend nach diesem Tutorial.

Es wird also der Dropbear SSH Server verwendet. Diesen habe ich hier fertig kompiliert abgelegt.

Ich erweitere das Script /var/flash/debug.cfg aus Teil 2 der Reihe um ein paar Zeilen. Ausserdem ändere ich die Form ein wenig:

#!/bin/sh
APPDIR="/var/tmp/runtimeapps"
mkdir \$APPDIR
echo "ww:x:0:0:root:/:/bin/sh" >> /var/tmp/passwd
echo "ww:PASSWORTHASH:12332:0:99999:7:::" >> /var/tmp/shadow

#>>TELNET
if [ "\$(busybox | grep -c telnetd,)" = "1" ];then
/bin/busybox telnetd -l /sbin/ar7login
else
{
while !(ping -c 1 www.zoosau.de); do sleep 5; done
wget -qO \$APPDIR/utelnetd http://www.zoosau.de/software/Internet_und_Netzwerk/fritz.box/utelnetd
chmod +x \$APPDIR/utelnetd
\$APPDIR/utelnetd -d -l /sbin/ar7login
} &
fi
#<<TELNET

#>>FTP
cd \$APPDIR
while !(ping -c 1 www.zoosau.de); do sleep 5; done
wget -qO \$APPDIR/bftpd http://www.zoosau.de/software/Internet_und_Netzwerk/fritz.box/bftpd
wget -qO \$APPDIR/bftpd.conf http://www.zoosau.de/software/Internet_und_Netzwerk/fritz.box/bftpd.conf
chmod +x \$APPDIR/bftpd
./bftpd -d -c \$APPDIR/bftpd.conf
#<<FTP

#>>SSH
cd \$APPDIR
while !(ping -c 1 www.zoosau.de); do sleep 5; done
wget -qO \$APPDIR/dropbear http://www.zoosau.de/software/Internet_und_Netzwerk/fritz.box/dropbear
wget -qO \$APPDIR/busybox http://www.zoosau.de/software/Internet_und_Netzwerk/fritz.box/busybox_uudecode
chmod +x \$APPDIR/dropbear
chmod +x \$APPDIR/busybox
ln -s \$APPDIR/dropbear dropbearkey
ln -s \$APPDIR/busybox \$APPDIR/uudecode
ln -s \$APPDIR/busybox \$APPDIR/uuencode
\$APPDIR/dropbearkey -t rsa -f \$APPDIR/dropbear_rsa_host_key
\$APPDIR/dropbearkey -t dss -f \$APPDIR/dropbear_dss_host_key
\$APPDIR/dropbear -p 22 -r \$APPDIR/dropbear_rsa_host_key -d \$APPDIR/dropbear_dss_host_key
#<<SSH

Dadurch wird zwar jedes Mal ein anderer Hostkey erzeugt, aber diesen im Webspace ablegen ist auch uncool.

Daher sollte man, nachdem die Box erfolgreich neu gestartet wurde, das debug.cfg Script so abändern, das immer dieselben Keys geschrieben werden.

Die so modifizierte Datei schieben wir nun per FTP wieder auf die Fritzbox nach /var/tmp/debug.cfg . Anschliessend fügen wir diese durch cp /var/tmp/debug.cfg /var/flash/debug.cfg wieder in den resistenten Flashspeicher ein.

Ich verzichte hierbei darauf die Box im Internet zugänglich zu machen, da ich das garnicht will. Wer möchte, kann sich aber den IP-Phone-Forum Beitrag dazu reinziehen, da steht beschrieben wie das geht.

Nachdem die Box also mit SSH nun erfolgreich gestartet wurde, und die DSA/RSA Hostkeys erzeugt wurden, stellen wir sicher, das auch immer dieselben geladen werden. Sonst ist SSH Quatsch.

Zunächst holen wir uns die debug.cfg wieder auf den Rechner, um sie besser bearbeiten zu können. Dasselbe tun wir mit den Keys:

cat /var/flash/debug.cfg > /var/tmp/debug.cfg

cat /var/tmp/runtimeapp/dropbear_rsa_host_key > /var/tmp/dropbear_rsa_host_key

cat /var/tmp/runtimeapp/dropbear_dss_host_key > /var/tmp/dropbear_dss_host_key

Die Keys müssen wir zuvor in ASCII umformatieren:

cd /var/tmp/runtimeapp

chmod 600 dropbear_rsa_host_key

chmod 600 dropbear_dss_host_key

./uuencode dropbear_rsa_host_key *dropbear_rsa_host_key.ascii >* dropbear_rsa_host_key.ascii

./uuencode dropbear_dss_host_key *dropbear_dss_host_key.ascii >* dropbear_dss_host_key.ascii

Diese drei Dateien (debug.cfg und *.ascii) ziehen wir nun per FTP auf den Rechner und öffnen sie im Editor.

ACHTUNG:

Nehmt einen Editor der die UNIX Zeilenumbrüche beherrscht (NICHT Notepad!). Zum Beispiel den Crimson Editor.

Zunächst entfernen wir in der debug.cfg die drei Zeilen, die zur Generierung der Keys dienen. Am besten kommentiert man sie mit # aus, falls man die Keys doch mal wechseln möchte.

Stattdessen tragen wir folgendes ein:

\$APPDIR/uudecode -o \$APPDIR/dropbear_rsa_host_key <<\EOP
INHALT DER DATEI dropbear_rsa_host_key.ascii
EOP
\$APPDIR/uudecode -o \$APPDIR/dropbear_dss_host_key <<\EOP
INHALT DER DATEI dropbear_dss_host_key.ascii
EOP

Dadurch wird immer wieder derselbe Key verwendet.

Teilen per: TwitterEmail


Modding der Fritzbox - Teil 2

Im ersten Teil meines Fritzbox - Modding Tagebuches habe ich, referenzierend auf weitere Web-Quellen, erklärt, wie ich einen Telnet Server auf der Fritzbox installiert habe.

Heute möchte ich das gerne um einen FTP Server erweitern, da dieses den Austausch von Daten stark erleichtert.

Der Schritt, den Telnetserver zu installieren, scheint in nahezu allen anderen Tutorials die Grundvoraussetzung zu sein. So auch für dieses: Wer einen FTP Server haben will, braucht an dieser Stelle bereits einen Zugang zur Fritzbox per Telnet.

Wie werden Configdateien auf der Fritzbox editiert?

Meistens werden Erweiterungen aufgrund des relativ kleinen, fixen Speichers, der einen Neustart der Box übersteht, beim booten der Box aus dem Internet gezogen. Dadurch muss der Speicher nur für ein Shellscript reichen.

Der Arbeitsspeicher der Box ist reichlich bemessen. Ich meine gelesen zu haben das dieser 32 MB groß ist.

Die am meisten editierte Datei auf der Fritzbox ist /var/flash/debug.cfg, da diese durch andere Fritzbox-eigenen Mechanismen nicht beeinträchtigt wird. Man könnte fast meinen sie sei für User-Modifikationen gemacht ;)

Diese Datei kann nicht direkt per FTP oder einem Editor bearbeitet werden. Wer genau wissen will warum, der lese bitte hier.

Daher muss man die Datei zunächst in den Temporären RAM-Speicher "kopieren". Das geht wie folgt:

cat /var/flash/debug.cfg > /var/tmp/debug.cfg

So werden die verteilten Stücke der Datei in eine "echte" Textdatei in /var/tmp/ (RAMdrive der Fritzbox) zusammengefügt.

Diese Datei kann man nun editieren.

Die bearbeitete Datei kann man wiederum ganz normal kopieren:

cp /var/tmp/debug.cfg /var/flash/debug.cfg

Meine Datei sieht nach der Installation des Telnet Servers wie folgt aus:

#!/bin/sh
#>>TELNET
if [ "\$(busybox | grep -c ' telnetd,')" = "1" ];then
/bin/busybox telnetd -l /sbin/ar7login
else
{
while !(ping -c 1 lcr.telefonsparbuch.de); do sleep 5; done
wget -qO /var/utelnetd http://lcr.telefonsparbuch.de/software/fritzbox/utelnetd

# Ohne Kennwort-Abfrage
# echo "root::0:0:root:/var/tmp:/bin/sh" > /etc/passwd
# chmod +x /var/utelnetd
# /var/utelnetd -d -l /bin/sh

# Mit Kennwort-Abfrage
chmod +x /var/utelnetd
/var/utelnetd -d -l /sbin/ar7login
} &
fi
#<<TELNET

Ich beginne an dieser Stelle mit der Einrichtung des FTP Servers, da ich keine Lust habe diese Datei rein mit cat - Befehlen zu editieren...

Dazu ersetze ich den obigen Dateiinhalt durch den folgenden:

#!/bin/sh
#>>TELNET
if [ "\$(busybox | grep -c telnetd,)" = "1" ];then
/bin/busybox telnetd -l /sbin/ar7login
else
{
while !(ping -c 1 www.zoosau.de); do sleep 5; done
wget -qO /var/utelnetd http://www.zoosau.de/software/Internet_und_Netzwerk/fritz.box/utelnetd
chmod +x /var/utelnetd
/var/utelnetd -d -l /sbin/ar7login
} &
fi
#<<TELNET
#>>FTP
cd /var/tmp
while !(ping -c 1 www.zoosau.de); do sleep 5; done
wget -qO /var/tmp/bftpd http://www.zoosau.de/software/Internet_und_Netzwerk/fritz.box/bftpd
wget -qO /var/tmp/bftpd.conf http://www.zoosau.de/software/Internet_und_Netzwerk/fritz.box/bftpd.conf
chmod +x /var/tmp/bftpd
./bftpd -d -c /var/tmp/bftpd.conf
#<<FTP

echo "ww:PASSWORTHASH:0:0:root:/:null" >> /var/tmp/passwd

PASSWORTHASH kann man unter Linux mit dem tool htpasswd hervorragend erzeugen:

htpasswd -n username

Nach einem Fritzbox - Neustart sollte ich mich sowohl per Telnet wie auch FTP anmelden können ... siehe da: Es geht! :)

Teilen per: TwitterEmail


Modding der Fritzbox - Teil 1

Wie im Bericht zuvor angekündigt, werde ich diese neue Serie starten, die eine Art Logbuch zu meinen Erfahrungen beim Modden meiner Fritz Box Fon WLAN 7050 werden soll.

Jeden kleinen Erfolg, Misserfolg und neue Idee möchte ich hier gerne verewigen, um mir eine Referenz zu bieten, und anderen ein leicht verständliches Handbuch.

Was habe ich bisher gemacht?

Ich habe recherchiert.

Dabei bin ich auf diese, bisher hilfreichste Quelle, gestossen. Die Seite ist unheimlich schlecht geschrieben. Sehr amateurhaft und ich denke, das die wenigsten Autoren volljährig sind.

Egal - ich bin auch nicht unbedingt besser!

Was konnte ich hieraus lernen?:

Meine Fritz Box ist eine kleine Zicke ;) Man kriegt den telnet Server nicht wie bei den anderen per Telefoncode gestartet. Offenbar ist da erst garkein Daemon drin! Dieser wird beim hochladen einer Modifizierten Firmware nachinstalliert.

Zunächst einmal stellt man sicher, das man im Besitz des Webpasswortes der Box ist. Hierzu meldet man sich am besten direkt einmal an. Im lokalen Netzwerk gibt man einfach "fritz.box", oder die richtige IP der Box in das Adressfeld des Web-Browsers ein und meldet sich an.

Nun sollte sicherheitshalber ein Firmwareupdate der Box vorgenommen werden. Die folgenden Schritte setzen vorraus, das man im Fritz Box Webinterface die "Einstellungen - System - Ansicht - Expertenansicht aktivieren" - Option aktiviert hat.

Ist das der Fall, klickt man sich über "Einstellungen - System - Firmware-Update" zum Dialog "Automatisches Update". Hier hat man nicht viele Möglichkeiten: klickt auf "Neue Firmware suchen".

Wird eine gefunde, lasst sie installieren und startet die Box neu. Ihr werden durch alle notwendigen Schritte geleitet.

Nachdem nun alles auf dem neuesten Stand ist (dieses Logbuch basiert auf Firmware Version 14.04.33), geht es nun darum, einen telnet-Server auf das Ding zu kriegen.

Am besten, ihr ladet euch schonmal den Putty runter! (Bei Linux Usern unterstelle ich generell Kenntniss wie sie telnet und/oder SSH Sessions öffnen).

Nun versucht mal euch auf eure Fritz Box IP per Telnet zu verbinden - Es wird nicht klappen.

Dieses dient dem Vorher/Nachher - Vergleich :)

Nun ladet euch diese Datei herunter und speichert sie dort, wo ihr sie gut wieder findet (z.B. Desktop).

Hangelt euch nun im Fritz Box Webinterface wieder zu diesem Pfad: "Einstellungen - System - Firmware-Update", wählt aber dieses Mal "Firmware-Datei". Wählt das eben herunter geladene Script aus und klickt auf "Update starten".

Es folgt ein Hinweis, das es sich dabei um keine gültige Firmaware Datei handelt und das das System dabei ohne Garantieansprüche zerstört werden kann.

Nun, so ist das nunmal beim basteln ;)

Aber ich habe diesen Schritt gewagt und hatte keine Probleme. Achja: Ich hafte selbstverständlich auch für nichts!

Ausserdem werdet Ihr fortan mit folgendem Hinweis in eurem Web-Interface leben müssen:

Screenshot der Warnung nach
Update

Nachdem das blinken der LED aufgehört hat, probiert es nochmal mit dem Putty euch per telnet auf die Box zu schalten.

Nun werdet Ihr nach einem Passwort gefragt. Dieses ist dasselbe wie im Web Interface.

Gut, gut - nun will ich aber nicht, das die ganze Pracht nach dem nächsten Stromausfall wieder weg ist - was nun?

Also in den einschlägigen Foren stand, das man ein paar Moves machen muss, damit der Daemon beim nächsten Start wieder hochkommt.

Ich habe mir das Script /var/flash/debug.cfg im Dateisystem der Fritz Box mal angesehen. Für mein Verständniss sieht es es aus, als sei es bereits so, das es immer startet.

Einziges Problem wäre, wenn /var/flash ein flüchtiger Speicher wäre, dessen Inhalt einen Neustart nicht überlebt. Naja, da ich bereits einmal den Strom gezogen habe seitdem, denke ich das es kein flüchtiger Soeicher ist ;)

Ich muss mir das Script im "Image" mal ansehen. Was es genau tut. Ich habe was gelesen von, das es ein telnet Daemon Programm aus dem Internet herunterläd und dann installiert und startet.

Wenn dem so ist, würde ich das lieber gleich mit in das Pseudo Image legen, oder zumindest irgendwo, wo ich weiss das nichts mehr verändert wird.

Zwar scheint alles ganz gut zu funktionieren, ich möchte aber vermeiden, das die Seite von der der Daemon herunter geladen wird irgendwann nicht mehr erreichbar ist, oder, das (wie evtl. in diesem Fall geschehen, da auf einmal keine Vorkehrungen für ein automatisches starten mehr vorgenommen müssen) sich der Download-Teil irgendwann ändert, ohne das man es merkt und versäumt Dokus anzupassen oder ähnliches.

PS: HA! Ich habe einen Artikel gefunden, der teilweise Licht ins Dunkel von /var/flash bringt:

Wechseln Sie mit cd /var/flash zunächst das Verzeichnis. Hier finden Sie alle Konfigurationsdateien der Fritz!Box, die ihren Inhalt auch nach einem Reboot behalten. Mit dem Befehl echo "/usr/sbin/telnetd -l /sbin/ar7login" > /var/flash/debug.cfg schreiben Sie den Start des telnet-Daemons in die debug.cfg und binden ihn so fest in den Bootvorgang der Fritz!Box ein. Kontrollieren Sie den Eintrag mit einem cat debug.cfg . Dann können Sie die Fritz!Box mit /sbin/reboot neu starten, und der telnet-Login sollte anschließend immer noch möglich sein.

Teilen per: TwitterEmail


Ich werd' ISP!

Genau, denn wenn man sich sein eigenes Internet baut, dann muss man nicht immer die Seiten gucken die Arcor einem gibt!

... naja etwas mehr niveau hat dieser Artikel dann doch ;)

Ich bin Congstar Kunde und damit soweit auch ganz zufrieden. Ich wollte keine Verträge mehr, wo ich zum Dank blöd genug gewesen zu sein, mich wieder 2 Jahre an einen gleichbleibendem Tarif auf einem Markt sinkender Kosten gebunden zu haben, für ein Telefon zweiter Wahl entscheiden darf, das dann "nur noch" 10 € (plus die Reingewinne der Grundgebühr über 24 Monate hinweg kostet). Daher bin ich zu Congstar gewechselt.

Ich weiss: Die haben NICHTS, sind nicht die billigsten, bieten keine gescheiten Handys, und, und, und.

Aber für mich ist es ideal.

Ich habe für 10 € meine Festnetzflat, kann je nach Lebenssituation Optionen hinzubuchen oder kündigen, und - mal ehrlich: Wie oft habt ihr während einem Eurer Verträge mal mit dem Support telefoniert und wart mit deren Aussagen zufrieden?

Was schert's mich, da da die T-Mobile Ausschussware der Callagents sitzt für die 15 Minuten, die ich durchschnittlich im Jahr mit denen telefoniere?

Nun bin ich jedoch schon an die Grenzen des Congstar Angebotes gestoßen: KEINE DATENFLAT !!! *kreiiiiisch!!*

Was mache ich da nur?

Meine Idee©:

Ich modde meine Fritz Box Fon WLAN 7050 zum DialIn-Server um! Wie früher, wo man ein Modem hatte, ca. 50 km Kabel aus selbst zusammengelöteten Kabelteilenin der Telefondose verschwinden liess, Username, Passwort und Telefonnummer des Providers brauchte und sich dumm und dusselig bezahlt hat an Minutenpreisen.

Nur mit dem Unterschied, das ich dank der DSL Flatrate zuhause, damit verbundener ISDN Leitung bei Arcor und modding-fähiger Fritz Box und einer Festnetzflat im Handy keinen Cent dazu bezahlen werde! :)

Die Theorie ist so:

Ich richte mir im Handy eine Modemverbindung ein. Diese ruft auf einer meiner ISDN Nummern zuhause an. Nun soll die Fritz Box Anrufe auf dieser Nummer entgegen nehmen und Username/Passwort Authentifizierung betreiben. Stimmen die Daten, soll sie zwischen der Analogleitung zwischen angerufenem Anschluss und anrufendem Handy und der DSL Leitung routen.

Theoretisch dürfte das ganze so kostenfrei für mich bleiben :)

Ich habe mich mit so einer Technik nie beschäftigt. Ich weiss nichtmal, ob es dafür gescheite Software gibt, die man realistisch auf der Fritz Box laufen lassen kann.

Dieses kleine Erfahrungslogbuch wird's zeigen :D

Teilen per: TwitterEmail