Welche Hashfunktion kommt hier zum Einsatz?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Exxter
Beiträge: 385
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Welche Hashfunktion kommt hier zum Einsatz?

Beitrag von Exxter » 20.01.2020 13:37:13

Hallo,

ich weiß, das betrifft nicht direkt Linux und ich entschuldige mich im Voraus, wenn die Frage nicht zu beantworten ist, aber vielleicht hat hier doch jemand eine Idee dazu. In einem Tool (leider nicht Open Source) wird ein Passwort gehasht. Dieses Passwort müsste ich mit einer Variable ersetzen, dazu muss ich aber wissen, wie das Passwort gehasht wird um die Variable korrekt übergeben zu können. Beispiele gehaster Passwörter:

Passwort - Hashwert
test 5db8349b6528efc8
Test 02276c9a13998c9e
blafasel 120197738f91f5c5
DebianLinux d0f8d61951d17e73f13222cbfad89393
ä f820207da0399226
123456789 28315699b69a0f153988845d3c4fe59b

Also das Tool macht aus "test" immer "5db8349b6528efc8", egal wie oft ich das neu erzeuge. Wenn ich "test" als Variable setze kommt der Error:

"expected hexadecimal string but got "test" instead"

Wenn ich aber zB. hier ASCII zu Hex umwandle: https://www.rapidtables.com/convert/num ... o-hex.html

Kommt bei "test" "74 65 73 74". Und auch wenn ich das so übergebe, kommt:

"expected hexadecimal string but got "74 65 73 74" instead"

Hat vielleicht jemand eine Idee, welche Hashfunktion hier verwendet wird?

Benutzeravatar
Meillo
Moderator
Beiträge: 9241
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Welche Hashfunktion kommt hier zum Einsatz?

Beitrag von Meillo » 20.01.2020 13:44:56

Exxter hat geschrieben: ↑ zum Beitrag ↑
20.01.2020 13:37:13
Beispiele gehaster Passwörter:

Passwort - Hashwert
test 5db8349b6528efc8
Test 02276c9a13998c9e
blafasel 120197738f91f5c5
DebianLinux d0f8d61951d17e73f13222cbfad89393
ä f820207da0399226
123456789 28315699b69a0f153988845d3c4fe59b
Bei Werten bis 8 Zeichen ist der Hash 16 Zeichen lang. Bei Worten groesser 8 Zeichen ist der Hash 32 Zeichen lang. Wie lange ist er wenn du ein Wort mit 20 Zeichen eingibst? 48 Zeichen?

Seltsamer (und unpraktischer) Hash, der laengenvariabel ist. Nicht dass ich hier ein Experte waere, aber das sieht mir nach einer Eigenentwicklung aus, denn welches Standardverfahren wuerde schon einen laengenvariablen Hash erzeugen?

Wenn ich "5db8349b6528efc8" mit einer Variable ersetze kommt der Error:

"expected hexadecimal string but got "5db8349b6528efc8" instead"
Vielleicht musst du auch nochmal an der Stelle ansetzen. Die Fehlermeldung macht fuer mich keinen Sinn, denn der String ist hexadezimal.

Schaue an der Stelle nochmal genauer hin und debugge. Es koennte sein, dass du hier einen sonstigen Fehler machst, der sich dann nur darauf auswirkt.

Kannst du den Wert des Originalprogramms an der Stelle irgendwie abgreifen? Das koennte helfen.


EDIT: Uups, hast du deinen Post nochmal geaendert? Mein Zitat passt nicht mehr. Dass die Meldung bei ``test'' kommt ist klar, weil `t' nicht hexadezimal ist.
Use ed once in a while!

Exxter
Beiträge: 385
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Re: Welche Hashfunktion kommt hier zum Einsatz?

Beitrag von Exxter » 20.01.2020 14:04:15

Ein längeres Passwort ergibt:

Welche Hashfunktion kommt hier zum Einsatz? - 5a0a57912379404c855a1f00cae8fe60074e44c9aeba2ba5f225e3a3c784aa7381215164266d7505bac4ae2c8f012ef0

Eigenentwicklung ist unwahrscheinlich, die Firma die das Tool entwickelt versucht an jeder Stelle, Open Source zu benutzen. Im Grunde ist das ein "Programmbaukasten" der auf TCL aufsetzt (wen es interessiert, es handelt sich um die Software Speedmaxx von acatec.de. Ich ging davon aus, dass diese Info nicht relevant ist).

Ja, entschuldige, ich habe den Post nochmal verändert. Wenn ich den gehashten Wert von test, also "5db8349b6528efc8" in einer Variable übergebe, kommt:

Code: Alles auswählen

ERROR     : 0Missing R3NAME=... or ASHOST=... in connect_param in RfcOpenEx
             :     while executing
             : "# Compiled -- no source code available
             : error "called a copy of a compiled script""

Wenn ich stattdessen "test" als Variable übergebe kommt:

Code: Alles auswählen

ERROR     : expected hexadecimal string but got "test" instead
             :     while executing
             : "# Compiled -- no source code available
             : error "called a copy of a compiled script""
Es würde also mit dem gehashten Wert funktionieren. Um aber ein vom Benutzer eingegebenes Passwort zu übergeben, muss ich wissen wie ich das hashen muss, um es als Variable zu übergeben.

Benutzeravatar
Meillo
Moderator
Beiträge: 9241
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Welche Hashfunktion kommt hier zum Einsatz?

Beitrag von Meillo » 20.01.2020 14:46:23

Exxter hat geschrieben: ↑ zum Beitrag ↑
20.01.2020 14:04:15
Ein längeres Passwort ergibt:

Welche Hashfunktion kommt hier zum Einsatz? - 5a0a57912379404c855a1f00cae8fe60074e44c9aeba2ba5f225e3a3c784aa7381215164266d7505bac4ae2c8f012ef0
Der Hashwert ist also doppelt so lang wie der Klartext-String und auf 8-Byte-Einheiten gefuellt.

Wie das gehasht worden ist oder wie man ansetzen kann um das herauszufinden, kann vielleicht wanne helfen. Der taucht bestimmt bald hier auf. ;-)

Mir fallen hoechstens diese Ansatzpunkte ein:

- Aendert sich der Hash komplett wenn du nur das letzte Zeichen aenderst oder ein Zeichen anfuegst oder weglaesst?

- Was gibt es in TCL an Hashfunktionen und dergleichen (str2hex, ...) in der Standard-Bibliothek? Passt davon irgendwas irgendwie?

- Online-Recherche zu der Software, ob deine Frage vielleicht schonmal in anderen Foren diskutiert worden ist.

- Falls deine Absicht voellig unproblematisch ist und es die Firma noch gibt, koenntest du sie direkt kontaktieren, ob sie dir entweder sagen wie sie es gemacht haben oder dir zumindest ein binaeres reines Hash-Utility bereitstellen koennen, das nur die Hashing-Komponente enthaelt. (Ich kenne einen Fall in dem zweiteres dann ein akzeptabler Loesungsweg fuer beide Seiten war.)

Eigenentwicklung ist unwahrscheinlich, die Firma die das Tool entwickelt versucht an jeder Stelle, Open Source zu benutzen. Im Grunde ist das ein "Programmbaukasten" der auf TCL
TCL ist cool!
aufsetzt (wen es interessiert, es handelt sich um die Software Speedmaxx von acatec.de. Ich ging davon aus, dass diese Info nicht relevant ist).

Ja, entschuldige, ich habe den Post nochmal verändert. Wenn ich den gehashten Wert von test, also "5db8349b6528efc8" in einer Variable übergebe, kommt:

Code: Alles auswählen

ERROR     : 0Missing R3NAME=... or ASHOST=... in connect_param in RfcOpenEx
             :     while executing
             : "# Compiled -- no source code available
             : error "called a copy of a compiled script""

Wenn ich stattdessen "test" als Variable übergebe kommt:

Code: Alles auswählen

ERROR     : expected hexadecimal string but got "test" instead
             :     while executing
             : "# Compiled -- no source code available
             : error "called a copy of a compiled script""
Es würde also mit dem gehashten Wert funktionieren. Um aber ein vom Benutzer eingegebenes Passwort zu übergeben, muss ich wissen wie ich das hashen muss, um es als Variable zu übergeben.
Okay, damit waeren wir schonmal einen Schritt weiter.


Um an Schritt zwei mal anders anzusetzen: Kannst du mit der vorhandenen Blackbox-Software irgendwie von aussen ein neues Passwort setzen und das wieder auslesen? Dann koenntest du es als Passwort-Hash-Generator verwenden. Ist zwar nicht der eleganteste Weg, aber es waere vielleicht ein Ansatzpunkt den man nutzen kann, statt nur rumzusitzen und auf die Hashes zu starren, in der Hoffnung irgendein Verfahren zu erkennen bzw. zu warten, dass sonstjemand die Antwort weiss.
Use ed once in a while!

Exxter
Beiträge: 385
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Re: Welche Hashfunktion kommt hier zum Einsatz?

Beitrag von Exxter » 21.01.2020 08:26:08

Hallo Meillo,

ich habe das Problem gelöst bekommen, nachdem ich Kontakt mit dem Hersteller aufgenommen habe. Es ist mit Blowfish gehast. Aber es geht auch noch anders, ich muss die Variable anders übergeben (wie wird keinen Sinn machen anzugeben da das Tool wohl eher niemand nutzen wird), da funktioniert es ohne den Fehler.

Vielen herzlichen Dank für deine Hilfe!

Benutzeravatar
Meillo
Moderator
Beiträge: 9241
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Welche Hashfunktion kommt hier zum Einsatz?

Beitrag von Meillo » 21.01.2020 09:36:33

Exxter hat geschrieben: ↑ zum Beitrag ↑
21.01.2020 08:26:08
ich habe das Problem gelöst bekommen, nachdem ich Kontakt mit dem Hersteller aufgenommen habe.
Klasse, dass das so geklappt hat. :-)
Es ist mit Blowfish gehast.
``Blowfish is a symmetric-key block cipher'' (Wikipedia) ... also gar kein (Einweg-)Hash sondern eine symmetrische Verschluesselung. Aber dann muss es wohl auch noch einen Key geben ...

Jedenfalls befinden wir uns hier sehr am Rand meines Wissenshorizonts. ;-)
Aber es geht auch noch anders, ich muss die Variable anders übergeben (wie wird keinen Sinn machen anzugeben da das Tool wohl eher niemand nutzen wird), da funktioniert es ohne den Fehler.
Wunderbar! :THX:
Use ed once in a while!

reox
Beiträge: 2530
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: Welche Hashfunktion kommt hier zum Einsatz?

Beitrag von reox » 21.01.2020 09:43:48

Meillo hat geschrieben: ↑ zum Beitrag ↑
21.01.2020 09:36:33
Es ist mit Blowfish gehast.
``Blowfish is a symmetric-key block cipher'' (Wikipedia) ... also gar kein (Einweg-)Hash sondern eine symmetrische Verschluesselung. Aber dann muss es wohl auch noch einen Key geben ...
Vllt meinte der hersteller bcrypt? Aber das sollte ja einen output konstanter länge haben...
Ist auf jeden fall immer merkwürdig wenn man passwörter nicht mit konstanter länge speichert... Wie legt man das in der Datenbank sinnvoll ab? Was passiert wenn jemand ein extrem langes PW eingibt?

Antworten