VisualBasic (VBA) - Fritzbox 7490 - Ermittlung der SessionID immer lauter Nullen

Gameforce

Lieutenant
Registriert
Juli 2010
Beiträge
554
Hallo
ich komme leider bei meiner VBA-Programmierung nicht weiter. Ich stecke fest. Ich hänge bei der Ermittlung der "SessionID", die ist immer "0000000000000000" liefert.

Doch zuerst die Info was ich machen möchte.
Ich habe vor in Excel über VBA-Programmierung meine "AVM DECT 200" Schaltsteckdosen in einer Tabelle per Tasten ein- und auszuschalten. Ich bin noch ganz am Anfang der Programmierungen und habe schon Schwierigkeiten die SessionID zu ermitteln, die mir die Fritzbox eigentlich per XML übermitteln sollte. Damit Ihr das Problem evtl. nachvollziehen könnt, habe ich Euch die Excelmappe hochgeladen.

1. Bitte gebt in der Spalte 2 die richtige IP-Adresse Eures Routers an
2. Gebt den Benutzernamen und das Kennwort in Spalte 6 und 7 ein.
3. Jetzt auf den Schalter "AN" klicken.

Als Ergebnis erhaltet Ihr die Session_ID von der Fritzbox, die benötigt wird, um per URL einen Schaltvorgang auslösen zu können.
Aber leider funktioniert das noch nicht richtig und ich habe keinen Schimmer was hier falsch läuft.
Nach mehreren Tage der Fehlersuche und Rumprobierens wende ich mich an Euch mit der Bitte, ob Ihr nicht evtl. mir Tipps geben könntet was in dem Code falsch ist bzw. geändert werden muss. Als Dokumentationsgrundlage habe ich mir von AVM folgendes Dokument heruntergeladen:

https://avm.de/fileadmin/user_uploa...ttstellen/AVM_Technical_Note_-_Session_ID.pdf

Die Hauptfunktion zur Ermittlung der SessionID in meinem Code lautet: Ermittle_Session_ID
Dort habe ich die Stelle markiert an der eigentlich die richtige Session_ID angezeigt werden sollte

'SID enthält auch hier nur Nullen

Meine Vermutung ist, ob evtl bei der MD5Hash-Generierung evtl. etwas falsch ist. Aber wie gesagt ich habe keinen Schimmer mehr woran das liegen könnte, das mir meine Fritzbox immer nur Nullen liefert.
 

Anhänge

  • Steuerung_DECT200_Projekt.zip
    30,1 KB · Aufrufe: 547
  • Gefällt mir
Reaktionen: Hayda Ministral
Hallo,
ich bin mir nicht sicher, ob VBA (was ja für die Automatisierung von Office gedacht ist), dafür die richtige Grundlage ist. Wäre hier z.B. VB.net nicht geeigneter? Könnte hier nicht aus das Problem liegen?

Ich denke zudem nicht, dass die FritzBox die falsche SessionID liefert, sondern dass die Nullen als Defaultvalue hinterlegt sind, und die Verbindung zur FritzBox gar nicht zustande kommt.

greetz
hroessler
 
Das ist ja gerade die Herausforderung. Ich möchte es in Excel VBA lösen, da das geplante Projekt noch viel mehr beinhaltet und Wertedarstellungen/Grafiken in Excel super sind.
 
  • Gefällt mir
Reaktionen: Hayda Ministral
Hier meine VB.Net Lösung:

Code:
Dim  ch$ = CType(XDocument.Load("http://fritz.box/login_sid.lua").FirstNode, XElement).Element("Challenge").Value
Dim SID$ = CType(XDocument.Load("http://fritz.box/login_sid.lua?response=" + ch + "-" + BitConverter.ToString((New System.Security.Cryptography.MD5CryptoServiceProvider).ComputeHash(Encoding.Unicode.GetBytes(ch + "-fritzboxpassword"))).Replace("-", "").ToLower).FirstNode, XElement).Element("SID").Value
 
  • Gefällt mir
Reaktionen: Hayda Ministral
Gameforce schrieb:
Das ist ja gerade die Herausforderung. Ich möchte es in Excel VBA lösen, da das geplante Projekt noch viel mehr beinhaltet und Wertedarstellungen/Grafiken in Excel super sind.
Aber deswegen versuchst du doch auch nicht eine Schraube mit einer Gabel zu öffnen, sondern du verwendest ein geeignetes Werkzeug. Das visualisieren der Daten ist ein weiterer Step, er so auch in VB.net möglich ist aber dann auch über einen Export zu Excel, wenn es unbedingt Excel sein muss.

greetz
hroessler
 
Ich könnte ja ein Exe über Visual Studio Express (VB.NET), die die ganze Steuerung übernimmt, erstellen und diese dann über Excel aufrufen.
 
Zwei Fehler in GetMD5Hash:

Du nimmst UTF8 anstatt Unicode ... richtig ist:
Code:
Set oT = CreateObject("System.Text.UnicodeEncoding")

Und die Schleife ist ein Byte zu kurz ... richtig ist:
Code:
For pos = 1 To UBound(bytes) + 1

z.B. "580f0a02-password" sollte "6c56bbcd049c0e519a0b7540a2e97b07" ergeben


Ansonsten Respekt ... schön gebastelt ;)
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Hayda Ministral, hroessler und Gameforce
PERFEKT! SUPER DANKE! Es funktioniert jetzt ! MEGA DANKE!
 
@Gameforce & @till69
Vielen Dank für eure Vorarbeit. Ich versuche gerade das gleiche (VB.net bin ich leider nicht so fit) und dieser Thread hat mir sehr geholfen.

Ich möchte noch hinzufügen, dass man auf jedenfall in der FritzBox die Anmeldung mit Benutzernamen und Kennwort aktivieren muss. Sonst funktioniert das ganze nicht.
 
Hallo Gameforce.
Habe dein Excel-Programm aus #1 ausprobiert, leider funktioniert es bei mir nicht.
Kannst du mir bitte das lauffähige Programm schicken?
Würde damit aber nichts schalten wollen, sondern die Temperatur auslesen.
Danke schonmal im Voraus.
LG Geri
 
Hallo Gameforce.
hab mit Hilfe deines Beitrags "VBA: Mit Excel AVM-Schaltsteckdosen DECT200/210 steuern (Lösung)" geschafft die Temperatur aus meinen Heizkörper-Thermostaten Fritz DECT301 auszulesen.
Danke dir für den Beitrag.👍

LG Geri
 
Zurück
Oben