Anmedlung mit Webrequest an der fritz Box

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von haufe.

    Anmedlung mit Webrequest an der fritz Box

    Hallo

    ich würde mich gerne an meiner Fritzbox mit Webrequest anmelden, dazu habe ich folgendes hier im Forum gefunden:Klick Mich

    Leider funktionierts das nicht, kann es sein das es bei der Aktuellen Firmware nicht mehr geht?


    MfG

    Haufe und Frohe Weihnacht
    ähh? wasn das :)
    Hey,
    klar geht das.

    Hab mal eben eine Funktion für dich geschrieben:

    VB.NET-Quellcode

    1. Option Strict On
    2. Imports System.Net, System.IO
    3. Public Class Form1
    4. Private Containa As CookieContainer = New CookieContainer
    5. Private Function FritzBoxLogin(ByVal Passwort As String) As String
    6. Dim Login As HttpWebRequest = CType(HttpWebRequest.Create("http://fritz.box/cgi-bin/webcm"), HttpWebRequest)
    7. Login.Method = "POST"
    8. Login.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"
    9. Login.CookieContainer = Containa
    10. Login.AllowAutoRedirect = True
    11. Login.ContentType = "application/x-www-form-urlencoded"
    12. Dim Post As String = "getpage=../html/de/menus/menu2.html&errorpage=../html/index.html&var:lang=de&var:pagename=home&var:menu=home&=&login:command/password=" & Passwort
    13. Login.ContentLength = Post.Length
    14. Dim Wr As New StreamWriter(Login.GetRequestStream(), System.Text.Encoding.Default)
    15. Wr.Write(Post) : Wr.Close()
    16. Dim Re As New StreamReader(Login.GetResponse.GetResponseStream())
    17. Dim Response As String = Re.ReadToEnd : Re.Close()
    18. Return Response
    19. End Function


    Aufrufbeispiel:

    VB.NET-Quellcode

    1. Dim Einloggen As String = FritzBoxLogin("TestPasswort")



    Das gibt dir die Response als String zurück.
    Falls du Nur prüfen willst , ob du eingeloggt bist , nimm das hier:

    VB.NET-Quellcode

    1. Option Strict On
    2. Imports System.Net, System.IO
    3. Public Class Form1
    4. Private Containa As CookieContainer = New CookieContainer
    5. Private Function FritzBoxLogin(ByVal Passwort As String) As Boolean
    6. Dim Login As HttpWebRequest = CType(HttpWebRequest.Create("http://fritz.box/cgi-bin/webcm"), HttpWebRequest)
    7. Login.Method = "POST"
    8. Login.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"
    9. Login.CookieContainer = Containa
    10. Login.AllowAutoRedirect = True
    11. Login.ContentType = "application/x-www-form-urlencoded"
    12. Dim Post As String = "getpage=../html/de/menus/menu2.html&errorpage=../html/index.html&var:lang=de&var:pagename=home&var:menu=home&=&login:command/password=" & Passwort
    13. Login.ContentLength = Post.Length
    14. Dim Wr As New StreamWriter(Login.GetRequestStream(), System.Text.Encoding.Default)
    15. Wr.Write(Post) : Wr.Close()
    16. Dim Re As New StreamReader(Login.GetResponse.GetResponseStream())
    17. Dim Response As String = Re.ReadToEnd : Re.Close()
    18. Return Response.Contains("var g_AskAssiText =") AndAlso Not Response.Contains("FRITZ!Box Anmeldung") AndAlso Not Response.Contains("FEHLER: Das angegebene Kennwort ist")
    19. End Function


    Aufrufbeispiel :

    VB.NET-Quellcode

    1. If FritzBoxLogin("TestPasswort") Then : MessageBox.Show("Eingeloggt!") : Else : MessageBox.Show("Login fehlgeschlagen!") : End If


    Ich hoffe du lernst was aus dem Code.
    ok danke für die antworten
    was ist ein soap client und wie kann ich den nutzen?

    @AsdAsd1337

    Leider geht der Code nicht bei meiner Fritzbox 7170 mit der neusten Firmware!!!!

    Bekomme immer nur Falsches Passwort.

    Danke
    ähh? wasn das :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „haufe“ ()

    hab mich mal durch gegoogelt^^

    Das Login bei der Firmware 29.04.80 auf 7170 ist wohl ein wenig anderst als bei anderen Firmware.

    Könnte sich jemand das Login mal genauer anschauen bitte.

    MfG
    mein referer der box

    Quellcode

    1. Referer=http://fritz.box/cgi-bin/webcm?sid=0000000000000000&getpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&errorpage=..%2Fhtml%2Findex.html&var%3Apagename=home&var%3Amenu=home&time%3Asettings%2Ftime=1293481302%2C-60&box%3Asettings%2FBSA_ON=0&var%3APppProvider=&var%3APppUser=1und1%2FEdNsE%40online.de&var%3AuiO2Mode=



    Postdata

    Quellcode

    1. POSTDATA=sid=0000000000000000&getpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&errorpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&var%3Apagename=home&var%3Amenu=home&var%3Apagemaster=&login%3Acommand%2Fresponse=e3de37a9-3255a2f4f338a755a9b1b6f708444c47&var%3Aactivtype=pppoe&var%3AtabInetstat=0&var%3Aweckernr=
    ähh? wasn das :)
    Hallo

    ich habe das Problem gelöst

    Ab Firmware xx.04.74 gibt es ein neues Anmeldeverfahren mit Sessions IDs.

    Webrequest für die Alte Firmware:

    VB.NET-Quellcode

    1. Option Strict On
    2. Imports System.Net, System.IO
    3. Public Class Form1
    4. Private Containa As CookieContainer = New CookieContainer
    5. Private Function FritzBoxLogin(ByVal Passwort As String) As Boolean
    6. Dim Login As HttpWebRequest = CType(HttpWebRequest.Create("http://fritz.box/cgi-bin/webcm"), HttpWebRequest)
    7. Login.Method = "POST"
    8. Login.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"
    9. Login.CookieContainer = Containa
    10. Login.AllowAutoRedirect = True
    11. Login.ContentType = "application/x-www-form-urlencoded"
    12. Dim Post As String = "getpage=../html/de/menus/menu2.html&errorpage=../html/index.html&var:lang=de&var:pagename=home&var:menu=home&=&login:command/password=" & Passwort
    13. Login.ContentLength = Post.Length
    14. Dim Wr As New StreamWriter(Login.GetRequestStream(), System.Text.Encoding.Default)
    15. Wr.Write(Post) : Wr.Close()
    16. Dim Re As New StreamReader(Login.GetResponse.GetResponseStream())
    17. Dim Response As String = Re.ReadToEnd : Re.Close()
    18. Return Response.Contains("var g_AskAssiText =") AndAlso Not Response.Contains("FRITZ!Box Anmeldung") AndAlso Not Response.Contains("FEHLER: Das angegebene Kennwort ist")
    19. End Function


    Das neue ist etwas umständlich, da ein md5 Hash aus Passwort und Challenge erstellt werden muss um eine Sessions ID zu bekommen.

    Die Challenge bekommt mau von der Box über folgenden Link

    fritz.box/cgi-bin/webcm?getpage=../html/login_sid.xml

    Der md5 Hash wird mit

    Quellcode

    1. Challenge-Passwort
    erstellt.

    Achtung !!!!
    Das "-" zwichen Challenge und Passwort wird auch gebraucht!!

    Die md5 Codierung ist "UTF-16LE" ohne Bom und 0-Bytes


    Ein Code werde ich in der nächsten Zeit posten.
    ähh? wasn das :)