
محلل ومفسر قواعد Hashcat - حجر رشيد لفك رموز صيغة قواعد hashcat
| | | | __ _ | | ___ __ | || _ \ ___ ___ | || | __ _
| || |/ / __| '_ \ / __/ _ | __| |) / _ / __|/ _ \ __| / ` |
| _ | (| _ \ | | | (| (| | || _ < () __ \ / || || (| |
|| ||_,|/| ||____,|_|| __/|/___|_|__,|
فك شفرة حجر رشيد لقواعد كسر كلمات المرور
# HashcatRosetta
مشروع بلغة Python مصمم لتحليل ملفات مخرجات وضع التصحيح 4 ووضع التصحيح 5 في hashcat لتحديد القواعد الأكثر كفاءة وتتبع أنماط تكرار الكلمات الأساسية المستخدمة أثناء هجمات كسر كلمات المرور.
## الميزات
- **تحليل ملفات تصحيح hashcat** (`--debug-mode 4` و `--debug-mode 5`) مع استخراج تلقائي للكلمات الأساسية والقواعد
- **نسب المرشحين إلى قوائم الكلمات المصدرية** (الوضع 5) لإحصاءات لكل قائمة كلمات
- **تتبع كفاءة القواعد** عبر مقاييس متعددة:
- تكرار التطبيق (القواعد الأكثر استخدامًا)
- انتشار الكلمات الأساسية (القواعد المطبقة على أكبر عدد من الكلمات الأساسية الفريدة)
- توليد المرشحين (القواعد التي تنتج أكبر عدد من المرشحين الفريدين)
- **مراقبة أنماط الكلمات الأساسية** مع سجلات تكرار مفصلة وإحصاءات
- **إنشاء تقارير مفصلة** مع تحليلات القواعد والكلمات الأساسية
- **تصدير التحليل** إلى صيغ JSON أو CSV لمزيد من المعالجة
- **واجهة سطر أوامر** لتحليل وإعداد تقارير سهلة
## التثبيت
### الاستخدام مع uv (موصى به)
إذا كنت تستخدم [uv](https://github.com/astral-sh/uv)، يمكنك التشغيل دون تثبيت:
```bash
# Clone the repository
git clone https://github.com/bandrel/HashcatRosetta.git
cd HashcatRosetta
# Run as a module (recommended)
uv run python -m hashcat_rosetta --help
# Or use the installed command
uv run hashcat-rosetta --help
uv tool install git+https://github.com/bandrel/HashcatRosetta.git
توجد أدوات التطوير في مجموعة التبعيات dev dependency group.
# With uv (installs the dev group by default)
uv sync
# With pip (25.1+)
pip install -e . --group dev
تحليل ملف تصحيح hashcat (يعرض الملخص افتراضيًا):
hashcat-rosetta debug_output.txt
عرض أفضل القواعد حسب التكرار:
hashcat-rosetta debug_output.txt --rules --top 10 --metric frequency
عرض أفضل القواعد حسب مقاييس أخرى:
hashcat-rosetta debug_output.txt --rules --metric basewords
hashcat-rosetta debug_output.txt --rules --metric candidates
عرض الكلمات الأساسية التي تظهر عدة مرات:
hashcat-rosetta debug_output.txt --basewords --top 10
عرض أفضل قوائم الكلمات (وضع التصحيح 5 فقط):
hashcat-rosetta debug_output.txt --wordlists --top 10
عرض إحصاءات مفصلة لكل قائمة كلمات (الكلمات الأساسية الفريدة، المرشحون، والقواعد):
hashcat-rosetta debug_output.txt --wordlists --top 10 --detail
مخرجات --wordlists تحاكي --rules: عنوان Top N Wordlists يتبعه
أسطر مرقمة Wordlist: <name> (<count>). عند تحليل ملف وضع 5 بدون
أي أعلام إخراج، يتضمن الملخص الافتراضي أيضًا قسم Wordlist Statistics.
فرض وضع تصحيح محدد بدلاً من الاكتشاف التلقائي:
hashcat-rosetta debug_output.txt --debug-mode 5 --wordlists
عرض تحليل مفصل للكلمات الأساسية:
hashcat-rosetta debug_output.txt --basewords --top 10 --detail --min-occurrences 2
تصدير تقرير التحليل الكامل:
hashcat-rosetta debug_output.txt --export report.json --format json
hashcat-rosetta debug_output.txt --export report.csv --format csv
شرح ما تفعله قاعدة hashcat خطوة بخطوة:
hashcat-rosetta --explain "c$1" --baseword admin
hashcat-rosetta --explain "u$!" --baseword myword
توليد أقنعة hashcat من أوصاف بالإنجليزية باستخدام نموذج لغوي محلي:
hashcat-rosetta --mask "The word 'Summer' followed by six digits."
المخرجات:
Mask Suggestions for: 'The word 'Summer' followed by six digits.'
======================================================================
1. Summer?d?d?d?d?d?d
literal "Summer", then 6 × digit → 1,000,000 candidates
Why: matches the literal word followed by a 6-digit number
حفظ القناع المولد إلى ملف:
hashcat-rosetta --mask "The word 'Summer' followed by six digits." -o masks.hcmask
توليد أقنعة من أوصاف أخرى:
hashcat-rosetta --mask "a capitalized season, two digits, and a special char"
hashcat-rosetta --mask "year 2020-2025 followed by exclamation or question mark"
تستخدم ميزة توليد الأقنعة خادم Ollama محلي يشغل نقطة نهاية محادثة
متوافقة مع OpenAI. افتراضيًا، يتصل بـ http://localhost:11434 ويستخدم النموذج
gemma3:27b (انظر أدناه). يمكن تكوين هذه عبر متغيرات البيئة
أو أعلام سطر الأوامر:
# Using environment variables
OLLAMA_HOST=http://192.168.1.100:11434 OLLAMA_MODEL=llama2:70b \
hashcat-rosetta --mask "your description here"
# Using CLI flags (override environment variables)
hashcat-rosetta --mask "your description" --ollama-host http://custom.host:11434 --model llama2
ملاحظة أمنية: تُرسل أوصاف الأقنعة فقط إلى نقطة نهاية Ollama التي تكوّنها
(localhost افتراضيًا، أو حيث يشير --ollama-host/OLLAMA_HOST) — ولا تُرسل أبدًا إلى
مزود سحابي. يُستخدم OpenAI SDK فقط كعميل HTTP مقابل نقطة النهاية تلك؛
لا تُنقل أي بيانات أو مفتاح API أبدًا إلى api.openai.com.
gemma3:27b؟يُختار الافتراضي بواسطة scripts/benchmark_mask_models.py، الذي يشغل مجموعة ثابتة من
14 مطالبة بنمط --mask — بما في ذلك المراجع الخلفية لمجموعات الأحرف المخصصة ومطالبات
استدعاء الفئات (أسفار الكتاب المقدس، مراجع آيات الكتاب المقدس، عواصم الدول الأوروبية) — مقابل كل
نموذج مرشح مثبت محليًا ويقيّم كل استجابة بثلاث طرق:
mp64 من hashcat-utils (maskprocessor)، عند تثبيته — وهذا هو
نفس التحقق الذي يشغله generate_masks() نفسه على كل اقتراح في الإنتاج، لذا فإن فشلًا صارمًا هنا في المعيار يعني أيضًا أن استخدام --mask الحقيقي كان سيرفضه.gemma3:12b على جهاز ثانٍ، اختير
تحديدًا لأنه ليس مرشحًا بنفسه — لتجنب تحيز التقييم الذاتي) يقيّم
كل استجابة من 1-5 حسب مدى استيفائها للطلب الأصلي. تُرسل الطلبات
مع تمكين التفكير، لأن النموذج البطيء يكلف وقت الذهاب والإياب على أي حال.الافتراضي الموصى به هو أصغر نموذج بصفر حالات فشل صارمة ومتوسط درجة حكم ≥ 4. المتأهلون الثلاثة النهائيون الذين تم نقلهم من الجولات السابقة، وأُعيد تشغيلهم مقابل مجموعة المطالبات الكاملة المكونة من 14:
| model | size | hard fails | mean score | time |
|---|---|---|---|---|
gemma3:27b | 16.2 GB | 0 | 4.1 | 180s |
dengcao/Qwen3-30B-A3B-Instruct-2507:latest | 17.4 GB | 1 | 4.5 | 176s |
laguna-xs-2.1:latest | 18.9 GB | 2 | 4.7 | 730s |
gemma3:27b هو الوحيد من الثلاثة بصفر حالات فشل صارمة، لذا فهو الاختيار رغم
عدم حصوله على أعلى درجة خام — سجّل dengcao و laguna-xs-2.1:latest درجات أعلى لكن
كل منهما فشل في مطالبة واحدة على الأقل بشكل كامل (و laguna-xs-2.1:latest أيضًا أبطأ بكثير،
730s مقابل ~180s، بسبب نافذة السياق الأصلية الكبيرة جدًا الخاصة به).
أظهرت عدة نماذج من عائلة Qwen3 في جولات المسح السابقة (qwen3:8b/30b/32b، qwen3.5:9b/27b)
نمط فشل مميزًا: رموز "تفكير" مخفية بالإضافة إلى نافذة سياق أصلية ضخمة
تسبب تعليقًا من دقائق إلى 30 دقيقة على أجهزة بمقياس --mask. الافتراضي السابق،
qwen3.6:35b-a3b، استُبدل للسبب نفسه (انظر CHANGELOG.md).
أعد تشغيل المسح بنفسك باستخدام uv run python scripts/benchmark_mask_models.py — يسحب
أي مرشحين مفقودين ويطبع توصية محدثة.
from hashcat_rosetta import DebugAnalyzer
analyzer = DebugAnalyzer()