Fritzbox md5 Hash (jNizM)

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

User avatar
haichen
Posts: 631
Joined: 09 Feb 2014, 08:24

Fritzbox md5 Hash (jNizM)

06 Feb 2017, 06:05

Hallo, die Frage geht gerne an jNizM weil ich seine Hash-Funktion verwende (oder halt wer helfen kann).
Ich will mich mit AutoHotkey bei meiner Fritzbox (Router) anmelden.
Zum anmelden muss man per POST eine "response" abschicken, die sich aus dem Password und einem md5 hash zusammensetzt.
Den Hash wollte ich mit jNizMs bcrypt_md5(string) erzeugen.
Ich kann den Hash jedoch nicht nachvollziehen.

Die js Funktion auf der Fritzbox erzeugt mit den nachfolgenden Einstellungen den Hash:

Code: Select all

 
/*
* A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
* Digest Algorithm, as defined in RFC 1321.
* Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
* Distributed under the BSD License
* See http://pajhome.org.uk/crypt/md5 for more info.
*/
/*
* Configurable variables. You may need to tweak these to be compatible with
* the server-side, but the defaults work in most cases.
*/
var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
/* var chrsz = 8; */ /* bits per input character. 8 - ASCII; 16 - Unicode */
var chrsz = 16; /* bits per input character. 8 - ASCII; 16 - Unicode */
/*
* These are the functions you'll usually want to call
* They take string arguments and return either hex or base-64 encoded strings
*/
function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
..

jNizMs bcrypt_md5(string) erzeugt die Variante mit var chrsz = 8 (Ascii)
ich brauche das Ergebniss das man in der md5.js mit chrsz = 16 (unicode) erhält.

Das hier wird durch die md5.js erzeugt:
var chrsz = 16
hex_md5("The quick brown fox jumps over the lazy dog")=>b0986ae6ee1eefee8a4a399090126837

var chrsz = 8
hex_md5("The quick brown fox jumps over the lazy dog")=>9e107d9d372bb6826bd81d3542a419d6

jNizM:
bcrypt_md5("The quick brown fox jumps over the lazy dog")=>9e107d9d372bb6826bd81d3542a419d6

Gibt es eine Einstellung die ich in bcrypt_md5(string) anpassen kann, oder eine andere md5 funktion?

Code: Select all

MsgBox % bcrypt_md5("The quick brown fox jumps over the lazy dog")
; ==> 9e107d9d372bb6826bd81d3542a419d6
; ==> gewünscht : b0986ae6ee1eefee8a4a399090126837
bcrypt_md5(string)
{
 static BCRYPT_MD5_ALGORITHM := "MD5"
 static BCRYPT_HASH_LENGTH := "HashDigestLength"
 if !(hBCRYPT := DllCall("LoadLibrary", "str", "bcrypt.dll", "ptr"))
 throw Exception("Failed to load bcrypt.dll", -1)
 if (NT_STATUS := DllCall("bcrypt\BCryptOpenAlgorithmProvider", "ptr*", hAlgo, "ptr", &BCRYPT_MD5_ALGORITHM, "ptr", 0, "uint", 0) != 0)
 throw Exception("BCryptOpenAlgorithmProvider: " NT_STATUS, -1)
 if (NT_STATUS := DllCall("bcrypt\BCryptGetProperty", "ptr", hAlgo, "ptr", &BCRYPT_HASH_LENGTH, "uint*", cbHash, "uint", 4, "uint*", cbResult, "uint", 0) != 0)
 throw Exception("BCryptGetProperty: " NT_STATUS, -1)
 VarSetCapacity(pbInput, StrPut(string, "UTF-8"), 0) && cbInput := StrPut(string, &pbInput, "UTF-8") - 1, VarSetCapacity(pbHash, cbHash, 0)
 if (NT_STATUS := DllCall("bcrypt\BCryptHash", "ptr", hAlgo, "ptr", 0, "uint", 0, "ptr", &pbInput, "uint", cbInput, "ptr", &pbHash, "uint", cbHash) != 0)
 throw Exception("BCryptHash: " NT_STATUS, -1)
 loop % cbHash
 hash .= Format("{:02x}", NumGet(pbHash, A_Index - 1, "uchar"))
 DllCall("bcrypt\BCryptCloseAlgorithmProvider", "ptr", hAlgo, "uint", 0)
 DllCall("FreeLibrary", "ptr", hBCRYPT)
 return hash
}
User avatar
jNizM
Posts: 3183
Joined: 30 Sep 2013, 01:33
Contact:

Re: Fritzbox md5 Hash (jNizM)

06 Feb 2017, 07:09

Also mein Ergebnis ist das Gleiche wie auf der Wiki-Seite von MD5 MD5-Hashes

Windows 10 - x64
AutoHotkey 1.1.24.05 x64 Unicode

Aber ich kann mal schauen ob ich was dazu finde

btw.. wenn ich nach 9e107d9d372bb6826bd81d3542a419d6 google bekomme ich hunderte Einträge und bei b0986ae6ee1eefee8a4a399090126837 kommt nichts
[AHK] v2.0.5 | [WIN] 11 Pro (Version 22H2) | [GitHub] Profile
User avatar
haichen
Posts: 631
Joined: 09 Feb 2014, 08:24

Re: Fritzbox md5 Hash (jNizM)

06 Feb 2017, 07:18

Das Ergebnis von deiner Funktion ist auf jedenfall richtig. Ich hab bloß nicht rausbekommen was die Fritzbox ausrechnet. Die bekommt mit dem Parameter var chrsz = 8 dasselbe wie du. Mit dem Wert 16 rechnet sie aber ihren hash wert aus. Ich hatte gehofft du wüsstest vielleicht was deren md5 funktion macht. ..
Ich hatte auch mal nach den hash gegoogelt..
just me
Posts: 9458
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Fritzbox md5 Hash (jNizM)

06 Feb 2017, 07:20

Moin,

mein Vorschlag:

Code: Select all

MsgBox % bcrypt_md5("The quick brown fox jumps over the lazy dog", "UTF-16")
; ==> gewünscht : b0986ae6ee1eefee8a4a399090126837
MsgBox % bcrypt_md5("The quick brown fox jumps over the lazy dog")
; ==> 9e107d9d372bb6826bd81d3542a419d6
bcrypt_md5(string, encoding := "UTF-8")
{
   static BCRYPT_MD5_ALGORITHM := "MD5"
   static BCRYPT_HASH_LENGTH := "HashDigestLength"
   If encoding not in CP0,UTF-8,UTF-16
      Return ""
   ts := (encoding = "UTF-16") ? 2 : 1
   if !(hBCRYPT := DllCall("LoadLibrary", "str", "bcrypt.dll", "ptr"))
      throw Exception("Failed to load bcrypt.dll", -1)
   if (NT_STATUS := DllCall("bcrypt\BCryptOpenAlgorithmProvider", "ptr*", hAlgo, "ptr", &BCRYPT_MD5_ALGORITHM, "ptr", 0, "uint", 0) != 0)
      throw Exception("BCryptOpenAlgorithmProvider: " NT_STATUS, -1)
   if (NT_STATUS := DllCall("bcrypt\BCryptGetProperty", "ptr", hAlgo, "ptr", &BCRYPT_HASH_LENGTH, "uint*", cbHash, "uint", 4, "uint*", cbResult, "uint", 0) != 0)
      throw Exception("BCryptGetProperty: " NT_STATUS, -1)
   VarSetCapacity(pbInput, cbInput := (StrPut(string, encoding) - 1) * ts, 0), StrPut(string, &pbInput, encoding), VarSetCapacity(pbHash, cbHash, 0)
   if (NT_STATUS := DllCall("bcrypt\BCryptHash", "ptr", hAlgo, "ptr", 0, "uint", 0, "ptr", &pbInput, "uint", cbInput, "ptr", &pbHash, "uint", cbHash) != 0)
      throw Exception("BCryptHash: " NT_STATUS, -1)
   loop % cbHash
      hash .= Format("{:02x}", NumGet(pbHash, A_Index - 1, "uchar"))
   DllCall("bcrypt\BCryptCloseAlgorithmProvider", "ptr", hAlgo, "uint", 0)
   DllCall("FreeLibrary", "ptr", hBCRYPT)
   return hash
}
Last edited by just me on 06 Feb 2017, 08:00, edited 1 time in total.
Reason: Defaultzuweisung für encoding.
User avatar
jNizM
Posts: 3183
Joined: 30 Sep 2013, 01:33
Contact:

Re: Fritzbox md5 Hash (jNizM)

06 Feb 2017, 07:31

oder so :D
[AHK] v2.0.5 | [WIN] 11 Pro (Version 22H2) | [GitHub] Profile
User avatar
haichen
Posts: 631
Joined: 09 Feb 2014, 08:24

Re: Fritzbox md5 Hash (jNizM)

06 Feb 2017, 07:37

Ja, super! Das ergibt genau die gewünschte Antwort.
Mal schauen ob ich mich damit bei der Fritzbox einloggen kann.

Vielen Dank für die schnellen Antworten
haichen
User avatar
haichen
Posts: 631
Joined: 09 Feb 2014, 08:24

Re: Fritzbox md5 Hash (jNizM)

06 Feb 2017, 07:58

Kurzes Testergebnis: Login bei der Fritzbox klappt!
Danke!!
User avatar
jNizM
Posts: 3183
Joined: 30 Sep 2013, 01:33
Contact:

Re: Fritzbox md5 Hash (jNizM)

06 Feb 2017, 09:31

Mich würde gerne mal interessieren was du mit AutoHotkey und Fritzbox so anstellst? Habe nämlich auch eine daheim rumstauben :D
[AHK] v2.0.5 | [WIN] 11 Pro (Version 22H2) | [GitHub] Profile
User avatar
haichen
Posts: 631
Joined: 09 Feb 2014, 08:24

Re: Fritzbox md5 Hash (jNizM)

06 Feb 2017, 12:21

Ich hab vor kurzem mal mein Dect-Festnetztelefon an die Fritzbox gehängt. Dadurch kann man die ein- und ausgehenden Gespräche sehen, Anrufbeantworter abhören etc. Ich wollte jetzt mal schauen ob man das mit AutoHotkey anzeigen kann.
Auf der versteckten Seite http://fritz.box/html/capture.html kann man zudem den kompletten IP-Verkehr des Routers mitschneiden. zB. kann man dann daraus mit Wireshark die über IP-geführten Telefongespräche herausholen. Ist natürlich nur legal, wenn der mitgeschnittene sein einverständis gegeben hat. Da ich noch eine klassischen ISDN-Festnetznummer habe, geht das bei mir nur mit einer SIP Nr die ich mir mal zugelegt habe.
Eigentlich mache ich das nur aus Spass und um ein bißchen zu lernen.. Fange in kürze ein Umschulung zum Fachinformatiker an.
Best-Code-in-Use
Posts: 184
Joined: 01 Dec 2015, 05:13
Location: Germany

06 Feb 2017, 23:33

Sehr interessant...

Möglicherweise lassen sich dann auch Dect Geräte schalten? Wie zum Beispiel die FRITZ!DECT 200 / 210???

Dies ist ja bisher nur über entsprechende PHP oder Perl Skripte möglich. Hat sich Jemand damit schon einmal beschäftigt?
Greetings Best-Code-in-Use

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 73 guests