Fritzbox Login ab Firmenware 5.xx und höher.

  • Antworten:3
  • Bentwortet
Normen Düring
  • Forum-Beiträge: 15

04.06.2014, 00:57:24 via Website

Hi ich habe mir auf der AVM Seite die Dokumentation für HTTP und SessionID runtergeladen und durch gelesen.

Aber alle meine Versuche ein Login in meiner Test App hin zu bekommen ist bist jetzt fehl geschlagen.

Entweder verstehe ich die Doku nicht oder der Fehler liegt wo anders.

Der MD5-Hash wird über die Bytefolge der UTF-16LE-Codierung dieses
Strings gebildet (ohne BOM und ohne abschließende 0-Bytes).
Aus Kompatibilitätsgründen muss für jedes Zeichen, dessen Unicode Codepoint > 255 ist, die
Codierung des "."-Zeichens benutzt werden (0x2e 0x00 in UTF-16LE). Dies betrifft also alle
Zeichen, die nicht in ISO-8859-1 dargestellt werden können, z. B. das Euro-Zeichen.
Abschließend ein Beispiel mit deutschem Umlaut:
Die Challenge
<challenge> = "1234567z"
kombiniert mit dem Kennwort
<klartextpassword> = "äbc"
ergibt den Wert
<response> = "1234567z-9e224a41eeefa284df7bb0f26c2913e2"

Hier der letzte Stand meiner Response Funktion:

der Import den verwende sollte hier noch stehen:
import org.apache.commons.codec.binary.Base64;
der Rest ist Android Boardmittel.

public String getResponse(String challenge, String kennwort) {
byte[] text = (challenge + "-" + password).getBytes(Charset.forName("UTF-16LE";));
byte[] digest = null;
try {
digest = MessageDigest.getInstance("md5";).digest(text);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
byte[] testbyte = Base64.encodeBase64(digest);
String teststring = new String(testbyte);
return challenge + "-" + teststring;
}

Bin mir bei dem Base64 aber nicht sicher, da ich das leider immer wieder gerne vertausche.
Wäre super wenn mir dabei jemand helfen könnte damit ich das Login hin bekomme.

MFG

Antworten
Normen Düring
  • Forum-Beiträge: 15

04.06.2014, 14:16:48 via Website

So jetzt hab ich die Lösung selbst gefunden.

Die Fritzbox und dessen JavascriptMD5 verwendet die Methode Binary Hash und nicht die Methode String Hash im MD5 Algorithmus.

Jetzt habe ich mir einfach eine neue MD5 Methode geschrieben und siehe da jetzt kommt auch der richtige Wert für den Response raus.

"9e224a41eeefa284df7bb0f26c2913e2"

Meine Hash Methode:

  public String makeBinaryHashMD5(String text) {
      byte[] byteData = null;
      try {
          MessageDigest md = MessageDigest.getInstance(&quot;MD5&quot;);
          md.update(text.getBytes(&quot;UTF-16LE&quot;));
          byteData = md.digest();
      } catch (UnsupportedEncodingException e) {
          e.printStackTrace();
      } catch (NoSuchAlgorithmException e) {
          e.printStackTrace();
      }

      // convert the byte to hex format method 1
      StringBuffer sb = new StringBuffer();
      for (int i = 0; i &lt; byteData.length; i++) {
          sb.append(Integer.toString((byteData[i] &amp; 0xff) + 0x100, 16).substring(1));
      }
      return sb.toString();
  }

Vielleicht hilft es ja dem einen oder anderem.

MFG

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

04.06.2014, 17:55:21 via Website

Was willst du überhaupt bezwecken Automatischer Login an der FB?
Dafür gibt es schon eine AVM App.
Automatisches Login kannst du auch über http und JavaScript mit automatischem Ausfüllen der web Oberfläche erledigen.
Direkt geht das vlt. auch aber ist schwieriger.

Edit: Hab nicht gesehen dass du schon eine Lösung hast... ;)

— geändert am 04.06.2014, 18:02:50

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Normen Düring
  • Forum-Beiträge: 15

04.06.2014, 18:12:38 via Website

Was ich bezwecken will?

Ganz einfach mir ne native Android App programmieren mit der ich meine Box komplett über mein Telefon konfigurieren kann.

Gleich vor weg ich weiß das es schon sowas von AVM und andere Anbieter gibt und mir gefällt das alles nicht ganz einfach.

Da ich Android Developer bin mach ich mir die halt selbst und vielleicht stell ich die als Beta ein und alle die mir über die Beta Version helfen, bekommen die fertige vielleicht als Dankeschön gratis.

Aber bis es soweit ist wird es sicher noch ne kleine Weile dauern, da ich das in meiner Freizeit mache.

MFG

Antworten