md5 decode

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Leonidas hat geschrieben:
blackbird hat geschrieben:OT: Warum sollte ein Passwort als Hash gespeichert sein?
Vielleicht wird das so zum Server übertragen? Aber ich finde das ohne Salt auch recht suspekt. Aber gut, ICQ wird ja sowieso unverschlüsselt übertragen, was will man da auch erwarten.
Jo. Weil wenn einfach nur der Hash übertragen wird brauchst du da ja gar nix zurückrechnen, einfach den Hash klauen.
TUFKAB – the user formerly known as blackbird
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

waere das der richtige ansatz um ein md5 hash zu knacken?:
(achtung, "quick and dirty")

Code: Alles auswählen

from hashlib import md5

def getMD5(stri):
    m = md5()
    m.update(stri)
    return m.digest()

abc = '$abcdefghijklmnopqrstuvwxyz_1234567890'

def abc_iter():
    for i0 in abc: 
        for i1 in abc: 
            for i2 in abc: 
                for i3 in abc: 
                    for i4 in abc:
                        yield i0+i1+i2+i3+i4.replace('$', '')

for i in abc_iter():
    if getMD5(i) == '\xcd\xd4\x2c\x2d\x32\xd7\xa8\x8d\xa0\xb0\xb5\xd5\xfe\x7d\xe8\xde':
        print i
cp != mv
cyp++
User
Beiträge: 69
Registriert: Freitag 22. September 2006, 13:54

Code: Alles auswählen

import md5

for i in range(len(md5.new("XXXXXXXX").digest())):
	print ord(md5.new("XXXXXXXX").digest()[i])
>>>28
>>>110
>>>72
>>>132
>>>73
>>>227
>>>116
>>>26
>>>153
>>>147
>>>136
>>>247
>>>189
>>>125
>>>7
>>>174
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

@cyp++: was soll uns das jetzt sagen?
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
cyp++
User
Beiträge: 69
Registriert: Freitag 22. September 2006, 13:54

ich habe geguckt was rauskommt wenn ich es selbst verschlüssel.. dabei kommt leider nicht das raus, was in der Registry steht, evtl. könnte man md5 jetzt ausschließen?
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

lumax hat geschrieben:
Sr4l hat geschrieben:Man kann höchstwahrscheinliche Werte für einen kurzen Md5 Hash zurück errechnen mehr aber auch nicht.
Sowas wie kurze MD5-Hashes gibt es nicht, ein MD5-Hash ist immer 128 Bit lang. Und zurueckrechnen kann man da nichts, das ist ja das Wesen solcher Algorithmen. Alles, was du machen kannst, ist Bruteforcen oder in vorhandenen Tabellen mit MD5-Hashes und entsprechenden Strings nachgucken.
natürlich meinte ich kurze Passwörter die in MD5 gehasht sind wenn aus 16bit Passwort 128bit hash werden kann man es recovern. Wenn aber aus einder 5MB Datei ein 128bit hash erzeugt wird kann man sie wohl nicht mehr wieder herstellen, sonst wäre es ja die geilste Methode um etwas zu zippen ;-)

*edit: hehe
Zuletzt geändert von Sr4l am Sonntag 10. Juni 2007, 14:07, insgesamt 1-mal geändert.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

lumax hat geschrieben:
veers hat geschrieben:Naja im Falle von MD5 gibt es da ja noch weitere Attacken.
z.B.? Okay, es gibt natuerlich Erweiterungen der Konzepte, die ich gepostet habe, aber sonst? So Sachen wie Kollisionen z.B. helfen dir ja nicht weiter, wenn du einen Hash knacken willst.
Grundsätzlich gilt eine Kollision schon als "geknackt". Aber es kommt natürlich auf die Anwendung an. Für ein Challenge Response System müsste das ganze immernoch tun ;)

10 Bit Passwort? 1.25 Buchstaben? *g*
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

cyp++ hat geschrieben:ich habe geguckt was rauskommt wenn ich es selbst verschlüssel.. dabei kommt leider nicht das raus, was in der Registry steht, evtl. könnte man md5 jetzt ausschließen?
Nein.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
cyp++
User
Beiträge: 69
Registriert: Freitag 22. September 2006, 13:54

birkenfeld hat geschrieben:
cyp++ hat geschrieben:ich habe geguckt was rauskommt wenn ich es selbst verschlüssel.. dabei kommt leider nicht das raus, was in der Registry steht, evtl. könnte man md5 jetzt ausschließen?
Nein.
wieso nicht?
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Wieso muss der MD5 genau über dein Passwort erstellt werden? Es gibt z.B. das Konzept des "Salt", also einem bekannten String, der vor dem Hashen z.B. vorangestellt wird.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Es kann ja auch sein das sie nicht nur dein Passwort allein nehmen.

Zum Beispiel ist dein Passwort hallo

dann wird vielleicht
"halloICQ"
verschlüsselt schon kommt etwas ganz anderes heraus

***edit***
das geht hier ja ab wie in einem chat ;-)
Zuletzt geändert von Sr4l am Sonntag 10. Juni 2007, 14:12, insgesamt 1-mal geändert.
cyp++
User
Beiträge: 69
Registriert: Freitag 22. September 2006, 13:54

Achso, stimmt.
Benutzeravatar
mq
User
Beiträge: 124
Registriert: Samstag 1. Januar 2005, 19:14

veers hat geschrieben:Grundsätzlich gilt eine Kollision schon als "geknackt". Aber es kommt natürlich auf die Anwendung an. Für ein Challenge Response System müsste das ganze immernoch tun ;)
Joa, dass das ganze kryptografisch gesehen nicht mehr wirklich sicher ist, ist wohl unbestritten. Ich ging aber vom konkreten Anwendungsfall hier aus, und da ist so eine Kollision herzlich egal, bei der Wiederherstellung hilft die ja nicht.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Naja, stellt euch vor, wir haben eine Rainbowtable in der der Hash drinsteht und ein 2000 Zeichen langer Text als "Schlüssel". Wenn ICQ nur hashes übertragen würde, dann würde dieser Text auch als Passwort durchgehen, unabhängig davon ob er es nun ist oder nicht.

Weiß eigentlich jemand, wie das OSCAR-Protokoll nun die Passwörter genau überträgt?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Leonidas hat geschrieben:Weiß eigentlich jemand, wie das OSCAR-Protokoll nun die Passwörter genau überträgt?
http://developer.pidgin.im/viewmtn/revi ... ily_auth.c
;)
Alt: xor "verschlüsselung" (Aua?!)
Neu: MD5(password + "AOL Instant Messenger (SM)") (Immernoch Aua?!)

So hab ich den source zumindest auf die schnelle Interpretiert.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich muss zugeben, bei Funktionsnamen wie ``goddamnicq`` und ``goddamnicq2``muss ich grinsen :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Das erinnert an ein ehemals fest eingebautes user/pass-Paar in alten Interbase-Versionen: politcaly/incorrect

Es scheint, als manche Programmierer ihre Stimmung nutzen, um Passwörter zu generieren :)
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Auch wenn ich einiges wiederhole:

MD5 und andere Hash-Verfahren sind Einwegverfahren und nicht umkehrbar. Unterschiedliche Klartexte können auch identische Hashes haben (Kollisionen).

Hashes kann man, wenn der jeweilige Algorithmus keine mathematischen Schwächen hat, nur durch Brute-Force knacken - aber auch nicht sicher auf den Klartext schließen (wegen der möglichen Kollisionen). Durch andere mathematische Schwächen kann man aber den für Angriffe notwendigen Aufwand verkürzen.

Wer's eilig hat, kann Rainbow Tables - vorberechnete Hashes zu Strings - konsultieren und so schnell mögliche Klartexte finden (sofern diese auch vorberechnet wurden). Ein paar Gigabyte kommen da aber für nicht allzu komplexe Strings schnell zusammen.

Was ICQ angeht wurden die Passwörter, bevor man MD5 verwendete, in der Tat über XOR "verschlüsselt". Um solche Chiffren zu dekodieren, sollte dir dieser Code von mir behilflich sein.

Möglicherweise kannst du ICQ dazu bringen, das Passwort über die alte Methode zu chiffrieren - sofern es denn in wiederherstellbarere Form vorliegt, die ein Client dazu nutzen kann. Bspw. habe ich mit Miranda-IM das Passwort geXORt versenden und mitsniffen können.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

andere Möglichkeit:
du schreibst ein Script das das Passwort ändert angefangen bei 0 aufgehört bei ZZZZZZZZZZ (mit allen möglichen Zeichen und in groß und klein) und nach jedem Passwort ließt du die Daten aus aus und speicherst sie, dann kann dir egal sein welche Verschlüsselung angewendet wurde.

Zu Prüfen ist nur ob ein und das selbe Passwort bei verschiedenen Usern auch den gleichen Hash hat, evt auch auf verschiedenen Rechnern prüfen sonst war alles umsonst.

Ich wollte mich selber mal dran machen bekomme aber kein ICQ 6 auf Wine installiert. Das 2003er müsste gehen wenn ich IE 5 drauf bekomme.
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Maöl ne dumme Frage:
Wenn du dein Passwort nichtmehr weist, wieso holst du dir nicht einfach ein neues?
https://www.icq.com/password/
LG
Antworten