Hallo liebe AutoIT Gemeinde,
ich schlage mich nun wirklich schon lange damit rum, meine FritzBox auszulesen. Erste Versuche mittels IE schlugen fehl, wobei ich es auch lieber mittels HTTP-Header schaffen möchte. Meine Recherchen bringen mich nun leider nicht mehr weiter. Ein funktionierendes Beispiel habe ich als PHP gefunden, leider schaffe ich es trotzdem nicht.
Für den login gibt es einene Challenge, welche mittels MD5 und Passwort (vermute ich) einen Response erstellt. Leider kommt da bei mir ein falscher Wert raus und somit kann ich mich nicht einloggen. Bei der PHP Version werden hier die Zeichensätze umgewandelt... Über ein wenig Hilfe wäre ich wirklich sehr dankbar.
Hier mein bisheriger Code (Ich weis, dass es nicht so sauber programmiert ist, ich wollte nur einmal die Grundfunktionalität erreichen)
[autoit]
;Inludes
#include <WinHttp.au3>
#include <string.au3>
#include <Constants.au3>
#include <_XMLDOMWrapper.au3>
#include <debugger.au3>
#include <Array.au3>
#include <MD5.au3>
;Variablen
$host = "fritz.box"
$pass = "mein!Passwort" ;natürlich nicht das echte, aber Sonderzeichen sollten funktionieren
FritzLogin()
[/autoit][autoit][/autoit][autoit]Func FritzLogin()
[/autoit][autoit][/autoit][autoit];Header für GET Anfrage
$hSession = _WinHttpOpen("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0")
;Zielseite
$sHost = "http://" & $host & "/login_sid.lua"
;Verbindungsaufbau
$hHoas = _WinHttpConnect($hSession, $sHost)
;GET
$sPaket = _WinHttpSimpleRequest($hHoas, 'GET', '/login_sid.lua' )
;Challange aus Return speichern (Noch in XML umsetzen!)
$challenge = _StringBetween($sPaket,"<Challenge>","</Challenge>")
$challenge = $challenge[0]
;Response errechnen
$response = md5($challenge & "-" & $pass)
;Resonpse URL generieren
$sHost = $host & "/home/home.lua?sid=" & $response[autoit]
End Func
[/autoit]
Hier die PHP Variante:
//****************************************************
//** Fritzbox steuern und auslesen (Ab Fritz OS 5.5 !)
//****************************************************
$FritzBox['Host'] ='fritz.box';
$FritzBox['Passwort'] ='mein!passwort';
$FritzBox['webcm'] ='/cgi-bin/webcm';
//An der Fritrz Box anmelden, liefert eine Session ID oder false
function FritzLogin()
{
global $FritzBox;
$fritzpage ='http://'.$FritzBox['Host'].'/login_sid.lua';
$xml = new SimpleXMLElement(file_get_contents($fritzpage));
$challange = $xml->Challenge; //Wert von Challenge abrufen
$response = file_get_contents($fritzpage.'?username=&response='.$challange . '-' . md5( iconv('ISO8859-1', 'UTF-16LE', $challange . '-' . $FritzBox['Passwort']) )); //Login
$xml = new SimpleXMLElement($response);
$sid = $xml->SID; //SID abrufen die für alle weiteren Aktionen gebraucht wird
if ($sid=='0000000000000000')
{
echo 'Keine gültige SSID - sind die Login (Passwort:"'.$FritzBox['Passwort'].'") und Hostdaten ("'.$FritzBox['Host'].'") richtig?';
return false;
}
unset($xml);
return $sid;
}
Alles anzeigen