Binärdatei per Konsole editieren

Shaitan

Neuer User
Mitglied seit
25 Mai 2006
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
Hallo,

wie kann ich denn per Konsolenbefehl in eine Binärdatei an eine bestimmte Adresse einen bestimmten Wert schreiben?

Ich möchte die Rufumleitung auf meiner Fritzbox per MidpSSH auf dem Handy konfigurieren können. Da ich kein ISDN habe sondern nur analog habe, hat bei mir leider die Lösung mit Capidivert nicht funktioniert.

Nun bin ich das Thema mal wieder angegangen und habe herausgefunden, dass die Informationen über die Weiterleitung in der Datei /var/flash/fx_conf gespeichert sind:

Die Rufnummer an die weitergeleitet wird ist an der Adresse 0x4878 - 0x488C asciicodiert gespeichert. Zur Deaktivierung der Rufumleitung wird an die Adresse 0x4878 ein 0xD0 gespeichert. Nach dem Ändern ist ein Reboot nötig, damit die Fritzbox die Änderung übernimmt.

Ich habe es jetzt hinbekommen, dass ich die Umleitung an und abschalten kann, allerdings auf sehr umständliche art auf die ich jetzt nicht näher eingehen will.

Sehr schön wäre es wenn ich die Nummer direkt eintragen könnte, weil ich dann auch auch andere Nummern verwenden könnte.
 
Zuletzt bearbeitet:
Hi,

spontan fallen mir 2 Möglichkeiten ein; für beide braucht man aber einen USB-Stick.

1. cat <dateiname> > /path/to/usb-stick/dateiname
2. über die Freigabe die Datei auf eine Workstation ziehen
3. dort den Wert in einem Hexeditor ändern
4. Datei zurückspielen auf den USB-Stick
5. per cat <datei> > /var/flash/<dein Dateiname> die Datei neu schreiben.

OOODER:

Du baust Dir via Toolchain einen kompletten mc (midnight commander), legst den auf den USB-Stick, schließt den Stick an.
dann:
1. cat <datei> > /pfad/zum/usbstick/<dateiname>
2. mc
3. datei auswählen
4. F3 (View)
5. F4 (Hex)
6. F2 (Edit) (jetzt bist Du im Hexeditiermodus)
7. ändern und mit F10 und bestätigen speichern und beenden
8. per cat die Datei in /var/flash/ überschreiben.

Ich weiß ja nicht, wie gut Dein ssh-Client für's Händie ist; unter Umständen könnte es schmerzhaft für die Augen werden, einen mc auf einem Telefon betrachten zu müssen; da der mc aber auf der Box läuft, müsste es (theoretisch) klappen.

Takhpah
 
Erstens solltest Du den Thread-Titel anpassen. Wie schon aus Deinem ersten Satz zu lesen ist, weißt Du selbst, daß man Dateien nicht mit SSH ändert, sondern daß SSH der Zugang zur Kommandozeile ist.

In Deinem konkreten Fall scheint es, daß Du nicht beliebige Änderungen durchführen möchtest, sondern zwischen wenigen verschiedenen Einstellungen wechseln willst. Das Einfachste ist also, Du legst Dir Dateien mit den Zuständen an, sowie ein Skript (oder mehrere), das diese Änderung anwendet. Dieses kannst Du dann bequem von der Kommandozeile aufrufen.

Das Skript könnte ungefähr so aussehen (vorher Einstellungen sichern):
Code:
SRC=/var/tmp/fx_conf_1
CFG=/var/flash/fx_conf
TMP=/var/tmp/fx_conf
OFS=$((0x4878))
LEN=$((0x488C - 0x4878 + 1))

cat "$CFG" > "$TMP"
dd if="$SRC" of="$TMP" bs=1 count="$LEN" seek="$OFS" conv=notrunc
cat "$TMP" > "$CFG"

OFS und LEN kann man auch selbst ausrechnen, falls die Shell auf der Box das nicht unterstützt.

Wenn Du beliebige Nummern verwenden willst, diese aber als ASCII abgespeichert sind, dann kannst Du diese Nummer vorher in die Datei schreiben, die nachher in die fx_conf eingefügt wird.
 
Hi,

dd wäre eigentlich schon genau das was ich bräuchte, denn ich könnte das gesamte skript direkt als Makro ins Handy speichern und müsste bei Bedarf nur die Nummer verändern.

Leider scheint dd nicht auf der Fritzbox vorhanden zu sein:
-sh: dd: not found

Momentan kann ich die Weiterleitung aufs Handy an/abschalten indem ich zwei verschiedene Dateien (mit und ohne Weiterschaltung) auf einem Webspace liegen habe, die bei jedem Fritzbox-Neustart ins Ram geladen werden. Per Makro kann ich dann mit dem Handy die Originaldatei mit der gewünschten Datei überschreiben. Diese Variante ist aber sehr unflexibel.

Wie kann ich denn den Titel ändern?
 
Gibts vielleicht irgendwo im Netz ein passendes binary von dd für die Fritzbox?

Oder kann ich es womöglich selber kompilieren? Allerdings habe ich weder die source von dd gefunden, noch weiß ich nicht wie ich an den passenden Compiler komme.

Vielleicht hat ja jemand einen Tip für mich.
 
Wie kann ich denn den Titel ändern?

Im Ersten Beitrag auf "Ändern", dann "Erweitert".

Gibts vielleicht irgendwo im Netz ein passendes binary von dd für die Fritzbox?

dd ist Bestandteil der Busybox, wenn diese entsprechend konfiguriert wurde. Eine einfache Möglichkeit ist, mit Freetz eine Busybox zu erstellen, die dd enthält, und diese auf die Box zu kopieren.
 
Irgendwie klappt es immer noch nicht. Ich habe jetzt mit Freetz eine Busybox gebaut. DD stand nicht explizit zur Auswahl aber ich habe alles angeklickt was zur Auswahl stand.

Ich kann dd immer noch nicht aufrufen. Funktioniert der Aufruf anders wenn ich ihn aus der Busybox aufrufe?
 
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.