سكريبت تعداد DNS
DNSRecon هو نقل إلى Python لسكربت Ruby كتبته لتعلّم اللغة والتعرف على DNS في أوائل عام 2007. هذه المرة أردت التعلّم عن Python وتوسيع وظائف الأداة الأصلية، وفي هذه العملية إعادة تعلّم كيفية عمل DNS وكيف يمكن استخدامه في عملية تقييم أمني واستكشاف أخطاء الشبكة وإصلاحها.
يوفر هذا السكربت القدرة على تنفيذ ما يلي:
يتطلب DNSRecon الإصدار 3.12 من Python أو أحدث.
ثبّت uv إذا لم تكن قد فعلت ذلك بالفعل:
curl -LsSf https://astral.sh/uv/install.sh | sh
استنسخ المستودع:
git clone https://github.com/darkoperator/dnsrecon.git
cd dnsrecon
ثبّت التبعيات وأنشئ بيئة افتراضية:
uv sync
شغّل DNSRecon:
uv run dnsrecon
لتثبيت تبعيات التطوير:
uv sync --extra dev
لتشغيل الاختبارات:
uv run pytest
لإعادة إنشاء صفحة الدليل (man/dnsrecon.1) بعد تغيير خيارات سطر الأوامر (CLI):
uv run python tools/generate_manpage.py
كما تعيد CI إنشاءها تلقائيًا عند وسوم الإصدار وعند الدفع إلى master الذي يغيّر واجهة سطر الأوامر.
لتشغيل فحص الأسلوب والتنسيق:
uv run ruff check
uv run ruff format
يمكن لـ DNSRecon استخدام Shodan لتوسيع نطاقات الشبكة المكتشفة أثناء التعداد القياسي من بيانات SPF (-s) و/أو WHOIS (-w).
إثراء سلبي عبر Shodan (يستخدم نطاقات شبكة SPF + WHOIS):
uv run dnsrecon -d example.com -t std -s -w --shodan --shodan-key "$SHODAN_API_KEY"
تحقق نشط من نتائج Shodan (يعيد حل أسماء المضيفين ويؤكد أنها لا تزال تطابق نطاق الشبكة المستعلم عنه):
uv run dnsrecon -d example.com -t std -s -w --shodan --shodan-active --shodan-key "$SHODAN_API_KEY"
يمكنك أيضًا تعيين مفتاح API عبر متغير بيئة بدلًا من --shodan-key:
export SHODAN_API_KEY="your-shodan-api-key"
uv run dnsrecon -d example.com -t std -s -w --shodan
ابدأ تشغيل REST API:
uv run restdnsrecon
استدعِ /general_enum مع تمكين توسيع Shodan:
curl -s \
-H "X-Shodan-Api-Key: $SHODAN_API_KEY" \
"http://127.0.0.1:5000/general_enum?domain=example.com&do_spf=true&do_whois=true&do_shodan=true"
مكّن التحقق النشط في API:
curl -s \
-H "X-Shodan-Api-Key: $SHODAN_API_KEY" \
"http://127.0.0.1:5000/general_enum?domain=example.com&do_spf=true&do_whois=true&do_shodan=true&shodan_active=true"
قيم thread_num في REST API محدودة بـ 1..100. يمكن لمعاملات wordlist في API الإشارة إلى ملفات مرفقة في dnsrecon/data أو ملفات ضمن أدلة مدرجة في DNSRECON_WORDLIST_DIRS باستخدام فاصل المسار الخاص بالمنصة. اضبط أدلة قوائم كلمات مخصصة فقط؛ لا توجّه DNSRECON_WORDLIST_DIRS إلى مسارات واسعة مثل / أو دليل المنزل أو مواقع أخرى تحتوي على ملفات حساسة.
export DNSRECON_WORDLIST_DIRS="/opt/dnsrecon-wordlists:/srv/shared-wordlists"