Java Fritzbox-Login / Auslesen von Logdateien

toni1705

Cadet 1st Year
Registriert
Jan. 2015
Beiträge
12
Hi,

ich versuche erfolglos mich in meine Fritzbox (7570) über ein Java-Webclient anzumelden. ich komme einfach nicht über die Benutzeranmeldung hinaus. Konkret möchte ich die WLAN-Log Datei der Fritzbox auslesen.

Ich habe bereits folgendes ausprobiert:

https://github.com/grundid/fritzbox-java-api , leider erhalte ich hier keine SessionId ;( sonder nur 00000000 als Id


Habt Ihr eine Idee / Tipp für mich?
 
Zuletzt bearbeitet:
Ich meinte eigentlich deinen Code wo du es aufrust und nicht wo der Fehler in der Lib kommt.

Edit: Ich hab gerade mal versucht manuell auf meine Fritzbox mit diesem Verfahren zu kommen, ich bekomme auch immer nur die 00..00 SID zurück, vlt geht das nicht wenn man nicht den Standard-User nutzt.

Edit 2: Geht doch wunderbar, mein Anzeige-Feld für das Challenge-Repsonse war einfach zu kurz =)
 
Zuletzt bearbeitet:
mhh, wenn du nichts am Code geändert hast, wird wohl meine Fritzbox / Firmeware nicht unterstützt :/
 
Ich hab die Lib du verwendenen willst nicht getestet, ich hab nur ein kleines Testprogramm aufgesetzt was die Kernkomponente (das Challenge-Response-Verfahren) testet.

Welche Fritz.OS-Version ist installiert? Was passiert wenn du http://fritz.box/login_sid.lua im Browser aufrufst?
 
Welche OS-Version steckt den hinter der Firmware?

Einfach kurz was ich probiert hab, wenn du es mal ohne den ganzen Overhead testen willst.

Schreib dir in Java eine kleine Funktion

Code:
public String generateReponse(String challenge, String password) throws NoSuchAlgorithmException {
	byte[] text = (challenge + "-" + password).getBytes(Charset.forName("utf-16le"));
	byte[] digest = MessageDigest.getInstance("md5").digest(text);
	return challenge + "-" + DatatypeConverter.printHexBinary(digest).toLowerCase();
}

Nehm die Challenge die du vom GET-Aufrust von http://fritz.box/login_sid.lua bekommst, pack es zusammen mit deinem Passwort in die Funktion. Die Rückgabe gibst du per POST wieder an http://fritz.box/login_sid.lua als RequestBody schickst du

Code:
username=deinUser&response=deinChallengeResponse

jetzt solltest du eigentlich eine SID zurück erhalten.

Für die GET und POST Calls nutze ich Fiddler.

Deine SessionInfo-Aufbau ist allerdings auch anders als bei mir (nutze eine 7390 mit OS 06.23) meiner sieht so aus ...

Code:
<?xml version="1.0" encoding="utf-8"?>
   <SessionInfo>
      <SID>0000000000000000</SID>
      <Challenge>08a7e75a</Challenge>
      <BlockTime>0</BlockTime>
      <Rights></Rights>
    </SessionInfo>
 
Hi Umbel,

danke für dein support, nun läuft es :)
ich habe es mit der SIDLogin-Komponente von FBEditor doch noch hinbekommen:
String urlstr1 = "http://" + "192.168.0.1" + "/cgi-bin/webcm";
SIDLogin.check("", urlstr1, "password", "fritz", "");
sRetSID = SIDLogin.getSessionId();
 
Zurück
Oben