Steuerung FritzBox (login)

  • 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>

    [/autoit][autoit][/autoit][autoit]

    ;Variablen
    $host = "fritz.box"
    $pass = "mein!Passwort" ;natürlich nicht das echte, aber Sonderzeichen sollten funktionieren

    [/autoit][autoit][/autoit][autoit]

    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"

    [/autoit][autoit][/autoit][autoit]

    ;Verbindungsaufbau
    $hHoas = _WinHttpConnect($hSession, $sHost)
    ;GET
    $sPaket = _WinHttpSimpleRequest($hHoas, 'GET', '/login_sid.lua' )

    [/autoit][autoit][/autoit][autoit]

    ;Challange aus Return speichern (Noch in XML umsetzen!)
    $challenge = _StringBetween($sPaket,"<Challenge>","</Challenge>")
    $challenge = $challenge[0]

    [/autoit][autoit][/autoit][autoit]

    ;Response errechnen
    $response = md5($challenge & "-" & $pass)
    ;Resonpse URL generieren
    $sHost = $host & "/home/home.lua?sid=" & $response[autoit]

    [/autoit]


    End Func
    [/autoit]


    Hier die PHP Variante:

  • Hast du livehttpheaders im Firefox als Addon drin?
    http://livehttpheaders.mozdev.org/

    Wenn ja dann schneide mal den Login-Vorgang mit und poste hier mal den Header.
    Das was bei Content-Length steht muss du dann mit einem Post übergeben.
    ###################
    Beispiel für Google.

    https://accounts.google.com/ServiceLoginAuth?service=mail

    POST /ServiceLoginAuth?service=mail HTTP/1.1
    Host: accounts.google.com
    User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:26.0) Gecko/20100101 Firefox/26.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    DNT: 1
    Cookie: blablablabla
    Connection: keep-alive
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 285
    GALX=EkNBf3n4Rn8&_utf8=☃&bgresponse=js_disabled&pstMsg=0&dnConn=&checkConnection=&checkedDomains=youtube&signIn=Anmelden&PersistentCookie=yes&rmShown=1&service=mail&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F%3F&Email=xxxxxxxxxxxxxxxxxxx%40googlemail.com&Passwd=xxxxxxxxxxxxxx

  • Hier der geforderte Ausschnitt. Autoiter hat ja schon eine UDF gepostet, die ich evtl. anpassen kann. Allerdings hat mich die Neugier gepackt. Falls es dir nichts ausmacht, könntest du mir das mit der Content-Length noch "zeigen" oder die Zeile formulieren, dass der Login funktioniert? Wäre echt super.

    Spoiler anzeigen

    Edit Oscar: Spoiler hinzugefügt

    Einmal editiert, zuletzt von Oscar (30. Januar 2015 um 11:09)