CodeDocu.com

Fritzbox: WPF Tool zum Login in AVM Fritz.box per Code

 

 

Ich habe mir hier ein kleines Programm als Vorlage geschrieben in WPF, C#

Mit welchem man sich per Windows 10 Desktop Programm in die Fritzbox anmelden kann

 

 

Das Programm ist hier zum Download und die WPF-XAML Datei und die Code-behind .cs Datei in C# liegen dabei.

Wie man sieht kann man ein Passwort passend zu eurem Routern eingeben und ihr könnt damit prüfen, ob ihr wirklich in die Fritzbox rein kommt.

 

Die Ausgabe ist als HTML Code in der Mitte angezeigt. Wer ein wenig HTML kann, erkennt gleich ob er in der Seite ist.

Ansonsten kommt ein Fehler.

Fritzbox: Desktop Tool zum Login in AVM Fritz.box per Code, WPF, Download

 

 

Die beiliegenden Dateien:

Code-Behind Seite MainWindow.xaml.cs in C#

Enthält den kompletten zugriffs-Code auf die Fritzbox (ab Betriebssystem Fritzbox OS 5.05)

Fritzbox: Desktop Tool zum Login in AVM Fritz.box per Code, WPF, Download

 

Code MainWindow.xaml.cs:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

using System.Windows.Shapes;

 

using System.IO;                    //StreamReader

using System.Net;                   //Http

using System.Security.Cryptography; //Hash Md5

using System.Xml.Linq;              //XDocument

 

namespace Fritzbox_Tools

{

    /// <summary>

    /// Interaktionslogik für MainWindow.xaml

    /// </summary>

    public partial class MainWindow : Window

    {

        public MainWindow()

        {

            InitializeComponent();

        }

 

        private void btnStart_Click(object sender, RoutedEventArgs e)

        {

            Test();

        }

 

        public void Test()

        {

            string benutzername = "xxxxxxxx";

            string kennwort =tbxPassword.Text ;

            // SessionID ermitteln

            string sid = GetSessionId(benutzername, kennwort);

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

 

 

            tbxLog.Text = 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;

        }

 

        private void btnStart_Click_1(object sender, RoutedEventArgs e)

        {

 

        }

 

 

    }

}

 

 

Und die XAML Datei: MainWindow.xaml

Fritzbox: Desktop Tool zum Login in AVM Fritz.box per Code, WPF, Download

Als XAML Code die MainWindow.xaml

<Window x:Class="Fritzbox_Tools.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

        xmlns:local="clr-namespace:Fritzbox_Tools"

        mc:Ignorable="d"

        Title="Fritzbox Tools" Height="350" Width="525">

    <Grid>

        <Grid.RowDefinitions>

            <RowDefinition Height="25*"/>

            <RowDefinition Height="284*"/>

        </Grid.RowDefinitions>

        <StackPanel Grid.Row="0" Orientation="Horizontal" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"  >

            <Button x:Name="btnStart" Grid.Row="0" Content="Start" Width="75"  Click="btnStart_Click"/>

            <Label x:Name="lblPassword" Grid.Row="0" Content="Passwort:" VerticalAlignment="Stretch"  Margin="10,0,0,0"/>

            <TextBox x:Name="tbxPassword" Grid.Row="0" TextWrapping="NoWrap"  Text="DemoPass" VerticalAlignment="Stretch" Width="100" VerticalContentAlignment="Center"  />

        </StackPanel>

        <ScrollViewer Grid.Row="1" >

            <TextBlock x:Name="tbxLog" TextWrapping="Wrap" HorizontalAlignment="Stretch"  VerticalAlignment="Stretch"   ></TextBlock>

        </ScrollViewer>

    </Grid>

</Window>

 

 


Software Entwicklung Stuttgart NĂ¼rtingen
Suche Projekte C#, WPF, Windows App,ASP.Net, vb.Net, WinForms, SQL Server, Access, Excel