lano
Aktives Mitglied
Manchmal möchte man Daten seiner FRITZ!Box abrufen um sie mittels Script weiter zu verarbeiten, anzuzeigen oder sonstigen Schabernack damit zu treiben. Dazu benötigt man eine Session-ID siehe https://avm.de/fileadmin/user_uploa...ttstellen/AVM_Technical_Note_-_Session_ID.pdf
Ein kleines Script hilf dabei
Als erstes brauchen wir die IP der FRITZ!Box, alternativ reicht uns auch der Domain Name, Standard mäßig
Dann muss natürlich ein User auf der FRITZ!Box existieren und wir brauchen das dazugehörige Password.
Als nächstes brauchen wir eine Challenge. Die bekommen wir von der FRITZ!Box mittels
Dann fügen wir Challenge und Password zu einem String zusammen.
Von diesem String benötigen wir den MD5 Hash.
Bevor wir mit
Nachdem die Challenge wieder vor unseren MD5 Hash gehängt wurde haben wir jetzt unseren Response.
Damit können wir jetzt die URL Parameter zusammen bauen die wir im nächsten Schrit dann wget mitgeben.
Nun können wir die URL zusammen bauen und uns mit
Nun haben wir eine gültige Session-ID mit der wir nun reichlich viel Blödsinn anstellen können.
Als Beispiel können wir uns die Daten der Übersichtsseite der FRITZ!Box anzeigen lassen.
Als Ausgabe erhalten wir ein unschön formatiertes json.
Ein kleines Script hilf dabei
Bash:
#!/bin/bash
IP="fritz.box"
FBUID="user"
SECRET="passwd"
Als erstes brauchen wir die IP der FRITZ!Box, alternativ reicht uns auch der Domain Name, Standard mäßig
fritz.box
.Dann muss natürlich ein User auf der FRITZ!Box existieren und wir brauchen das dazugehörige Password.
Als nächstes brauchen wir eine Challenge. Die bekommen wir von der FRITZ!Box mittels
wget
.
Bash:
CHALLENGE=`wget --no-check-certificate -O - "http://$IP/login_sid.lua" 2>/dev/null | sed 's/.*<Challenge>\(.*\)<\/Challenge>.*/\1/'`
Dann fügen wir Challenge und Password zu einem String zusammen.
Bash:
CPSTR="$CHALLENGE-$SECRET"
Bevor wir mit
md5sum
und awk
den MD5 Hash erstellen müssen wir iconv
bemühen um den String ind das passende Format zu bekommen.
Bash:
MD5=`echo -n $CPSTR | iconv -f ISO8859-1 -t UTF-16LE | md5sum -b | awk '{print substr($0,1,32)}'`
RESPONSE="$CHALLENGE-$MD5"
Damit können wir jetzt die URL Parameter zusammen bauen die wir im nächsten Schrit dann wget mitgeben.
Bash:
URL_PARAMS="username=$FBUID&response=$RESPONSE"
Nun können wir die URL zusammen bauen und uns mit
wget
eine Session-ID holen.
Bash:
SID=`wget --no-check-certificate -O - "https://$IP/login_sid.lua?$URL_PARAMS" 2>/dev/null | sed 's/.*<SID>\(.*\)<\/SID>.*/\1/'`
Nun haben wir eine gültige Session-ID mit der wir nun reichlich viel Blödsinn anstellen können.
Als Beispiel können wir uns die Daten der Übersichtsseite der FRITZ!Box anzeigen lassen.
Bash:
JSON=`wget --no-check-certificate -O - --post-data "xhr=1&sid=$SID&lang=de&page=overview&xhrId=all&useajax=1&no_sidrenew=" "https://$IP/data.lua" 2>/dev/null`
echo $JSON
Als Ausgabe erhalten wir ein unschön formatiertes json.
Zuletzt bearbeitet: