Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
pcfg_cracker — مولد تخمين كلمات المرور باستخدام القواعد النحوية الاحتمالية الخالية من السياق (PCFG) | Kitploit
أدوات/GitHubGitHub/lakiw/pcfg_cracker
كسر كلمات المرورهجمات كلمات المرورالتشفيرتعلم الآلة
GitHublakiw/pcfg_cracker

pcfg_cracker

مولد تخمين كلمات المرور باستخدام القواعد النحوية الاحتمالية الخالية من السياق (PCFG)

عرض المستودع
37087منذ 11 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

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 هو الأفضل للاستخدام ضد أعداد كبيرة من التجزئات المملحة، أو خوارزميات التجزئة البطيئة الأخرى، حيث يتم تعويض تكلفة الأداء للخوارزمية بدقة التخمينات.

المتطلبات + التثبيت

  • Python3 هو المتطلب الصعب الوحيد لهذه الأدوات
  • يُوصى بشدة بتثبيت مكتبة chardet الخاصة بـ Python3 للتدريب. على الرغم من أنها ليست إلزامية، إلا أنها تقوم بالكشف التلقائي عن ترميز الأحرف لكلمات مرور التدريب. لتثبيتها:
  • قم بتنزيل المصدر من https://pypi.python.org/pypi/chardet
  • أو قم بتثبيتها باستخدام pip3 install chardet

دليل البدء السريع

التدريب

تم إنشاء مجموعة القواعد الافتراضية المضمنة في هذا المستودع عن طريق التدريب على مجموعة فرعية من 1 مليون كلمة مرور من مجموعة بيانات RockYou. يمكن تحقيق أداء أفضل عن طريق التدريب على مجموعة كاملة من 32 مليون كلمة مرور لـ RockYou، ولكن تم استبعاد ذلك للحفاظ على حجم التنزيل صغيرًا. يمكنك استخدام مجموعة القواعد الافتراضية لبدء توليد كلمات المرور دون الحاجة إلى التدريب على قائمة جديدة، ولكن من المستحسن التدريب على مجموعة مستهدفة من كلمات المرور التي قد تكون أقرب إلى ما تحاول استهدافه. إذا قمت بإنشاء مجموعة القواعد الخاصة بك، فإليك دليل سريع:

  1. حدد مجموعة من كلمات المرور النصية العادية للتدريب عليها.
  • يجب أن تتضمن مجموعة كلمات المرور هذه كلمات مرور مكررة. بهذه الطريقة يمكن للمدرّب تحديد كلمات المرور الشائعة مثل 123456 على أنها شائعة.
  • يجب أن تكون كلمات المرور في شكل نص عادي مع إزالة التجزئات والمعلومات المرتبطة مثل أسماء المستخدمين منها. لا تحاول استخدام ملفات .pot الخام كمجموعة تدريب لأن التجزئات ستعتبر جزءًا من كلمة المرور بواسطة برنامج التدريب.
  • يجب أن تكون كلمات المرور مشفرة بنفس الطريقة التي تريد بها توليد تخمينات كلمات المرور. لذا، إذا كنت تريد إنشاء تخمينات كلمات مرور مشفرة بـ UTF-8، فيجب أن تكون مجموعة التدريب مشفرة أيضًا بـ UTF-8. على المدى الطويل، القدرة على تعديل ذلك عند توليد التخمينات موجودة في خطة التطوير، ولكن هذه الميزة غير مدعومة حاليًا.
  • يجب أن تكون قائمة كلمات مرور التدريب بين 100 ألف و 50 مليون. لا يزال الاختبار جاريًا حول كيفية تأثير حجم قائمة كلمات مرور التدريب على توليد التخمينات، وقد كان هناك نجاح جيد حتى مع قوائم كلمات مرور صغيرة تصل إلى 10 آلاف، ولكن الحجم المثالي ربما يكون حوالي مليون، مع عوائد متناقصة بعد ذلك.
  • لأغراض هذا البرنامج التعليمي، سيشار إلى قائمة كلمات المرور المدخلة باسم INPUT_PASSWORD_LIST
  1. اختر اسمًا لمجموعة القواعد التي قمت بإنشائها. لأغراض هذا البرنامج التعليمي، سيكون NEW_RULESET
  2. قم بتشغيل المدرّب على قائمة كلمات المرور المدخلة
  • python3 trainer.py -t INPUT_PASSWORD_LIST -r NEW_RULESET
  • الخيارات الاختيارية الشائعة: أ. coverage: مدى ثقتك في أن مجموعة التدريب تطابق كلمات المرور المستهدفة. تغطية أعلى تعني استخدام توليد قوة غاشمة أقل ذكاءً باستخدام نمذجة ماركوف (حاليًا باستخدام خوارزمية OMEN). إذا قمت بتعيين التغطية إلى 1، فلن يتم إجراء أي قوة غاشمة. إذا قمت بتعيين التغطية إلى 0، فسيتم توليد التخمينات فقط باستخدام هجمات ماركوف. هذه القيمة هي رقم عشري، مع الإعداد الافتراضي 0.6 مما يعني أنه يتوقع 60% فرصة أن الكلمات الأساسية لكلمة المرور المستهدفة يمكن العثور عليها في مجموعة التدريب. مثال: python3 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.

  1. ملاحظة: برنامج توليد التخمينات حساس لحالة الأحرف عند تحديد اسم مجموعة القواعد.
  • اسم الجلسة غير مطلوب (سيتم إنشاء جلسة افتراضية تسمى default_run)، لكنه مفيد لتسهيل إعادة تشغيل جلسة متوقفة/موقوفة. ستستخدم هذه الأمثلة اسم الجلسة SESSION_NAME. ملاحظة: لا يوجد فحص صحة مدمج إذا قمت بتشغيل جلسات متعددة بنفس الاسم في نفس الوقت، ولكن يُوصى بتجنب ذلك.
  1. لبدء جلسة تخمين جديدة، قم بتشغيل:
  • python3 pcfg_guesser.py -r NEW_RULESET -s SESSION_NAME
  1. لإعادة تشغيل جلسة تخمين سابقة، قم بتشغيل (ملاحظة: لا تزال بحاجة إلى تحديد نفس مجموعة القواعد عند استعادة جلسة):
  • python3 pcfg_guesser.py -r NEW_RULESET -s SESSION_NAME --load

تسجيل نقاط قوة كلمة المرور

هناك العديد من الحالات التي قد ترغب فيها في تقدير احتمالية إنشاء كلمة مرور بواسطة مجموعة قواعد مدربة مسبقًا. على سبيل المثال، يمكن أن يكون هذا جزءًا من مقياس قوة كلمة المرور، أو استخدامه لأغراض بحثية أخرى. تم تضمين برنامج عينة لأداء ذلك.

  • INPUT_LIST تمثل قائمة كلمات المرور المراد تسجيل نقاطها. يجب أن تكون كلمات المرور هذه نصية عادية، ومفصولة بأسطر جديدة، مع كلمة مرور واحدة لكل سطر.
  1. لتشغيل جلسة تسجيل نقاط: python3 password_scorer -r NEW_RULESET -i INPUT_LIST
  2. افتراضيًا، سيتم إخراج النتائج إلى stdout، مع تسجيل كل كلمة مرور لكل سطر
  • القيمة الأولى هي كلمة المرور الخام
  • القيمة الثانية ستمثل ما إذا كانت القيمة المدخلة تم تسجيلها كـ 'كلمة مرور' أو 'موقع ويب' أو 'عنوان بريد إلكتروني' أو 'أخرى'. يعتمد هذا التحديد لكلمة مرور أو غير ذلك على الحدود التي تحددها لكل من حد تخمين OMEN، بالإضافة إلى الاحتمال المرتبط بـ PCFG.
  • القيمة الثالثة هي احتمالية كلمة المرور وفقًا لمجموعة القواعد. إذا تم تعيين قيمة 0.0، فهذا يعني أن كلمة المرور لن يتم إنشاؤها بواسطة مجموعة القواعد، على الرغم من أنها قد يتم إنشاؤها بواسطة هجوم قائم على ماركوف
  • القيمة الرابعة هي مستوى OMEN الذي سينشئ كلمة المرور. تشير القيمة -1 إلى أن كلمة المرور لن يتم إنشاؤها بواسطة OMEN.

مولد قائمة كلمات Prince-Ling

الاسم: Prince-Ling (PRINCE Language Idexed N-Grams)

نظرة عامة: ينشئ قوائم كلمات مخصصة بناءً على مجموعة قواعد/قواعد نحوية PCFG مدربة مسبقًا للاستخدام في هجمات التوافق من نوع PRINCE. الفكرة وراء ذلك هي أنه نظرًا لأن مدرّب PCFG يقوم بالفعل بتقسيم مجموعة تدريب من كلمات المرور إلى تحليلات فردية، يمكن الاستفادة من هذه المعلومات لإنشاء قوائم كلمات مستهدفة لهجمات أخرى.

الآليات الأساسية: تحت الغطاء، أداة Prince-Ling هي في الأساس مولد تخمينات PCFG مصغر. تقوم بإزالة توليد تخمينات ماركوف، واستبدال الهياكل الأساسية المستخدمة في هجمات PCFG العادية بهيكل أساسي مخفض بشكل كبير مصمم خصيصًا لإنشاء قوائم كلمات PRINCE. يسمح ذلك بتوليد كلمات القاموس بترتيب الاحتمالات مع التركيز على مدى فائدة هذه الكلمات المتوقعة في هجوم PRINCE.

استخدام Prince-Ling

  1. قم بتدريب مجموعة قواعد PCFG باستخدام trainer.py. ملاحظة: تحتاج إلى إنشاء مجموعة القواعد باستخدام الإصدار 4.1 أو أحدث من مجموعة أدوات PCFG، لأن الإصدارات السابقة لم تتعلم جميع هياكل البيانات التي يستخدمها Prince-Ling.
  2. قم بتشغيل Prince-Ling: python3 prince-ling.py -r RULESET_NAME -s SIZE_OF_WORDLIST_TO_CREATE -o OUTPUT_FILENAME
  • --rule: اسم مجموعة قواعد PCFG التي سيتم إنشاء قائمة كلمات PRINCE منها
  • --size: عدد الكلمات المراد إنشاؤها لقائمة كلمات PRINCE. ملاحظة: إذا لم يتم تحديده، سيقوم Prince-Ling بتوليد جميع الكلمات الممكنة والتي يمكن أن تكون كبيرة جدًا اعتمادًا على ما إذا كان تحويل حالة الأحرف مفعلًا (يزيد تحويل حالة الأحرف من مساحة المفاتيح بشكل هائل).
  • --output: اسم ملف الإخراج لكتابة الإدخالات. ملاحظة: إذا لم يتم تحديده، فسيقوم Prince-Ling بإخراج الكلمات إلى stdout، مما قد يسبب مشاكل اعتمادًا على الصدفة التي تستخدمها عند طباعة الأحرف غير ASCII.
  • --all_lower: قم فقط بتوليد كلمات بأحرف صغيرة لقاموس PRINCE. يعد هذا مفيدًا عند مهاجمة تجزئات غير حساسة لحالة الأحرف، أو إذا كنت تخطط لتطبيق تحويل حالة الأحرف المستهدف بطريقة مختلفة.

مثال على اختراق كلمات المرور باستخدام John the Ripper

python3 pcfg_guesser -r NEW_RULESET -s SESSION_NAME | ./john --stdin --format=bcrypt PASSWORDS_TO_CRACK.txt

المساهمة

إذا لاحظت أي أخطاء، أو إذا كانت لديك ميزة ترغب في رؤيتها مضافة، فيرجى فتح issue على صفحة github هذه. كما أقبل طلبات السحب (pull requests)، ولكن من المفضل ربط طلب السحب بـ issue حتى أتمكن من مراجعته بسهولة أكبر، وطرح الأسئلة، وفهم التغييرات التي تقوم بها بشكل أفضل.

هناك الكثير من التحسينات التي يمكن إجراؤها على نمذجة استراتيجيات إنشاء كلمات المرور باستخدام PCFGs. أنا منفتح جدًا للأفكار والتغييرات والاقتراحات الجديدة. مجرد أن الكود يفعل شيئًا بطريقة معينة لا يعني أن هذا هو الخيار الأفضل. على سبيل المثال، الهيكل الأساسي للنهج الحالي حيث يتم إنشاء أقنعة لسلاسل الأحرف الأبجدية والأرقام وغيرها، تم اختياره لأنه كان الخيار "الأسهل" للتنفيذ. كان لفريقي نقاش كبير حول أن الخيار الأفضل قد يكون البدء بكلمة أساسية، ثم نمذجة قواعد التعديل التقليدية المطبقة عليها كتحولات في PCFG. لذا لا تتردد في الإبداع مع هذا الكود!

تنزيل الأداة