[Gelöst] FritzBox Login per Perl ?

Stefan67

Neuer User
Mitglied seit
11 Nov 2008
Beiträge
28
Punkte für Reaktionen
0
Punkte
1
Hallo,

ich würde gerne ein paar Daten per Perl aus meiner FritzBox auslesen, scheitere aber beim Login (und möchte das Passwort der Box auch nicht entfernen).
So ziemlich das Einzige, was ich gefunden habe, ist das da http://blog.soldierer.com/2013/08/27/218/,
scheitert bei mir aber: Es gibt mir das HTML für die Login-Seite aus und im Log der Box steht dann
Code:
Anmeldung an der FRITZ!Box Benutzeroberfläche von IP-Adresse 192.168.178.21 gescheitert (falsches Kennwort).

Ich habe eine 6360 cable mit FRITZ!OS 06.03.
(doofe Frage: in dem Skript habe ich das Kennwort im Klartext eingetragen, ist das richtig ?)

Ist da bekannt, ob sich zwichenzeitlich (der Link bezieht sich ja auf 5.50) wieder was verändert hat oder habt ihr irgendwelche Tips für einen Dummy ?
:cool:

Vielen Grüße
Stefan
 
Zuletzt bearbeitet:
Hallo informerex,
danke für die Info. Nein, hatte ich noch nicht gesehen.
Ich bin auch nicht der Ober-Programmierer, aber für mich sieht das Verfahren gleich aus (?) oder ich habs nicht kapiert ;)
 
Moin

Das Skript von der Seite geht kaputt wenn du Copy'n'Paste machst.
Es muss erst "bereinigt" werden damit die Gänsefüsschen stimmen...
fb_syslog.pl
Code:
use strict;
use LWP 5.64;
use Digest::MD5 "md5_hex";
my $boxpasswort = "geheim";
my $user_agent = LWP::UserAgent->new;
# challenge string holen
my $http_response = $user_agent->get("http://fritz.box/login_sid.lua");
$http_response->content =~ /<Challenge>(\w+)/i and my $challengeStr = $1;
# response zur challenge generieren
my $ch_Pw = "$challengeStr-$boxpasswort";
$ch_Pw =~ s/(.)/$1 . chr(0)/eg;
my $md5 = lc(md5_hex($ch_Pw));
my $challenge_response = "$challengeStr-$md5";
# Session ID erfragen
$http_response = $user_agent->get( "http://fritz.box/login_sid.lua?user=&response=$challenge_response");
# Session ID aus XML Daten auslesen
$http_response->content =~ /<SID>(\w+)/i and my $sid = $1;
# Ereignisse-Seite mit SID als GET Parameter aufrufen und html ausgeben
$http_response = $user_agent->get("http://fritz.box/system/syslog.lua?sid=$sid");
print $http_response->content;
Hast du das gemacht?
Ich selber kanns nicht testen, hab nur microperl und es fehlen mir die Includes.
Mit microperl kann ich höchstens einen Syntaxcheck auf obiges Skript machen...
Code:
deepbase # microperl -c fb_syslog.pl
fb_syslog.pl syntax OK
Ach, ja, ausserdem ists nicht verkehrt dem Skript ein SHEBANG zu verpassen.
Als allererste Zeile: #!/weg/zu/deinem/perl
 
Zuletzt bearbeitet:
Hallo koyaanisqatsi,

naaajaaaa *lol* ... ich hab die " in ' geändert, warum weiß ich jetzt auch nicht mehr. Ich habe gerade versucht, es nochmal nachzuvollziehen, irgendwas meckert er beim Speichern mit der Zeichenkodierung rum.
#!/usr/bin/perl hab ich drin.
Keine Ahnung, was falsch war, ich bin halt davon ausgegangen, daß die Syntax erst mal ok ist, weil ja die Startseite ausgegeben wurde.
Es sind irgendwie andere " , wenn ich sie von Hand nachtippe, dann greift auch die Syntaxerkennung korrekt.
:noidea:


:p Lange Rede, kurzer Sinn: Funktioniert, wenn ich es von hier kopiere :p

Herzlichen Dank
:dance:
Stefan
 
Prima, dann kannste dem original Author ja einen Comment schicken. ;)
 
Ich hatte ihm die Frage schon vor ca. 1 Woche geschrieben ... sollte er antworten, werd ich ihn darauf hinweisen.
:-)
 
Kostenlos!

Statistik des Forums

Themen
248,888
Beiträge
2,304,093
Mitglieder
378,571
Neuestes Mitglied
Heiko2026