Fritzbox mit PHP Anrufliste auslesen

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ich habe einige Beispiel zum Auslesen (der Anrufliste in) der Fritzbox gefunden, leider keine für das letzte Update der Fritzbox.

    Eine von AVM

    https://avm.de/fileadmin/user…sch_13Nov18.pdf

    beschreibt den Login mit PHP Beispiel.

    Seit einigen Tagen ist ein Update in der Fritzbox, wonach das Anmeldeverfahren nicht mehr geht. Die SID wird nicht mehr gefunden und bringt nur noch 0000000000000000.


    Es gibt auch was zum neuen Login, was ich nicht auf die Reihe bekomme.

    https://at.avm.de/fileadmin/user…-%20Nov2020.pdf

    https://avm.de/fileadmin/user…_2021-05-03.pdf

    Hat da jemand ne Idee, wie das umgeschrieben wird?

    Ich habe im Netz nur noch eine weitere Seite gefunden, wo dazu was geschrieben wurde.

    http://home.mengelke.de/cgi-bin/

    Danke fürs lesen.

    Ich habe eine Raspi Beere 3 und freue mich, dass sie läuft. Ich programmiere gern und freue mich wenn es auch funktioniert. Aber grundsätzlich hab ich keine Ahnung davon :conf:

    Bitte löscht nie dieses Forum! Hier steht alles drin was ich mir merken muss!

    • Offizieller Beitrag

    Du könntest versuchen die Session ID evtl. mit folgendem Skript zu holen

    und in PHP folgendes verwenden

    PHP
    $sid = shell_exec("/Pfad/zum/Skript.sh");

    Natürlich ungetestet!

  • hyle, das ist wunderbar.

    Hätte ich den /Pfad/zum/Skript.sh gleich richtig geschrieben, hatte ich sicher früher antworten können :conf:

    Es funktioniert.

    Danke :danke_ATDE:

    Guido

    Ich habe eine Raspi Beere 3 und freue mich, dass sie läuft. Ich programmiere gern und freue mich wenn es auch funktioniert. Aber grundsätzlich hab ich keine Ahnung davon :conf:

    Bitte löscht nie dieses Forum! Hier steht alles drin was ich mir merken muss!

  • Nur eine leere Zeile nach dem Ausführen in der Console.

    Bash
    #!/bin/bash
    FBF="192.168.178.1"
    USER="fritz1682" # oder falls nicht vorhanden, dann leer lassen
    PASS="passwort"
    CHALLENGE=$(curl -s -k "${FBF}/login_sid.lua" | grep -Po '(?<=<Challenge>).*(?=</Challenge>)')
    MD5=$(echo -n ${CHALLENGE}"-"${PASS} | iconv -f ISO8859-1 -t UTF-16LE | md5sum -b | awk '{print substr($0,1,32)}')
    RESPONSE="${CHALLENGE}-${MD5}"
    SID=$(curl -i -s -k -d "response=${RESPONSE}&username=${USER}" "${FBF}" | grep -Po -m 1 '(?<=sid=)[a-f\d]+')
    echo ${SID} | cut -d" " -f1

    Was gäbs für Möglichkeiten zur Fehlersuche? Kenn mich in bash leider gar nicht aus, Code ist auch nicht grad für Anfänger :conf::conf::conf:

    Einmal editiert, zuletzt von ChrisChip (17. September 2021 um 22:52)

  • Bin mitlerweile schon etwas weiter.

    Code
    Challenge:
    ea36ac1b
    MD5:
    d5ecabfa334534a6be8a5b1d3f4499d3
    Komplett
    -d5ecabfa334534a6be8a5b1d3f4499d3

    Häng in Zeile 11, der RESPONSE verbindet die 2 Strings nicht... :wallbash:

    Bin echt langsam am verzweifeln... Hab schon alles mögliche ausprobiert, bekomm die Strings einfach nicht verbunden. Der vor dem Minus- Zeichen wird immer ignoriert :denker:

    Einmal editiert, zuletzt von ChrisChip (18. September 2021 um 00:16)

  • Sorry, hab ich gestern überlesen.

    Ist zum steuern und vor allem auslesen von Smarthome Daten aus der FB. Hab da z.B. ein paar Heizkörpertermostate über DECT dran.

    Lese alle Daten 1x pro Minute über einen Crontab aus. Hierfür wird immer die Session-ID benötigt. Hat auch die letzten Jahre super funktioniert bis zum Update der FB.
    Habs zuvor über PHP ausgelesen:

    Bekomm es leider nicht hin, den Code für die neue Anmeldung umzuschreiben. War schon ein paar Stunden dran...

    Das vielversprechendste ist momentan dein Skript. Hier häng ich nur noch an der Kleinigkeit, dass die 2 Strings sich nicht verbinden lassen. Hab hier schon alles mögliche ausprobiert aber in Bash hab ich kaum was gemacht bis jetzt...

  • Hier häng ich nur noch an der Kleinigkeit, dass die 2 Strings sich nicht verbinden lassen

    Die Lösung hast Du ja nun offenbar hier Bash Strings verbinden gefunden. ;)

    Lese alle Daten 1x pro Minute über einen Crontab aus.

    Das m.M.n. viel zu oft , denn die 301er verbrauchen ja Strom zum Auslesen und Senden der Daten und damit die Batterien. Davon abgesehen ändern sich so schnell keine Temperaturen im Normalbetrieb. Wenn Du Lüften erkennen willst, dann würde imho auch locker alle 15 Minuten ausreichen.

  • Zitat

    Das m.M.n. viel zu oft , denn die 301er verbrauchen ja Strom zum Auslesen und Senden der Daten und damit die Batterien. Davon abgesehen ändern sich so schnell keine Temperaturen im Normalbetrieb. Wenn Du Lüften erkennen willst, dann würde imho auch locker alle 15 Minuten ausreichen

    Muss mich hier korrigieren. Alle 15 Minuten wird ausgelesen. Die FB frägt nur alle 15 Minuten den Status der mit DECT verbunden Geräte ab. Es wird auch immer nur der letzte Status abgefragt. "Live" abfragen kann man die HKR leider nicht. Auch ein umstellen der Temperatur kann unter Umständen bis zu 15 Minuten dauern.

    Die Zeile 11 im Skript habe ich jetzt überwunden ;) Leider komm ich immer noch nicht zu einer SessionID.

    Läuft das Skript bei dir?

  • Läuft das Skript bei dir?

    Dein Skript? Ja. Und meins auch:

  • erledigt?

    Ich habe eine Raspi Beere 3 und freue mich, dass sie läuft. Ich programmiere gern und freue mich wenn es auch funktioniert. Aber grundsätzlich hab ich keine Ahnung davon :conf:

    Bitte löscht nie dieses Forum! Hier steht alles drin was ich mir merken muss!

  • Guido64

    könntest du mal das komplette script hier posten.

    ich komme bei meinem nicht auf den Fehler

    spukt immer wieder die SID 00000000 aus

    oder hat mir jemand anderes der wo mir licht ins dunkle bringt

    Fritzbox 7590 mit neuster Firmware

    cu Makro

  • nabend

    also auf dem raspi geht es . aber da ich z.Z alles umziehe auf meien Synologi NAS

    bekemme ich dort den Fehler

    ./script.sh: line 8: iconv: command not found

    aber wenn ich Abfrage von AVM rein mache kommt

    PHP Warning: file_get_contents(xxx.xxx.xxx.x?user=FB_User&response=-9d62f8695664fa07cee3axxxxxxxxxx): failed to open stream:

    aber er übernimmt das dann unten nicht

    Iconv ist aktiviert auf der NAS

    • Offizieller Beitrag

    da ich z.Z alles umziehe auf meien Synologi NAS

    Davon steht aber nichts in Deinem Beitrag.

    also auf dem raspi geht es

    Dann ist ja gut, denn das hier ist ein Raspberry Pi und kein Synology Forum! 8o

    Wenn das Kommando iconv laut Fehlermeldung auf der Syno nicht vorhanden ist, dann wirst Du das vermutlich installieren müssen.

    PHP Warning: file_get_contents(xxx.xxx.xxx.x?user=FB_User&response=-9d62f8695664fa07cee3axxxxxxxxxx): failed to open stream:

    Interne IP-Adressen oder Hostnamen unkenntlich zu machen ist ziemlich sinnlos, weil man von aussen eh nicht darauf zugreifen kann und uns die Hilfe zusätzlich erschwert.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!