fox99
Bekanntes Mitglied
Hi Leute,
Ich habe ein kleines Problem: Ich habe mein Passwort vergessen. Glücklicherweise hab ich aber jedoch einen Hash von diesem Passwort (4ab02bf4174ed15d4fa73755bbc113ba) und ich weiss, wie der Hash berechnet wurde:
Wie komm ich jetzt wieder an mein Passwort?
Ok, mir geht es jetzt nicht um das Passwort, sondern eher um die Technik, wie man diese Aufgabe lösen kann. Mir geht es jetzt hier auch nicht darum fertige Progamme zu benutzen, sondern eher darum ein wenig selber zu programmieren, bzw. Ideeen und Algorithmen hier im Forum zu sammeln um die Technik zu verstehen.
Ich schmeiss also mal als 1. mal BruteForce in den Thread, welches z.B. so ausschauen könnte:
Der Nachteil hier ist, das es sehr Langsam ist, da es immer von Anfang an alle möglichen Variationen durchtestet.
Vorteil: Der Speicherverbrauch ist sehr gering.
Was könnte man jetzt machen, damit wir eine höhere Geschwindigkeit bekommen?
Ich habe ein kleines Problem: Ich habe mein Passwort vergessen. Glücklicherweise hab ich aber jedoch einen Hash von diesem Passwort (4ab02bf4174ed15d4fa73755bbc113ba) und ich weiss, wie der Hash berechnet wurde:
Code:
#!/bin/python
import hashlib
import sys
def calcHash(data, algo="md5"):
h = hashlib.new(algo)
h.update(data)
return h.hexdigest()
Wie komm ich jetzt wieder an mein Passwort?
Ok, mir geht es jetzt nicht um das Passwort, sondern eher um die Technik, wie man diese Aufgabe lösen kann. Mir geht es jetzt hier auch nicht darum fertige Progamme zu benutzen, sondern eher darum ein wenig selber zu programmieren, bzw. Ideeen und Algorithmen hier im Forum zu sammeln um die Technik zu verstehen.
Ich schmeiss also mal als 1. mal BruteForce in den Thread, welches z.B. so ausschauen könnte:
Code:
def hackIt2(length,hash,tmp=""):
if length == 0:
h = calcHash(tmp)
print "%s -> %s"%(tmp,h)
if h==hash:
print "found: %s -> '%s'"%(hash,tmp)
exit(0)
else:
for x in range(32,127):
tmp2 = tmp + chr(x)
hackIt2(length-1,hash,tmp2)
def hackIt(hash):
for x in range(4):
hackIt2(x,hash)
def main():
if len(sys.argv)<2:
print "usage: %s <hash>"%(sys.argv[0])
exit(1)
hash = sys.argv[1]
hackIt(hash)
if __name__=="__main__":
main()
Vorteil: Der Speicherverbrauch ist sehr gering.
Was könnte man jetzt machen, damit wir eine höhere Geschwindigkeit bekommen?