
نهج تعلم عميق لتخمين كلمات المرور (https://arxiv.org/abs/1709.00440)
يحتوي هذا المستودع على كود ورقة البحث PassGAN: A Deep Learning Approach for Password Guessing.
النموذج المستخدم في PassGAN مأخوذ من ورقة Improved Training of Wasserstein GANs ومن المفترض أن مؤلفي PassGAN استخدموا تطبيق improved_wgan_training على TensorFlow في عملهم. لهذا السبب، قمت بتعديل ذلك التطبيق المرجعي في هذا المستودع لتسهيل التدريب (train.py) وأخذ العينات (sample.py). يساهم هذا المستودع في:
# يتطلب تثبيت CUDA 8 مسبقًا
pip install -r requirements.txt
استخدم النموذج المُدرَّب مسبقًا لتوليد 1,000,000 كلمة مرور، وحفظها في gen_passwords.txt.
python sample.py \
--input-dir pretrained \
--checkpoint pretrained/checkpoints/195000.ckpt \
--output gen_passwords.txt \
--batch-size 1024 \
--num-samples 1000000
قد يستغرق تدريب نموذج على مجموعة بيانات كبيرة (100MB+) عدة ساعات على بطاقة GTX 1080.
# تحميل بيانات تدريب RockYou
# تحتوي على 80% من كلمات مرور RockYou الكاملة (مع التكرار)
# التي يبلغ طولها 10 أحرف أو أقل
curl -L -o data/train.txt https://github.com/brannondorsey/PassGAN/releases/download/data/rockyou-train.txt
# تدريب لمدة 200000 تكرار، مع حفظ نقاط التحقق كل 5000 تكرار
# يستخدم المعاملات الافتراضية من الورقة
python train.py --output-dir output --training-data data/train.txt
نشجعك على التدريب باستخدام تسريبات كلمات المرور ومجموعات البيانات الخاصة بك. بعض الأماكن الرائعة للعثور عليها تشمل:
لم أقم بعد بتحليل شامل لمحاولتي إعادة إنتاج النتائج من ورقة PassGAN. ومع ذلك، باستخدام نموذج RockYou المُدرَّب مسبقًا لتوليد 10⁸ عينة كلمة مرور، تمكنت من مطابقة 630,347 (23.97%) كلمة مرور فريدة في بيانات الاختبار، باستخدام تقسيم 80%/20% للتدريب/الاختبار.
بشكل عام، أنا مندهش إلى حد ما (ومحبط) من أن مؤلفي PassGAN أشاروا إلى عمل سابق في مجال توليد كلمات المرور باستخدام التعلم الآلي ولكنهم لم يقارنوا نتائجهم بذلك البحث. تجربتي الأولية مع PassGAN تقودني إلى الاعتقاد بأنها ستكون أقل أداءً بشكل ملحوظ من نهجي RNN و Markov المذكورين في تلك الورقة، وآمل ألا يكون هذا هو السبب الذي جعل المؤلفين يختارون عدم مقارنة النتائج.
تم إصدار هذا الكود بموجب رخصة MIT. أنت حر في استخدامه وتعديله وتوزيعه أو بيعه بموجب تلك الشروط.
الغالبية العظمى من الفضل في الكود الموجود في هذا المستودع يعود إلى @igul222 لعمله في improved_wgan_training. لقد قمت ببساطة بتقسيم كوده قليلاً، وأضفت واجهة سطر أوامر، وخصصته لورقة PassGAN.
تم نشر بحث وورقة PassGAN من قبل Briland Hitaj و Paolo Gasti و Giuseppe Ateniese و Fernando Perez-Cruz.