
Ein Deep-Learning-Ansatz zum Erraten von Passwörtern (https://arxiv.org/abs/1709.00440)
Dieses Repository enthält den Code für das Paper PassGAN: A Deep Learning Approach for Password Guessing.
Das Modell von PassGAN stammt aus Improved Training of Wasserstein GANs und es wird angenommen, dass die Autoren von PassGAN in ihrer Arbeit die improved_wgan_training TensorFlow-Implementierung verwendet haben. Aus diesem Grund habe ich diese Referenzimplementierung in diesem Repository modifiziert, um das Training (train.py) und das Sampling (sample.py) zu erleichtern. Dieses Repo trägt bei:
# erfordert vorinstalliertes CUDA 8
pip install -r requirements.txt
Verwenden Sie das vortrainierte Modell, um 1.000.000 Passwörter zu generieren und sie in gen_passwords.txt zu speichern.
python sample.py \
--input-dir pretrained \
--checkpoint pretrained/checkpoints/195000.ckpt \
--output gen_passwords.txt \
--batch-size 1024 \
--num-samples 1000000
Das Training eines Modells auf einem großen Datensatz (100 MB+) kann auf einer GTX 1080 mehrere Stunden dauern.
# download the rockyou training data
# contains 80% of the full rockyou passwords (with repeats)
# that are 10 characters or less
curl -L -o data/train.txt https://github.com/brannondorsey/PassGAN/releases/download/data/rockyou-train.txt
# train for 200000 iterations, saving checkpoints every 5000
# uses the default hyperparameters from the paper
python train.py --output-dir output --training-data data/train.txt
Sie sind ermutigt, mit eigenen Passwort-Leaks und Datensätzen zu trainieren. Einige großartige Orte, um solche zu finden, sind:
Ich habe noch keine erschöpfende Analyse meines Versuchs, die Ergebnisse des PassGAN-Papers zu reproduzieren, durchgeführt. Mit dem vortrainierten RockYou-Modell zur Generierung von 10⁸ Passwortbeispielen konnte ich jedoch 630.347 (23,97 %) eindeutige Passwörter in den Testdaten abgleichen, unter Verwendung einer 80%/20%-Trainings-/Test-Aufteilung.
Generell bin ich etwas überrascht (und enttäuscht), dass die Autoren von PassGAN auf vorherige Arbeiten im Bereich der ML-Passwortgenerierung verweisen, ihre Ergebnisse aber nicht mit dieser Forschung vergleichen. Meine ersten Erfahrungen mit PassGAN lassen mich glauben, dass es sowohl den RNN- als auch den Markov-basierten Ansätzen aus diesem Paper deutlich unterlegen wäre, und ich hoffe, dass die Autoren ihre Ergebnisse nicht aus diesem Grund nicht verglichen haben.
Dieser Code wird unter einer MIT-Lizenz veröffentlicht. Sie dürfen ihn unter diesen Bedingungen frei verwenden, modifizieren, verbreiten oder verkaufen.
Der größte Teil der Anerkennung für den Code in diesem Repository gebührt @igul222 für seine Arbeit am improved_wgan_training. Ich habe seinen Code lediglich etwas modularisiert, eine Kommandozeilenschnittstelle hinzugefügt und ihn für das PassGAN-Paper spezialisiert.
Die PassGAN-Forschung und das Paper wurden von Briland Hitaj, Paolo Gasti, Giuseppe Ateniese und Fernando Perez-Cruz veröffentlicht.