
مولّد قوائم كلمات منظمة ومصنفة لاختبار الاختراق عبر الويب، وتعداد الدلائل، واكتشاف النطاقات الفرعية. يقوم تلقائياً بمزامنة أكثر من 36 مصدراً، ويصنف الإدخالات، وينتج قوائم قصيرة/طويلة محسّنة لاختبار الاختراق.
قوائم كلمات للفحص الشبكي (web fuzzing): قائمة مختارة (micro) مُنتقاة، وقوائم مصنفة قصيرة/طويلة، وقوائم نهائية مدمجة.
onelistforallmicro.txt: قائمة منتقاة (تُحتفظ بها يدويًا).dict/<category>_short.txt: قائمة كلمات مصنفة حسب الفئة (مصادر صغيرة/عالية الجودة).dict/<category>_long.txt: قائمة كلمات شاملة حسب الفئة (جميع المصادر).onelistforall.txt: القائمة المختارة + كل ملفات *_short.txt، مع إزالة التكرار.onelistforall_big.txt: كل شيء مدمج، مع إزالة التكرار.update): يستنسخ حوالي 36 مستودعًا لقوائم الكلمات داخل sources/.classify): يمر على كل ملف .txt في sources/، ويصنف كل ملف إلى فئات باستخدام هيكل المسار، كلمات المفتاح في اسم الملف، وأخذ عينات من المحتوى. يُنتج classification_index.json.build --all-categories): لكل فئة، يدمج ملفات المصادر المصنفة في dict/{cat}_short.txt وdict/{cat}_long.txt مع التصفية وإزالة التكرار.assemble): يدمج القائمة المختارة مع جميع القوائم القصيرة في onelistforall.txt، وكل شيء في onelistforall_big.txt.package): يُنشئ أرشيفات 7z مع مجاميع اختبارية checksums.publish): يُلزم تلقائيًا التغييرات في مجلد dict/ ويدفعها إلى المستودع البعيد.git (لأمر update)7z (لأمر package فقط)olfa)# التحقق من الاعتماديات
go run ./cmd/olfa check
# عرض المصادر والفئات
go run ./cmd/olfa list
go run ./cmd/olfa list --categories
# مزامنة مستودعات المصادر
go run ./cmd/olfa update
go run ./cmd/olfa update --source SecLists
# تصنيف ملفات المصادر
go run ./cmd/olfa classify
go run ./cmd/olfa classify --format json
# بناء جميع قوائم الكلمات حسب الفئة
go run ./cmd/olfa build --all-categories
go run ./cmd/olfa build --category wordpress --variant short
# تجميع القوائم النهائية المدمجة
go run ./cmd/olfa assemble
# التحقق من الصحة والتعبئة
go run ./cmd/olfa validate-categories
go run ./cmd/olfa stats
go run ./cmd/olfa package
# خط أنابيب كامل (جميع الخطوات بأمر واحد)
go run ./cmd/olfa pipeline
go run ./cmd/olfa pipeline --dry-run
go run ./cmd/olfa pipeline --skip-publish # تخطي commit+push
go run ./cmd/olfa pipeline --skip-update # تخطي git fetch
go run ./cmd/olfa pipeline --commit-msg "رسالتي المخصصة"
# الخيار أ: أمر واحد
go run ./cmd/olfa pipeline
# الخيار ب: خطوة بخطوة
go run ./cmd/olfa check
go run ./cmd/olfa update
go run ./cmd/olfa classify
go run ./cmd/olfa build --all-categories
go run ./cmd/olfa assemble
go run ./cmd/olfa validate-categories
go run ./cmd/olfa package
git add dict/ && git commit -m "chore: تحديث قوائم الكلمات في dict/" && git push
المستودع يتضمن حوالي 418 قائمة كلمات حسب الفئة في dict/ (~930 MB). لكن 6 ملفات تتجاوز حد حجم الملف 100 ميغابايت على GitHub، وهي غير مضمنة في المستودع:
| الملف | الحجم |
|---|---|
dict/subdomains_long.txt | 493 MB |
dict/passwords_long.txt | 351 MB |
dict/passwords_short.txt | 296 MB |
dict/fuzz_general_long.txt | 178 MB |
dict/directories_long.txt | 153 MB |
dict/dns_long.txt | 112 MB |
لتوليدها محليًا، قم بتشغيل:
go run ./cmd/olfa pipeline
تشغيل خط الأنابيب بالكامل (مزامنة المصادر + بناء جميع الفئات) يتطلب حوالي 15 GB من مساحة القرص.
كل شيء يتحكم به ملفان:
configs/pipeline.yml — المصادر، المرشحات، قواعد التصنيف، إعدادات إزالة التكرار، إعدادات الإصدار.configs/taxonomy.json — تصنيف الفئات (236 فئة مع أسماء مستعارة).قم بتعديل configs/pipeline.yml وأضف مدخلاً إلى مصفوفة sources:
{
"name": "my-wordlists",
"repo": "username/repo-name",
"branch": "main",
"paths": ["all"],
"tags": ["directories", "api"],
"priority": "medium"
}
| الحقل | الوصف |
|---|---|
name | معرف فريد للمصدر |
repo | المستودع على GitHub بصيغة owner/repo (يُنسخ عبر https://github.com/...) |
branch | الفرع الذي سيتم تتبعه |
paths | الدلائل المراد مسحها داخل المستودع (["all"] يعني كل شيء) |
tags | فئات احتياطية عندما لا يستطيع التصنيف التلقائي تحديد الفئة |
priority | high أو medium أو low — المصادر ذات الأولوية العالية تدخل في *_short.txt، وجميع المصادر تدخل في *_long.txt |
بعد إضافة المصدر، قم بتشغيل خط الأنابيب لسحبه وتصنيفه:
go run ./cmd/olfa pipeline
أو مزامنة المصدر الجديد فقط:
go run ./cmd/olfa update --source my-wordlists
المرشحات العامة في pipeline.yml تتحكم في السطور التي يتم الاحتفاظ بها أو حذفها:
regex_denylist — الأسطر التي تطابق أي نمط يتم إزالتها (مثل URLs، UUIDs، امتدادات الصور)max_line_len — الأسطر الأطول من هذا الطول تُحذف (الافتراضي: 100 حرف)trim — إزالة المسافات البادئة والخاتمةdrop_empty — إزالة الأسطر الفارغةيمكن ضبط مرشحات خاصة بفئة معينة في category_filters (مثال: النطاقات الفرعية تسمح فقط بأحرف صالحة لأسماء المضيفين).
كل فئة تنتج قائمتين للكلمات:
*_short.txt — فقط من المصادر ذات الأولوية high، أو الملفات التي تحتوي على أقل من 5000 سطر، أو أسماء ملفات تحتوي على كلمات مفتاحية مثل common وshort وtop وdefault.*_long.txt — جميع المصادر مجتمعة.الحدود والكلمات المفتاحية قابلة للتهيئة في classification.short_line_threshold و classification.short_keywords و classification.long_keywords.
يتم تعريف الفئات في configs/taxonomy.json. كل فئة لها اسم أساسي وأسماء مستعارة. تُطابق ملفات المصادر بالفئات عن طريق:
Discovery/DNS/* → subdomains)لعرض جميع الفئات المتاحة:
go run ./cmd/olfa list --categories
go run ./cmd/olfa list --categories --format json