
أداة ماسح DNS حديثة وعالية الأداء مع واجهة مستخدم طرفية (TUI) جميلة مبنية باستخدام Textual. يمكن لهذه الأداة مسح ملايين عناوين IP للعثور على خوادم DNS عاملة مع اختبار وكيل Slipstream الاختياري وتنزيل عميل متعدد المنصات تلقائيًا.
يقوم الماسح الآن بالمسح من البداية والنهاية لكل نطاق IP في وقت واحد عبر نطاقات متعددة، مع خلط عشوائي — أداء أسرع وفرصة أكبر للعثور على خوادم DNS عاملة مقارنة بالمسح الخطي.
يتم اختبار جميع أنواع DNS (A، AAAA، MX، TXT، NS) تلقائياً وتسجيل النقاط لكل خادم — نفس نظام التسجيل المستخدم في ماسح SlipNet.
معلمات مسح قابلة للتخصيص بالكامل:
المسح بقيمة MTU محددة لضبط الشبكة المتقدم.
google.com، وتظهر النتيجة في الجدولtextual>=0.47.0 # TUI framework aiodns>=3.1.0 # Async DNS resolver httpx[socks]>=0.25.0 # HTTP client with SOCKS5 support for proxy testing loguru>=0.7.0 # Advanced logging
google-re2>=1.0 # Fast RE2 regex engine (falls back to stdlib re) orjson>=3.9.0 # Fast JSON serialization (falls back to stdlib json) pyperclip>=1.8.0 # Clipboard support (silently disabled when absent)
### اختياري
- **عميل Slipstream** - لاختبار وظائف الوكيل (5 اختبارات متزامنة)
- **تنزيل تلقائي**: يكتشف التطبيق منصتك تلقائيًا ويقوم بتنزيل العميل الصحيح
- **كشف ذكي**: يكتشف التثبيتات الموجودة (بما في ذلك أسماء الملفات القديمة)
- **دعم الاستئناف**: يتم حفظ التنزيلات الجزئية ويمكن استئنافها عند إعادة المحاولة
- المنصات المدعومة:
- Linux (x86_64): `slipstream-client-linux-amd64`
- Linux (ARM64): `slipstream-client-linux-arm64`
- Windows (x86_64): `slipstream-client-windows-amd64.exe`
- macOS (ARM64): `slipstream-client-darwin-arm64`
- macOS (Intel): `slipstream-client-darwin-amd64`
- Android (ARM64): `slipstream-client-linux-arm64`
- التنزيل اليدوي متاح من: [إصدارات slipstream-rust-plus-deploy](https://github.com/Fox-Fig/slipstream-rust-plus-deploy/releases/latest)
### 📦 عملاء Slipstream المجمعة
يتم تضمين ملفات ثنائية لعميل Slipstream مُجمعة مسبقًا (من الإصدار الأسرع [Fox-Fig/slipstream-rust-plus-deploy](https://github.com/Fox-Fig/slipstream-rust-plus-deploy)) في مجلد `slipstream-client/` لجميع المنصات:
| المنصة | المسار | الوصف |
|----------|------|-------------|
| **Linux x86_64** | `slipstream-client/linux/slipstream-client-linux-amd64` | ملف ثنائي Linux x86_64 |
| **Linux ARM64** | `slipstream-client/linux/slipstream-client-linux-arm64` | ملف ثنائي Linux ARM64 (Raspberry Pi، خوادم ARM) |
| **Android/Termux** | `slipstream-client/android/slipstream-client-linux-arm64` | Android ARM64 (متوافق مع Termux) |
| **Windows** | `slipstream-client/windows/slipstream-client-windows-amd64.exe` | ملف تنفيذي Windows x86_64 |
| **macOS ARM** | `slipstream-client/mac/slipstream-client-darwin-arm64` | macOS Apple Silicon (M1/M2/M3/M4) |
| **macOS Intel** | `slipstream-client/mac/slipstream-client-darwin-amd64` | macOS Intel x86_64 |
> **⚠️ ملاحظة لنظام Windows:** يتطلب عميل Windows مكتبات OpenSSL DLL (`libcrypto-3-x64.dll` و `libssl-3-x64.dll`) والتي يتم تضمينها في مجلد `slipstream-client/windows/`. عند استخدام التنزيل التلقائي، يتم تنزيل ملفات DLL هذه تلقائيًا مع الملف التنفيذي لنظام Windows.
#### 📥 أرشيفات الكل في واحد
لتوفير الراحة، تتوفر أرشيفات مضغوطة تحتوي على جميع الملفات الثنائية للمنصات:
- **`slipstream-client/slipstream-client-all-platforms.tar.gz`** - أفضل ضغط (موصى به)
- **`slipstream-client/slipstream-client-all-platforms.zip`** - تنسيق مناسب لنظام Windows
تتضمن هذه الأرشيفات عملاء Linux و Windows و macOS في تنزيل واحد.
### اختياري
- **عميل SlipNet** — لاختبار نفق SlipNet (DNSTT / NoiseDNS)
- **تنزيل تلقائي**: يكتشف التطبيق منصتك تلقائيًا ويقوم بتنزيل عميل SlipNet الصحيح
- **كشف ذكي**: يكتشف التثبيتات الموجودة
- **دعم الاستئناف**: يتم حفظ التنزيلات الجزئية ويمكن استئنافها عند إعادة المحاولة
- المنصات المدعومة:
- Linux (x86_64): `slipnet-linux-amd64`
- Linux (ARM64): `slipnet-linux-arm64`
- Windows (x86_64): `slipnet-windows-amd64.exe`
- macOS (ARM64): `slipnet-darwin-arm64`
- macOS (Intel): `slipnet-darwin-amd64`
- التنزيل اليدوي متاح من: [إصدارات anonvector](https://github.com/anonvector/SlipNet/releases)
### 📦 عملاء SlipNet المجمعة
يتم تضمين ملفات ثنائية لعميل SlipNet مُجمعة مسبقًا (بواسطة [anonvector](https://github.com/anonvector/SlipNet/releases)) في مجلد `slipnet-client/` لجميع المنصات:
| المنصة | المسار | الوصف |
|----------|------|-------------|
| **Linux x86_64** | `slipnet-client/linux/slipnet-linux-amd64` | ملف ثنائي Linux x86_64 |
| **Linux ARM64** | `slipnet-client/linux/slipnet-linux-arm64` | ملف ثنائي Linux ARM64 (Raspberry Pi، خوادم ARM) |
| **Windows** | `slipnet-client/windows/slipnet-windows-amd64.exe` | ملف تنفيذي Windows x86_64 |
| **macOS ARM** | `slipnet-client/mac/slipnet-darwin-arm64` | macOS Apple Silicon (M1/M2/M3/M4) |
| **macOS Intel** | `slipnet-client/mac/slipnet-darwin-amd64` | macOS Intel x86_64 |
## 🚀 التثبيت
### الطريقة 1: التثبيت من PyPI (موصى به)
أسهل طريقة لتثبيت PYDNS Scanner:
#### باستخدام pip```bash
pip install pydns-scanner
pip install pydns-scanner[full]
#### استخدام uv (أسرع)```bash
uv pip install pydns-scanner # core
uv pip install pydns-scanner[full] # desktop extras
pkg update && pkg install python pip install pydns-scanner # core only — always works on Termux pydns-scanner
> **ملاحظة:** في Android/Termux، يتم تخطي حزم الإضافات C الاختيارية (`google-re2`، `orjson`، `pyperclip`) تلقائيًا — يعود الماسح الضوئي إلى بدائل stdlib دون أي تدخل يدوي.
#### استخدام المرآة (للمستخدمين الذين لديهم وصول محدود إلى PyPI)```bash
# Runflare Mirror
pip install pydns-scanner -i https://mirror-pypi.runflare.com/simple/ --trusted-host mirror-pypi.runflare.com
# Or Alibaba Cloud Mirror
pip install pydns-scanner -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
# Or TUNA Mirror
pip install pydns-scanner -i https://pypi.tuna.tsinghua.edu.cn/simple
pydns-scanner
---
### الطريقة 2: التشغيل من المصدر (يدويًا)
إذا كنت ترغب في تشغيل الكود مباشرة من المستودع:
#### الخطوة 1: استنساخ المستودع```bash
git clone https://github.com/xullexer/PYDNS-Scanner.git
cd PYDNS-Scanner
استخدام uv (موصى به - سريع!)```bash uv pip install -r requirements.txt
**استخدام pip**```bash
pip install -r requirements.txt
استخدام المرآة (للمستخدمين ذوي الوصول المحدود إلى PyPI)```bash
pip install -r requirements.txt -i https://mirror-pypi.runflare.com/simple/ --trusted-host mirror-pypi.runflare.com
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
#### الخطوة 3: تشغيل التطبيق```bash
python -m python
من PyPI:```bash pydns-scanner
**من المصدر:**```bash
python -m python
سيؤدي هذا إلى تشغيل واجهة المستخدم التفاعلية (TUI) حيث يمكنك تكوين:
أنشئ ملفًا نصيًا يحتوي على نطاق CIDR واحد في كل سطر:```
1.1.1.0/24 8.8.8.0/24 178.22.122.0/24 185.51.200.0/22
### مثال سير العمل
1. **تشغيل التطبيق**: ```bash
python dnsscanner_tui.py
تهيئة معلمات الفحص:
google.com)بدء الفحص:
عرض النتائج:
حفظ النتائج:
results/TIMESTAMP.csvc أو انقر على "💾 حفظ النتائج" للحفظ يدويًاأثناء الفحص النشط:
التسجيل معطل افتراضيًا للحفاظ على نظافة الواجهة وتجنب عمليات الكتابة غير الضرورية على القرص.
لتمكين التسجيل، قم بتحرير dnsscanner_tui.py:```python
logger.remove() # Remove default handler to disable logging
logger.add( "logs/dnsscanner_{time}.log", rotation="50 MB", compression="zip", level="DEBUG", )
عند التمكين:
- يتم حفظ السجلات في `logs/dnsscanner_TIMESTAMP.log`
- التناوب التلقائي عند 50 ميغابايت
- يتم ضغطها تلقائياً (zip)
- يتضمن تفاصيل مستوى DEBUG
### إعدادات التزامن
اضبط بناءً على نظامك وشبكتك:
- **Low (50-100)**: متحفظ، مناسب للأنظمة الأبطأ
- **Medium (100-300)**: أداء متوازن
- **High (300-500)**: مسح سريع، يتطلب أجهزة جيدة
- **Very High (500+)**: سرعة قصوى، قد يصل إلى حدود الموارد
### اختبار Slipstream
يدعم الماسح اختبار وكيل Slipstream المتوازي مع التحميل التلقائي:```python
# In __init__ method
self.slipstream_max_concurrent = 5 # Max parallel proxy tests
self.slipstream_base_port = 10800 # Base port (uses 10800, 10801, 10802)
ميزات التنزيل التلقائي:
.partial)slipstream-client.exe)تنتهي مهلة استعلامات DNS بعد 2 ثانية:```python
resolver = aiodns.DNSResolver(nameservers=[ip], timeout=2.0, tries=1)
## 📊 تنسيق الإخراج
يتم حفظ النتائج بتنسيق **CSV** (`results/TIMESTAMP.csv`). تتكيف الأعمدة بناءً على الاختبارات المُمكّنة:```csv
DNS,Ping (ms),IPv4/IPv6,TCP/UDP,Security,EDNS0,Resolved IP,ISP
8.8.8.8,12,IPv4/IPv6,TCP+UDP,DNSSEC,Yes,142.250.185.46,AS15169 Google LLC
1.1.1.1,15,IPv4/IPv6,TCP+UDP,DNSSEC,Yes,142.250.185.46,AS13335 Cloudflare Inc
الأعمدة الاختيارية (اختبار البروكسي، الأمان، EDNS0) تُضمَّن فقط عندما يكون الاختبار المقابل مفعّلاً في الإعدادات.
يعتبر الماسح أن الخادم هو "DNS عاملة" إذا:
هذا النهج يلتقط خوادم DNS عاملة أكثر من الأدوات التي تقبل فقط الاستجابات الناجحة.
عند التفعيل، تستخدم الاستعلامات بادئات عشوائية:``` original: google.com random: a1b2c3d4.google.com
**حالة الاستخدام**: تجاوز استجابات DNS المخزنة مؤقتًا
**المتطلب**: يجب أن يحتوي المجال المستهدف على DNS بطاقة بدل (`*.example.com`)
## 📂 هيكل المشروع```
PYDNS-Scanner/
├── README.md # English documentation
├── README-FA.md # Farsi documentation
├── README-ZH.md # Chinese documentation
├── RELEASE_NOTES.md # Release notes (EN / FA / ZH)
├── pyproject.toml # Python package configuration
├── requirements.txt # Python dependencies
├── pydns-scanner.spec # PyInstaller build spec
├── python/
│ ├── __init__.py # Package init
│ ├── __main__.py # Entry point (pydns-scanner CLI)
│ ├── dnsscanner_tui.py # Main TUI application
│ ├── iran-ipv4.cidrs # Sample Iranian CIDR file
│ ├── requirements.txt # Python dependencies (source)
│ ├── scanner/ # Modular scanner package
│ │ ├── __init__.py
│ │ ├── config_mixin.py # Configuration mixin for TUI
│ │ ├── constants.py # Shared constants
│ │ ├── extra_tests.py # Security & EDNS0 tests
│ │ ├── ip_streaming.py # Streaming IP generation from CIDR
│ │ ├── isp_cache.py # ISP detection & caching
│ │ ├── proxy_testing.py # Slipstream proxy testing
│ │ ├── results.py # Result formatting & CSV export
│ │ ├── slipnet.py # SlipNet (DNSTT/NoiseDNS) testing
│ │ ├── slipstream.py # Slipstream client management
│ │ ├── utils.py # Utility functions
│ │ ├── widgets.py # Custom TUI widgets
│ │ └── worker_pool.py # Async worker pool
│ ├── slipstream-client/ # Bundled Slipstream binaries
│ │ ├── linux/
│ │ ├── windows/
│ │ ├── mac/
│ │ └── android/
│ └── slipnet-client/ # Bundled SlipNet binaries
│ ├── linux/
│ ├── windows/
│ └── mac/
├── results/ # Scan results (auto-generated)
├── logs/ # Application logs (when enabled)
└── static/ # Static assets
pip install textual
### خطأ "الملف غير موجود"
- تأكد من صحة مسار ملف CIDR
- استخدم مسارًا مطلقًا أو مسارًا نسبيًا من موقع السكريبت
- استخدم متصفح الملفات المدمج (📂 زر التصفح)
### الفحص البطيء
- قلل قيمة التزامن
- تحقق من عرض النطاق الترددي للشبكة
- تحقق من إعدادات مهلة DNS
### استخدام مرتفع للذاكرة
- يستخدم الماسح الضوئي البث لتقليل الذاكرة
- إذا استمرت المشكلات، قلل حجم الدفعة في `_stream_ips_from_file`
### فشل تحميل Slipstream
- **مشاكل الشبكة**: يقوم التطبيق بإعادة المحاولة تلقائيًا حتى 5 مرات مع تأخير أسي
- **الاستئناف**: يتم حفظ التنزيلات الجزئية كملفات `.partial` - فقط قم بتشغيله مرة أخرى لاستئنافه
- **التنزيل اليدوي**: قم بالتنزيل من [إصدارات slipstream-rust-plus-deploy](https://github.com/Fox-Fig/slipstream-rust-plus-deploy/releases/latest)
- **فحص السجلات**: قم بتمكين التسجيل (انظر قسم التكوين) للحصول على معلومات مفصلة عن الأخطاء
- **جدار الحماية**: تأكد من السماح بالوصول إلى GitHub
### لم يتم اكتشاف Slipstream
- تحقق من وجود الدليل الخاص بالمنصة (`slipstream-client/windows/`، إلخ)
- تحقق من تطابق اسم الملف (يدعم الأسماء الجديدة والقديمة)
- للتثبيتات القديمة: استخدم `slipstream-client.exe` (اكتشاف تلقائي)
- قم بتمكين التسجيل لرؤية عملية الكشف
### فشل اختبارات Slipstream
- تحقق من أن الملف التنفيذي لديه الأذونات الصحيحة (Linux/macOS: `chmod +x`)
- تحقق من أن المنافذ 10800-10802 متاحة
- راجع السجلات (إذا كانت مفعلة) في دليل `logs/`
- اختبر الاتصال بخوادم DNS يدويًا
## 📝 التسجيل
**الافتراضي: معطل** - لا يتم إنشاء سجلات للحفاظ على نظافة نظامك.
**لتمكين التسجيل:**
1. قم بتحرير `python/dnsscanner_tui.py`
2. قم بإلغاء تعليق قسم `logger.add()`
3. يتم حفظ السجلات في `logs/dnsscanner_TIMESTAMP.log`
**مستويات السجل:**
- **DEBUG**: نتائج مفصلة لاستعلامات DNS، تقدم التحميل
- **INFO**: تقدم الفحص والإحصائيات
- **WARNING**: مشكلات غير حرجة، محاولات إعادة المحاولة
- **ERROR**: إخفاقات حرجة، أخطاء التحميل
## 🌍 إيجاد قوائم CIDR
### نطاقات IP للدول
**IPv4**:
- https://www.ipdeny.com/ipblocks/data/aggregated/
**IPv6**:
- https://www.ipdeny.com/ipv6/ipaddresses/aggregated/
### مثال الاستخدام```bash
# Download Iran IPv4 ranges
wget https://www.ipdeny.com/ipblocks/data/aggregated/ir-aggregated.zone -O iran-ipv4.cidrs
# Use in scanner
python dnsscanner_tui.py
# Then select iran-ipv4.cidrs in the file browser
نرحب بالمساهمات! لا تتردد في تقديم طلبات السحب أو فتح القضايا.
git clone https://github.com/xullexer/PYDNS-Scanner.git cd PYDNS-Scanner/python pip install -r requirements.txt python dnsscanner_tui.py
## 📄 الترخيص
هذا المشروع مرخص بموجب رخصة MIT.
## 👨💻 المؤلف
- GitHub: [@xullexer](https://github.com/xullexer)
## 🙏 شكر وتقدير
- بُني باستخدام [Textual](https://github.com/Textualize/textual) من Textualize
- تحليل DNS عبر [aiodns](https://github.com/saghul/aiodns)
- مستوحى من الحاجة إلى اكتشاف خوادم DNS بكفاءة
- شكر لـ [**anonvector**](https://github.com/anonvector) على تطوير **SlipNet CLI** — ملفات SlipNet الثنائية المضمنة في هذا المشروع من أعمالهم
- قاعدة كود بايثون الآن **معيارية** وأسهل في التطوير والصيانة
## 📈 ملاحظات الأداء
تم اختبار الأداء على أنظمة مختلفة:
- **فحص صغير** (1,000 عنوان IP): ~10-30 ثانية
- **فحص متوسط** (50,000 عنوان IP): ~5-10 دقائق
- **فحص كبير** (أكثر من مليون عنوان IP): ~1-3 ساعات
*تختلف النتائج بناءً على سرعة الشبكة وإعدادات التزامن وموارد النظام.*
## 🔐 اعتبارات أمنية
- يستخدم مولد أرقام عشوائية آمنة تشفيرياً (`secrets.SystemRandom`)
- لا يتم تسجيل أي بيانات اعتماد أو بيانات حساسة
- استعلامات DNS تكون عبر المنفذ 53 UDP/TCP القياسي
- اختبار وكيل Slipstream اختياري ومعطل افتراضياً
## 💝 دعم المشروع
إذا وجدت هذا المشروع مفيداً، فكر في دعم تطويره:
### تبرعات بالعملات الرقمية
- **بيتكوين (BTC)**
`bc1qpya0kc2uh0mc08c7nuzrqkpsqjr36mrwscgpxr`
- **سولانا (SOL)**
`J1XzZfizQ6mgYiyxpLGWU52kHBF1hm2Tb9AZ5FaRj8tH`
- **إيثيريوم (ETH)**
`0x26D9924B88e71b5908d957EA4c74C66989c253cb`
- **سلسلة بينانس الذكية (BNB/BSC)**
`0x26D9924B88e71b5908d957EA4c74C66989c253cb`
- **ترون (TRX)**
`TYBZFr8WUsjgfrXrqmrdF5EXPXo7QdimA8`
- **قاعدة إيثيريوم**
`0x26D9924B88e71b5908d957EA4c74C66989c253cb`
- **تون (شبكة تلغرام المفتوحة)**
`UQBcI_ZZGQq3fcNzTkL-zszgFR5HpRDLFHYRZffizriiScxJ`
---
**مسح سعيد! 🚀**
| المفتاح | متى | الإجراء |
|---|
s | شاشة الإعدادات | بدء الفحص |
q | في أي وقت | إنهاء التطبيق |
c | أثناء الفحص | حفظ النتائج |
p | أثناء الفحص | إيقاف الفحص مؤقتًا |
r | عند التوقف المؤقت | استئناف الفحص |
x | عند التوقف المؤقت | خلط عناوين IP المتبقية |