Projekt-Anfragen: Tel: 07022/9319004 info@CodeDocu.de Software Entwicklung in C# WPF Asp.Net Core Vba Excel Word SQL-Server EF Linq, UWP Net
#

UWP: Fritzbox login

 

AVM bietet extra für Entwickler Schnittstellen an, mit der Developer mit Programmen auf die Fritz.box zugreifen können.

 

Hier eine einfache Anleitung zum Anmelden in C#

Anleitung zum Anmelden, Login in eine Fritzbox

http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/AVM_Technical_Note_-_Session_ID.pdf

 

Session ID-Verfahren

 

Verwendung der Session-ID

Die Session-ID ist eine 64-Bit-Zahl, die durch 16 Hexziffern dargestellt wird.

Sie wird beim Login vergeben und muss für die Dauer der Sitzung mitgeführt werden.

Dabei sollte ein Programm zu jeder FRITZ!Box jeweils nur eine Session-ID verwenden, da die Anzahl der Sessions zu einer

FRITZ!Box beschränkt ist.

Die Session-ID hat nach Vergabe eine Gültigkeit von 10 Minuten. Die Gültigkeitsdauer

verlängert sich automatisch bei aktivem Zugriff auf die FRITZ!Box.

Die Session-ID 0 (0000000000000000) ist immer ungültig.

Die Verwendung der Session-IDs ist ein neues Feature ist, das per Firmware-Update installiert

und weiterentwickelt wurde. Abhängig von der Firmware werden Session-IDs also gar nicht

oder mit unterschiedliche Verfahren genutzt. Es sollten daher alle Varianten implementiert

werden und parallel laufen.

 

Vergabe der Session-ID

Für die Vergabe der Session-ID wurde eine neue Einstiegsseite eingeführt.

 ab Firmware-Version xx.04.74: login_sid.xml

 ab FRITZ!OS 5.50: login_sid.lua

Auf dieser Seite kann über den Wert <iswriteaccess> das Login verfahren abgefragt werden.

Beträgt der Wert 0, muss ein Login mit Kennwort erfolgen. Der dabei angewandte neue Login Mechanismus

wird weiter unten beschrieben.

Beträgt der Wert 1, ist kein Login erforderlich und es wird bei der Anfrage mit <SID> gleich eine

gültige Session-ID mitgeteilt. Sollte die Seite nicht aufgerufen werden können, handelt es sich

um eine Firmware die keine Session-IDs unterstützt.

 

 

Kennwort wird verschlüsselt übertragen

Das coole dabei ist, dass dabei schon ein verschlüsseltes Kennwort übertragen wird. Es wird nicht das Kennwort übertragen, sondern eine verschlüsselte Response.

 

 

Ermittlung des Response-Wertes

Beim neuen Login-Verfahren wird also das Klartextpasswort

login:command/password   ersetzt durch login:command/response

 

 

Einloggen über das Login_sid.lua

Für die Vergabe der Session-ID wurde eine neue Einstiegsseite eingeführt.

 

 

 

This XML file does not appear to have any style information associated with it. The document tree is shown below.

<SessionInfo>

<SID>0000000000000000</SID>

<Challenge>25dc2598</Challenge>

<BlockTime>0</BlockTime>

<Rights/>

</SessionInfo>

 

 

 

 

Mit einem Beispiel C# Code für WPF/WinForms zum Einloggen

(nicht Universal App)

using System.Net;

    using System.Security.Cryptography;

    using System.Xml.Linq;

    public void Test()

    {

        string benutzername = "xxxxxxxx";

        string kennwort = "xxxxxxxx";

        // SessionID ermitteln

        string sid = GetSessionId(benutzername, kennwort);

        string seite = SeiteEinlesen(@"http://fritz.box/home/home.lua", sid);

        MessageBox.Show(seite);

    }

    public string SeiteEinlesen(string url, string sid)

    {

        Uri uri = new Uri(url + "?sid=" + sid);

        HttpWebRequest request = WebRequest.Create(uri) as HttpWebRequest;

        HttpWebResponse response = request.GetResponse() as HttpWebResponse;

        StreamReader reader = new StreamReader(response.GetResponseStream());

        string str = reader.ReadToEnd();

        return str;

    }

    public string GetSessionId(string benutzername, string kennwort)

    {

        XDocument doc = XDocument.Load(@"http://fritz.box/login_sid.lua");

        string sid = GetValue(doc, "SID");

        if (sid == "0000000000000000")

        {

            string challenge = GetValue(doc, "Challenge");

            string uri = @"http://fritz.box/login_sid.lua?username=" +

           benutzername + @"&response=" + GetResponse(challenge, kennwort);

            doc = XDocument.Load(uri);

            sid = GetValue(doc, "SID");

        }

        return sid;

    }

    public string GetResponse(string challenge, string kennwort)

    {

        return challenge + "-" + GetMD5Hash(challenge + "-" + kennwort);

    }

    public string GetMD5Hash(string input)

    {

        MD5 md5Hasher = MD5.Create();

        byte[] data =

       md5Hasher.ComputeHash(Encoding.Unicode.GetBytes(input));

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < data.Length; i++)

        {

            sb.Append(data[i].ToString("x2"));

        }

        return sb.ToString();

    }

    public string GetValue(XDocument doc, string name)

    {

        XElement info = doc.FirstNode as XElement;

        return info.Element(name).Value;

 

    }

 

 

 

 

Mobile
»
Kein Internet in Nürtingen
»
Fritzbox: Neues Betriebssystem OS 06.51 Update
»
AVM Fritzbox: Telefonbuch per s cript lesen
»
AVM Fritzbox: Kennwort ändern
»
Fritzbox: 5 GHz oder nur 2,4 GHz SSID
»
Fritzbox, Wlan: Filme im Wlan am Fernseher oder PC anschauen
»
Fritzbox: Abfrage per TR64 Prokokoll Notizen
»
Fritzbox App Code: Windows 10 App Einstiegscode zum Login in Fritzbox
»
Fritzbox: Desktop Tool zum Login in AVM Fritz.box per Code, WPF, Download
»
UWP: Fritzbox Anleitung für Entwickler zum Login und SessionID

.

Jobs, Projekte, Angebote für Freiberufler, Selbstständig an Info@CodeDocu.de