Hacking the Fritz!Box – Oder wie man dem Fritz!Box Mediaserver beibringt ein anderes Verzeichnis zu benutze

To my english readers

Todays blog entry is in german, since its about a piece of hardware which as far as i know is only sold to the german market.
If i’m wrong, and you own a Fritz!Box Fon WLAN 7320, and you don’t understand german, feel free to leave a comment, i will translate the post then.

WICHTIG! Zuerst lesen!

Dieser Blogeintrag beschaeftigt sich damit die Fritz!Box 7320 dazu zu bringen, mit dem eingebauten Mediaserver ein bestimmtes Verzeichnis auf einer angeschlossenen USB Festplatte zu verwenden.

Die hier gezeigte “loesung” ist ein Hack, der nicht von unerfahrenen Anwendern gemacht werden sollte. Im laufe des ganzen wird die Konfiguration im Flash Speicher der Fritz!Box modifiziert,
wer da nicht dabei einen groben fehler macht, z.b. weil er sich nicht mit der Materie auskennt riskiert das Ding ausser Gefecht zu setzen. Ich selbst bin bereits viele Jahre mit Linux-Systemen vertraut, und traue mir daher zu das Risiko fuer mein Geraet zu tragen, aber ich uebernehme keine Verantwortung falls jemand sein Geraet damit unbrauchbar macht – wer dem hier erklaerten Weg folgt traegt allein selbst die Verantwortung!

Warum eigentlich

Ich habe gestern meine Fritz!Box im Rahmen meines DSL Vertrages erhalten, zwar wird meine Leitung erst naechste Woche geschaltet, aber irgendwie konnt ich meine Finger nicht von dem Geraet lassen.

Die Fritz!Box kommt mit einem eingebauten, sehr rudimentaeren upnp medienserver, der – so er denn eingeschaltet ist – per default die ganze Platte indexiert und alle Medienfiles mit denen er etwas anfangen kann sucht.
hat man nun den Wunsch vieleicht nicht alle Verzeichnisse im Medienserver haben zu wollen, z.b. weil man auf der Platte auch seine webpage sourcen liegen hat und nicht alle bilder von da auch im medienserver haben will, so hat man keine Moeglichkeit das ueber die Weboberflaeche einzustellen.

Eine Suche nach einer Loesung hat mich zwar auf das grandiose Wiki von wehavemorefun.de gestossen, wie auch auf viele Foren (in denen diverse Leute nach Loesungen suchten), aber leider auf keine Antwort. Also hab ich halt dokus gewaelzt, die Kommandozeile bemueht, etc. und siehe da, die Loesung ist nah!

Ein paar Informationen, die hilfreich sein koennten

  • Die Fritz!Box laeuft auf einem embeded Linux namens BusyBox.
  • Auf der BusyBox laeuft ASH als shell (Achtung, unterschiede zu denen die Bash gewohnt sind!)
  • Fuer die Flash-Configs sieht man zwar Dateien unter /var/flash, diese habe ich aber mit regulaeren tools nicht oeffnen koennen
  • Die Pfade koennen auf anderen Firmware Versionen abweichen, oder auch auf anderen Fritz!Box Geraeten, es empfiehlt sich daher zu pruefen was wo ist bevor man blind Kommandos ausfuehrt!

Vorbereitung

Um auf die Shell der Fritzbox zu kommen muss man zunaechst Telnet einschalten, dazu gibt es zwei Loesungen, eine per angeschlossenem Telefon, und eine die den Updatemechanismus der Firmware missbraucht, beide sind im Wiki von wehavemorefun.de beschrieben.

Der Akt

Das erste was getan werden muss ist die config aus dem Flash auszulesen und in eine Datei zu schreiben, dazu gibt es je nach Konfigurationsfile das man anpassen moechte ein entsprechendes Tool auf der Fritz!Box.
In unserem Fall wollen wir die USB Konfiguration aendern, denn hier wird der versteckte homedir key in der media sektion gespeichert. Dieser ist per default “”, also ein leerer String.

Einen einzelnen key aus der Flash-Konfiguration auszulesen (es ist immer eine gute Idee das vorher und auch das nachher zu pruefen) geht wie folgt:

echo media.homedir | usbcfgctl -s

Daher, wir pipen den string “media.homedir” auf das kommando usbcfgctl -s. In diesem Fall sollten wir als Ergebnis “” bekommen.

Auf diese weise einen Key setzen koennen wir allerdings nicht, daher laden wir uns die ganze Konfiguration in eine Datei, mit folgendem Kommando:

usbcfgconv -o /var/media/NEW_LINK/usb.cfg

nach diesem Kommando sollte eine usb.cfg im obersten Verzeichnis unserer externen USB Platte liegen. ACHTUNG: Vorher mit ls pruefen ob der Symlink /var/media/NEW_LINK/ vorhanden ist und tatsaechlich
auf die Festplatte zeigt. Unter umstaenden muss die Platte noch in der Weboberflaeche aktiviert werden, oder der Link traegt einen anderen Namen (einige Forum Posts nennen NEW-LINK oder NEWLINK), auch weiss ich nicht wie sich das ganze bei mehreren Angeschlossenen Platten verhaelt.
Dieses Verzeichnis ist auch fuer den weiteren Verlauf noch wichtig!

Der naechste Schritt ist die neu angelegte Datei zu oeffnen, entweder mit dem vi der auf der Fritz!Box installiert ist, oder mit einem Editor der Ueber einen Netzwerkmount auf die Festplatte zugreift.

In Datei befinden sich mehrere Sektionen, die die uns interessiert sieht in etwa wie folgt aus:

media {
        media_server_enabled = yes;
        homedir = "";
}

Hier muessen wir nun lediglich die homedir Variable anpassen.
Doch Achtung der Pfad hier ist ein Stolperstein, denn es muss ein Pfad im busybox linux sein, welcher relativ zu /var/media/ftp/ liegt.
Unter /var/media/ftp/ ist die USB Platte, und auch andere Storage Einheiten gemounted, Ich habe eine Toshiba USB Platte, daher habe ich einen Pfad “/var/media/ftp/Toshiba-StorEHDD-01”, moechte ich also das das verzeichnis “mediastuff” auf meiner USB Platte verwendet wird, so koennte ich homedir auf “Toshiba-StorEHDD-01/mediastuff/” setzen.

Ich persoenlich habe zwei USB Platten von verschiedenen Herstellern, davon aber jeweils eine angeschlossen – nun moechte ich nicht jedesmal wenn ich die Platte wechsel die ganz Konfiguration anpassen – daher habe ich mich entschieden als Pfad “../NEW_LINK/mediastuff/” zu verwenden.

Achtung: Fallstrick, niemals einen absoluten Pfad eingeben, oder der mediaserver wird nicht starten!

Nun da die Konfiguration angepasst ist, wird es Zeit diese wieder in den Flashspeicher zurueck zu schreiben, das geht mit dem selben Tool das wir auch zum auslesen verwendet haben:

usbcfgconv -O /var/media/NEW_LINK/usb.cfg

Der unterschied ist das wir statt -o wie output -O wie Overwrite verwenden. Nun sollten wir ueberpruefen ob die aenderung funktioniert hat.

echo media.homedir | usbcfgctl -s

Sollte in meinem Fall nun “../NEW_LINK/mediastuff” ausgeben. (das Verzeichnis mediastuff auf der Festplatte sollte man spaetestens jetzt erzeugen!).

Der letzte Schritt den wir nun ausfuehren ist ein reboot der Fritz!Box

reboot

andernfalls ueberschreibt die Weboberlaeche unsere aenderungen am Flash-Speicher, und die ganze Muehe war umsonst. Ist die Fritz!Box fertig mit dem booten, so sollte der Mediaserver das von uns genannte Verzeichnis verwenden. (Wenn nicht zurueck auf die Konsole, Flash-Konfiguration mit usbcfgctl etc. durchchecken, ueberpruefen, ob pfade vorhanden sind und Logik in dem /sbin/start_mediaserver Script nachverfolgen!

Nachtrag

Ich habe kurz darueber nachgedacht die Anleitung in das Wiki von dem ich Mehrfach gesprochen habe einzustellen, aber irgendwie kann ich mich nicht dazu aufraffen mich fuer einen Eintrag zu registrieren. Solltest du einen Account dort haben, fuehl dich frei den Blogeintrag rueber zu kopieren, und mir (Peter Petermann) einen kleinen Gruss zu hinterlassen!

Noch ein Nachtrag

Ja, es ist moeglich das ganze auf andere Weise zu loesen, wenn man eine eigene / andere Firmware auf die Fritz!Box aufspielt – aber das ist nicht noetig um zu diesem Ergebnis zu kommen, und auch eher etwas fuer ausgemachte Fritz!Box-Bastler.

und noch einer

seit gestern abend Zeigt die Fritz!Box mir in der Weboberfläche folgende Meldung “Vom Hersteller nicht unterstützte Änderungen: Weitere Informationen.” – der Betrieb scheint davon aber nicht gestoert.

Advertisements

10 thoughts on “Hacking the Fritz!Box – Oder wie man dem Fritz!Box Mediaserver beibringt ein anderes Verzeichnis zu benutze

    1. noch mal ein blick ins wiki das im post ja ein paar mal verlinkt ist hat mir verraten das man da mit der dokumentation der einzelnen parameter inzwischen gut aufgeholt hat, ich empfehle also studieren dieses wikis fuer andere moeglichkeiten :)

  1. “seit gestern abend Zeigt die Fritz!Box mir in der Weboberfläche folgende Meldung “Vom Hersteller nicht unterstützte Änderungen: Weitere Informationen.” – der Betrieb scheint davon aber nicht gestoert.”

    Das bekommst du mit:

    echo clear_id 87 > /proc/tffs

    wieder weg ;-)

  2. Danke für die fachkundige Beschreibung. Die Anleitung kann 1:1 auch auf 7270 verwendet werden. Ich habe seit Jahren den Telnetzugang offen und mache hie und da kleinere Anpassungen. Sensationell, dass AVM sowohl solche Hintertüren offenlässt, die auch Firmware-Updates überleben, wie auch alte Geräte weiterhin mit Updates versorgt. Daran sollten sich andere Hersteller ein Beispiel nehmen.
    Gruss
    Uli

  3. Hi,

    also ich habe deine Anleitung mal ausprobiert.
    Leider funktioniert sie auf meiner 7390 nicht. (84.05.21-freetz-devel-8925M)
    Zwar steht in WebIf der korrekte Pfad unter Freigabe, aber nach einer neuen Indizierung sind immer noch alle Mediendateien meiner kompletten Festplatte im Angebot vom Mediaserver.

  4. Hmm bei mir funktioniert das ganze an der 7320(.22 Firmware) nicht so wirklich. Der Mountpoint wird geändert und im webinterface unter Mediaserver steht bei Freigabe dann: ../NEW_LINK/Mediaserver. Der Server funktioniert auch jedoch indexiert er nicht nur den Ordner Mediaserver sondern wie vorher alle. Ein weiteres Problem ist das ich wenn ich die Freigabe einschränken will “keine Einschränkung oder meine Festplatte erscheint. Beide sind beim anklicken nicht gewählt und das anwählen wird auch nicht gespeichert.

  5. Nicht bei 7330 unter OS 5.22…

    Die Einträge sind zwar geändert, es wird aber noch immer alles indieziert.
    AUch der dirkete weg mit dem festne Pfad funktioniert nicht.

  6. Auch mit 7360, OS 06.03 funktioniert es nicht!

    Meine (Billig-)Lösung: Platte partitionieren (oder zwei Platten verwenden), so dass eine Partition für den Mediaserver ist (lässt sich über die Weboberfläche einschränken), und auf der anderen Partition eine leere Datei mit dem Namen “FRITZ” anlegen – so kann der Indexier-Prozess kein entsprechendes Verzeichniss anlegen und bricht für diese Partition ab.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s