
مولد تخمين كلمات المرور باستخدام القواعد النحوية الاحتمالية الخالية من السياق (PCFG)
PCFG = قواعد نحوية سياقية احتمالية
PCFG = مخمن ضبابي رائع
باختصار: مجموعة من الأدوات لإجراء أبحاث حول كيفية إنشاء البشر لكلمات المرور. يمكن استخدامها لاختراق تجزئات كلمات المرور، وكذلك إنشاء كلمات مرور اصطناعية (honeywords)، أو المساعدة في تطوير خوارزميات أفضل لقوة كلمات المرور.
المدرّب (Trainer): 4.4
المخمن (Guesser): 4.6
PRINCE_LING: 4.3
مسجل النقاط (Password_Scorer): 4.4
يُستخدم Sphinx لإنشاء دليل المطور ديناميكيًا بناءً على تعليقات التوثيق في الكود. لبناء دليل المطور، راجع التعليمات في /doc/INSTRUCTIONS.rst
يمكن أيضًا العثور على نسخة PDF مبنية مسبقًا من دليل المطور في /doc/build/latex/pcfgdevelopersguide.pdf. ملاحظة: لن أعيد بناء هذا الدليل بين الإصدارات الرئيسية للحفاظ على نظافة تاريخ git. بمعنى آخر، ارتكاب ملفات PDF يصبح فوضويًا سريعًا. لذلك قد يكون الدليل المبني مسبقًا قديمًا قليلاً، لذا إذا كنت تستخدمه للمساعدة في كتابة/تعديل الكود، فمن المستحسن بناء الدليل بنفسك بدلاً من استخدام المبني مسبقًا.
يستخدم هذا المشروع التعلم الآلي لتحديد عادات إنشاء كلمات المرور لدى المستخدمين. يتم إنشاء نموذج PCFG عن طريق التدريب على قائمة من كلمات المرور المكشوفة/المخترقة. في سياق هذا المشروع، يُشار إلى النموذج باسم مجموعة القواعد (ruleset) ويحتوي على أجزاء مختلفة من كلمات المرور التي تم تحديدها أثناء التدريب، بالإضافة إلى احتمالاتها المرتبطة. يمكن أن يكون هذا التجزئة مفيدًا لأدوات الاختراق الأخرى مثل PRINCE، و/أو يمكن دمج أجزاء من مجموعة القواعد مباشرة في هجمات القواميس التقليدية. يتضمن هذا المشروع أيضًا مولد تخمينات PCFG الذي يستخدم مجموعة القواعد هذه لتوليد تخمينات كلمات المرور بترتيب الاحتمالات. هذا أقوى بكثير من هجمات القواميس القياسية، وقد أثبت في الاختبارات قدرته على اختراق كلمات المرور في المتوسط مع تخمينات أقل بكثير مقارنة بالطرق الأخرى المتاحة للجمهور. الجانب السلبي هو أن توليد التخمينات بترتيب الاحتمالات بطيء، مما يعني أنه يُنتج في المتوسط 50-100 ألف تخمين في الثانية، بينما يمكن لخوارزميات GPU إنشاء ملايين إلى مليارات (وأكثر) من التخمينات في الثانية ضد خوارزميات التجزئة السريعة. لذلك، فإن مخمن PCFG هو الأفضل للاستخدام ضد أعداد كبيرة من التجزئات المملحة، أو خوارزميات التجزئة البطيئة الأخرى، حيث يتم تعويض تكلفة الأداء للخوارزمية بدقة التخمينات.
pip3 install chardetتم إنشاء مجموعة القواعد الافتراضية المضمنة في هذا المستودع عن طريق التدريب على مجموعة فرعية من 1 مليون كلمة مرور من مجموعة بيانات RockYou. يمكن تحقيق أداء أفضل عن طريق التدريب على مجموعة كاملة من 32 مليون كلمة مرور لـ RockYou، ولكن تم استبعاد ذلك للحفاظ على حجم التنزيل صغيرًا. يمكنك استخدام مجموعة القواعد الافتراضية لبدء توليد كلمات المرور دون الحاجة إلى التدريب على قائمة جديدة، ولكن من المستحسن التدريب على مجموعة مستهدفة من كلمات المرور التي قد تكون أقرب إلى ما تحاول استهدافه. إذا قمت بإنشاء مجموعة القواعد الخاصة بك، فإليك دليل سريع:
python3 trainer.py -t INPUT_PASSWORD_LIST -r NEW_RULESETpython3 trainer.py -t INPUT_PASSWORD_LIST -r NEW_RULESET -c 0.6
ب. --save_sensitive: إذا تم تحديد ذلك، سيتم حفظ البيانات الحساسة مثل عناوين البريد الإلكتروني ومواقع الويب الكاملة التي تم اكتشافها أثناء التدريب في مجموعة القواعد. على الرغم من أن مولد تخمينات PCFG لا يستخدم هذه البيانات حاليًا، إلا أنها ذات قيمة كبيرة أثناء هجوم اختراق كلمة مرور حقيقي. هذا الخيار معطى افتراضيًا لجعل هذه الأداة أسهل في الاستخدام في البيئة الأكاديمية. ملاحظة: حتى عندما يكون هذا الخيار معطلاً، ستظل هناك بالتأكيد بيانات PII محفوظة داخل مجموعة القواعد، لذا قم بحماية مجموعات القواعد المولدة بشكل مناسب. مثال: python3 trainer.py -t INPUT_PASSWORD_LIST -r NEW_RULESET --save_sensitive
ج. --comments: يضيف تعليقًا إلى ملف تكوين مجموعة القواعد الخاصة بك. هذا مفيد حتى تعرف لماذا وكيف قمت بإنشاء مجموعة القواعد الخاصة بك عند النظر إليها لاحقًا. قم بتضمين التعليق الذي تريد إضافته بين علامتي اقتباس.يؤدي هذا إلى توليد التخمينات إلى stdout باستخدام مجموعة قواعد PCFG مدربة مسبقًا. يمكن بعد ذلك توجيه هذه التخمينات إلى أي برنامج تريد استخدامها. إذا لم يتم تحديد مجموعة قواعد، فسيتم استخدام مجموعة القواعد الافتراضية DEFAULT. لأغراض هذا الدليل، سنفترض أن مجموعة القواعد المستخدمة هي NEW_RULESET.
python3 pcfg_guesser.py -r NEW_RULESET -s SESSION_NAMEpython3 pcfg_guesser.py -r NEW_RULESET -s SESSION_NAME --load