Hallo,
ich hoffe ich habe bei der Boardsuche nichts übersehen und das richtige Unterforum ausgesucht :wink:
Ich lese zurzeit das Buch "Violent Python" von TJ O'Connor. Dort wird beschrieben, wie man einen Wörterbuch-Angriff via Python machen kann.
Als Beispiel wird, soweit ich das sehe DES als Algorithmus verwendet.
"egg" hierbei als Passwort und "HX" als Salt.
Soweit ist alles klar. Zum Schluss weist der Autor darauf hin, dass heutige Systeme andere Algorithmen verwenden und zeigt einen SHA-512 Hash als Beispiel. Als Aufgabe bleibt das Python-Script so zu ändern, dass es SHA-512 Hashes cracken könnte. Als zusätzlichen Hinweis sagt der Autor, dass die hashlib-library SHA-512 unterstützt.
Also habe ich mich ans Werk gemacht und versucht das zu implementieren (ich testete es an meinem eigenen Passwort), aber mit der hashlib kam ich immer auf ganz andere Hashes.
Ich fragte Google und fand unteranderem das hier:
So sollte es nach mehreren Quellen funktionieren, aber die Hashes hatten keinerlei Ähnlichkeit mit denen in meiner /etc/shadow.
Meine erste Frage wäre nun: Warum? Was habe ich bei der hashlib übersehen oder vielleicht falsch gemacht?
Ich habe dann noch weiter gesucht und gesucht und eine Lösung gefunden, die mich überrascht hat.
Nach einiger Recherche kam ich zu dem Schluss, dass crypt auf die cryptlib vom System gelinked sein könnte und fand heraus, dass diese in neueren Versionen auch SHA-512 unterstützt.
Weswegen ich hier nun schreibe: Zum einen suche ich den Fehler bei der Implementierung mit hashlib und zum anderen frage ich mich ob meine Vermutung, warum crypt das kann richtig ist.
(Zwischenzeitlich fragte ich mich schon ob meine Passwörter vielleicht nicht mit SHA-512 verschlüsselt wurden, aber laut Google und Ubuntu-Wiki zeigt die $6$ zu Beginn an, dass es SHA-512 ist.)
Ich habe das ganze auf einem Rechner mit Lubuntu getestet.
Vielen Dank schonmal für Eure Hilfe
ich hoffe ich habe bei der Boardsuche nichts übersehen und das richtige Unterforum ausgesucht :wink:
Ich lese zurzeit das Buch "Violent Python" von TJ O'Connor. Dort wird beschrieben, wie man einen Wörterbuch-Angriff via Python machen kann.
Als Beispiel wird, soweit ich das sehe DES als Algorithmus verwendet.
Code:
programmer$ python
>>> import crypt
>>> crypt.crypt("egg", "HX")
'HX9LLTdc/jiDE'
"egg" hierbei als Passwort und "HX" als Salt.
Soweit ist alles klar. Zum Schluss weist der Autor darauf hin, dass heutige Systeme andere Algorithmen verwenden und zeigt einen SHA-512 Hash als Beispiel. Als Aufgabe bleibt das Python-Script so zu ändern, dass es SHA-512 Hashes cracken könnte. Als zusätzlichen Hinweis sagt der Autor, dass die hashlib-library SHA-512 unterstützt.
Also habe ich mich ans Werk gemacht und versucht das zu implementieren (ich testete es an meinem eigenen Passwort), aber mit der hashlib kam ich immer auf ganz andere Hashes.
Ich fragte Google und fand unteranderem das hier:
Code:
import hashlib
output = hashlib.sha512( salt + password ).hexdigest()
So sollte es nach mehreren Quellen funktionieren, aber die Hashes hatten keinerlei Ähnlichkeit mit denen in meiner /etc/shadow.
Meine erste Frage wäre nun: Warum? Was habe ich bei der hashlib übersehen oder vielleicht falsch gemacht?
Ich habe dann noch weiter gesucht und gesucht und eine Lösung gefunden, die mich überrascht hat.
Code:
>>> import crypt
>>> output = crypt.crypt('password', '$6$%s$' % salt)
Nach einiger Recherche kam ich zu dem Schluss, dass crypt auf die cryptlib vom System gelinked sein könnte und fand heraus, dass diese in neueren Versionen auch SHA-512 unterstützt.
Weswegen ich hier nun schreibe: Zum einen suche ich den Fehler bei der Implementierung mit hashlib und zum anderen frage ich mich ob meine Vermutung, warum crypt das kann richtig ist.
(Zwischenzeitlich fragte ich mich schon ob meine Passwörter vielleicht nicht mit SHA-512 verschlüsselt wurden, aber laut Google und Ubuntu-Wiki zeigt die $6$ zu Beginn an, dass es SHA-512 ist.)
Ich habe das ganze auf einem Rechner mit Lubuntu getestet.
Vielen Dank schonmal für Eure Hilfe
