أداة Knock أو المعروفة باسم knock.py هي سكربت مكتوب بلغة Python وظيفته الأساسية هي اكتشاف كل النطاقات الفرعية المرتبطة بأي دومين عن طريق استعلامات DNS واستخدام كلمات موجودة داخل wordlist.
فكرة الأداة:
-
تستخدم ملف Wordlist يحتوي على كلمات محتملة للنطاقات الفرعية مثل (admin، mail، api، login...)
-
تسوي محاولة ربط DNS لكل وحدة مثل:
admin.example.com
mail.example.com
dev.example.com
- إذا رجعت استجابة حقيقية من الـ DNS، يعني هذا سب دومين موجود فعلياً.
مميزات Knock:
- خفيفة جداً، مجرد سكربت Python.
- تقدر تستخدم أي wordlist يعجبك.
- تدعم البروكسيات (proxy) لتخفي آثارك إذا احتاجيت.
- تقدر تسوي Export للنتائج على ملف.
تثبيت الأداة:
1. تنزيلها من GitHub:
git clone https://github.com/guelfoweb/knock.git
cd knock
2. تأكد إن الـ Python منصب عندك:
python3 --version
3. نزل المتطلبات:
pip install -r requirements.txt
ملاحظة: مرات تحتاج تسوي تعديلات بسيطة بالسكربت حتى يتوافق ويا Python 3، مثل
urllib
.
طريقة الاستخدام:
الصيغة العامة:
python3 knock.py example.com wordlist.txt

مثال عملي:
python3 knock.py google.com wordlist.txt
راح تطبعلك قائمة بكل النطاقات الفرعية اللي اكتشفتها، مثل:
Found: mail.google.com
Found: calendar.google.com
Found: accounts.google.com
ملف Wordlist:
السكربت ما يشتغل إذا ما تعطيه Wordlist.
تقدر تستخدم:
SecLists
:
git clone https://github.com/danielmiessler/SecLists.git
مثال:
python3 knock.py example.com SecLists/Discovery/DNS/subdomains-top1million-110000.txt
مثال متكامل:
خلي نفرض تشتغل على نطاق target.com
، وتريد تطلع كل النطاقات الفرعية:
python3 knock.py target.com SecLists/Discovery/DNS/namelist.txt
وطلعتلك هاي النتائج:
Found: admin.target.com
Found: login.target.com
Found: api.target.com
هنا تبدأ رحلتك تفحص هاي النطاقات وحدة وحدة.
روابط مهمة:
GitHub الرسمي: https://github.com/guelfoweb/knock
Wordlists: https://github.com/danielmiessler/SecLists