{"id":43273294,"url":"https://github.com/xullexer/pydns-scanner","last_synced_at":"2026-02-27T22:43:53.820Z","repository":{"id":335457553,"uuid":"1145815300","full_name":"xullexer/PYDNS-Scanner","owner":"xullexer","description":"A modern, high-performance DNS scanner with a beautiful Terminal User Interface (TUI) built with Textual. This tool can scan millions of IP addresses to find working DNS servers with optional Slipstream proxy testing and automatic multi-platform client download.","archived":false,"fork":false,"pushed_at":"2026-02-02T09:32:01.000Z","size":22618,"stargazers_count":103,"open_issues_count":2,"forks_count":16,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-04T06:11:48.369Z","etag":null,"topics":["dns","dnstt","doh","dot","python","slipstream","tui","v2ray","vpn"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xullexer.png","metadata":{"files":{"readme":"README-FA.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-30T08:49:11.000Z","updated_at":"2026-02-04T03:49:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/xullexer/PYDNS-Scanner","commit_stats":null,"previous_names":["xullexer/pydns-scanner"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/xullexer/PYDNS-Scanner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xullexer%2FPYDNS-Scanner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xullexer%2FPYDNS-Scanner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xullexer%2FPYDNS-Scanner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xullexer%2FPYDNS-Scanner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xullexer","download_url":"https://codeload.github.com/xullexer/PYDNS-Scanner/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xullexer%2FPYDNS-Scanner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29092981,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-04T03:31:03.593Z","status":"ssl_error","status_checked_at":"2026-02-04T03:29:50.742Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dns","dnstt","doh","dot","python","slipstream","tui","v2ray","vpn"],"created_at":"2026-02-01T16:07:05.028Z","updated_at":"2026-02-27T22:43:53.813Z","avatar_url":"https://github.com/xullexer.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿\u003cdiv dir=\"rtl\"\u003e\n\n# اسکنر PYDNS\n\n\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003cimg\n    src=\"https://github.com/user-attachments/assets/4ed004bc-b64f-4407-abb0-b14bd010354e\"\n    width=\"720\"\n    style=\"border-radius:12px;\"\n  /\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Python-3.11%2B-blue?style=for-the-badge\" alt=\"Python\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-MIT-green?style=for-the-badge\" alt=\"License\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Platform-Windows%20%7C%20macOS%20%7C%20Linux%20%7C%20Android-orange?style=for-the-badge\" alt=\"Platform\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Termux-%D8%B3%D8%A7%D8%B2%DA%AF%D8%A7%D8%B1-cyan?style=for-the-badge\" alt=\"Termux\"\u003e\n\u003c/div\u003e\n\n\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n  🇺🇸 \u003ca href=\"README.md\"\u003e\u003cb\u003eEnglish\u003c/b\u003e\u003c/a\u003e\n  \u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  🇮🇷 \u003ca href=\"README-FA.md\"\u003e\u003cb\u003eفارسی\u003c/b\u003e\u003c/a\u003e\n  \u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  🇨🇳 \u003ca href=\"README-ZH.md\"\u003e\u003cb\u003e中文\u003c/b\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cstrong\u003eیک اسکنر DNS مدرن و با کارایی بالا با رابط کاربری ترمینال (TUI) زیبا که با Textual ساخته شده است.\u003c/strong\u003e\u003cbr\u003e\n  این ابزار می‌تواند میلیون‌ها آدرس IP را اسکن کند تا سرورهای DNS فعال را پیدا کند، با قابلیت تست پروکسی Slipstream و دانلود خودکار چندپلتفرمی.\u003cbr\u003e\n  \u003cbr\u003e\n  \u003cstrong\u003e🆕 نسخه ۱.۴.۰: ستون Resolved IP، مرتب‌سازی هوشمند چند کلیدی، رفع تست پروکسی و بهبودهای کارایی!\u003c/strong\u003e\n\u003c/div\u003e\n\n## 🎉 تازه‌های نسخه ۱.۴.۰\n\n### 🎨 منوی شروع طراحی‌شده از نو\n- **رابط کاربری بهتر** — صفحه پیکربندی کاملاً بازطراحی شده با چیدمان تمیزتر و سلسله‌مراتب بصری بهبودیافته\n- **پنل لاگ اختیاری** — خروجی لاگ به‌صورت پیش‌فرض مخفی است؛ در هر زمان حین اسکن کلید `L` را بزنید تا آن را فعال یا غیرفعال کنید\n\n### 🗂️ سه حالت اسکن\nهر سه حالت از منطق اسکن یکسانی استفاده می‌کنند. تفاوت تنها در تعداد IP خوانده‌شده از فایل CIDR و آستانه shuffle است: اگر در این تعداد IP متوالی هیچ DNS فعالی یافت نشود، محدوده باقی‌مانده خودکار shuffle می‌شود تا سرورهای پنهان در زیرشبکه‌های بزرگ از دست نروند.\n- **Quick Scan (اسکن سریع)** — حداکثر **۲۵‌۰۰۰ IP**، آستانه shuffle هر **۵۰۰ IP**\n- **Deep Scan (اسکن عمیق)** — حداکثر **۵۰‌۰۰۰ IP**، آستانه shuffle هر **۱‌۰۰۰ IP**\n- **Full Scan (اسکن کامل)** — تعداد IP **نامحدود** (کل فایل)، آستانه shuffle هر **۳‌۰۰۰ IP**\n\n### 🔐 تست امنیتی\n- **تشخیص Hijack** — تشخیص می‌دهد آیا سرور DNS درخواست‌ها را رهگیری یا تغییر مسیر می‌دهد\n- **تشخیص Filtered** — سرورهایی که دامنه‌های خاص را بی‌صدا بلاک می‌کنند شناسایی می‌شوند\n- **بررسی Open Resolver** — سرورهایی که پرس‌وجوهای خارجی دلخواه را resolve می‌کنند علامت‌گذاری می‌شوند\n- **اعتبارسنجی DNSSEC** — گزارش می‌دهد آیا سرور پاسخ‌های امضاشده (DNSSEC) برمی‌گرداند\n\n### 🌐 ستون‌های تحلیل شبکه\n- **Resolved IP** — هر سرور DNS کاندیدا برای resolve کردن `google.com` استفاده می‌شود و IP نتیجه در جدول نمایش داده می‌شود\n- **تشخیص ISP** — شماره AS و نام سازمان از طریق ip-api.com (محدودشده، ناهمزمان)\n- **تشخیص IPv4/IPv6** — نشان می‌دهد سرور روی IPv4، IPv6 یا هر دو پاسخ می‌دهد\n- **تشخیص EDNS0** — پشتیبانی از افزونه EDNS0 را تست و نمایش می‌دهد\n- **ستون TCP/UDP** — انتقال‌های پشتیبانی‌شده را تست و نمایش می‌دهد\n\n### 🔌 Slipstream Rust Plus — تست پروکسی بهبودیافته\n- **ارتقا به کلاینت Slipstream Rust Plus** — باینری‌های سریع‌تر در همه پلتفرم‌ها\n- **تونل HTTPS CONNECT** — تست پروکسی اکنون از `https://www.google.com` با HTTP CONNECT استفاده می‌کند؛ پروب HTTP ساده قبلی همیشه «Failed» برمی‌گرداند\n- **تست SOCKS5 مستقل** — SOCKS5 جداگانه تست می‌شود، نه فقط به‌عنوان پشتیبان\n- **حذف نتایج false-positive** — اعتبارسنجی بهبودیافته اشتباهات را حذف می‌کند\n- **مرتب‌سازی هوشمند چند کلیدی** — موفقیت پروکسی → DNSSEC → سریع‌ترین پینگ\n\n### 🗃️ بازطراحی جدول نتایج\n- **چیدمان ستون جدید** — ستون پورت حذف شد؛ ترتیب: Ping → [Proxy] → IPv4/IPv6 → Security → TCP/UDP → EDNS0 → Resolved IP → ISP\n- **شمارنده‌های زنده Pass/Fail** — نوار آمار در طول کل اسکن به‌درستی به‌روز می‌شود\n\n### 🐛 رفع باگ\n- **انتخاب CIDR سفارشی** — باگی که هنگام انتخاب فایل محدوده IP سفارشی در منوی اسکن اعمال نمی‌شد رفع شد\n- **رفع باگ زیرشبکه /31 و /32** — IP‌های این زیرشبکه‌ها قبلاً بی‌صدا رد می‌شدند\n- **رفع قفل ISP** — قفل rate-limit قبل از sleep آزاد می‌شود تا از توقف pipeline جلوگیری شود\n\n### ⚡ بهبودهای عملکرد و ماژول‌ها\n- **`google-re2`** — کتابخانه `re` با موتور RE2 گوگل جایگزین شد برای regex سریع‌تر و ایمن‌تر\n- **Resolver اختصاصی برای هر تست** — از قفل شدن C-ares جلوگیری می‌کند\n- **Shuffle بر پایه محدوده** — حساب عددی جایگزین `list(subnet.hosts())` برای CIDR‌های بزرگ\n- **محدودکننده نرخ ISP** — درخواست‌های ip-api.com محدود + retry خودکار برای خطای 429\n- **هشدار سوکت ویندوز** — هنگام تجاوز همزمانی از ۶۴ سوکت هشدار داده می‌شود\n\n## ✨ ویژگی‌ها\n\n- 🎨 **منوی شروع بازطراحی‌شده** — صفحه پیکربندی مدرن و تمیز\n- 🗂️ **سه حالت اسکن** — Quick (حداکثر ۲۵ک، آستانه ۵۰۰)، Deep (حداکثر ۵۰ک، آستانه ۱ک)، Full (نامحدود، آستانه ۳ک) — منطق یکسان، مقیاس متفاوت\n- 🔄 **Auto-Shuffle هوشمند** — اگر در آستانه تعریف‌شده هیچ DNS فعالی یافت نشود، محدوده باقی‌مانده خودکار shuffle می‌شود\n- 🔐 **تست امنیتی** — Hijack، Filtered، Open Resolver و DNSSEC\n- 🌐 **ستون Resolved IP** — هر سرور DNS با resolve `google.com` تست می‌شود\n- 📡 **تشخیص ISP** — شماره AS و نام سازمان\n- 🌍 **تشخیص IPv4/IPv6** — نسخه‌های IP پشتیبانی‌شده\n- 📶 **تشخیص EDNS0** — پشتیبانی از افزونه EDNS0\n- 🔌 **Slipstream Rust Plus** — تست پروکسی سریع‌تر با رفع false-positive و تست مستقل SOCKS5\n- 🧮 **مرتب‌سازی هوشمند** — موفقیت پروکسی → DNSSEC → پینگ\n- ⚡ **کارایی بالا** — اسکن غیرهمزمان با قابلیت تنظیم همزمانی\n- ⏸️ **توقف/ادامه/تصادفی‌سازی** — کنترل کامل اسکن\n- 📊 **آمار زنده** — شمارنده‌های Pass/Fail/Found در طول اسکن\n- 🔍 **تشخیص هوشمند DNS** — سرورهای DNS فعال حتی با NXDOMAIN/NODATA\n- 🎲 **زیردامنه تصادفی** — جلوگیری از پاسخ‌های کش‌شده\n- 🌐 **انواع DNS متعدد** — A، AAAA، MX، TXT، NS\n- 📝 **پنل لاگ اختیاری** — پیش‌فرض مخفی؛ کلید `L` برای نمایش/پنهان\n- 🌍 **دانلود خودکار چندپلتفرمی** — کلاینت Slipstream مناسب برای پلتفرم شما\n- 📥 **ادامه دانلود** — ادامه هوشمند در صورت قطع شبکه\n- 💾 **ذخیره خودکار نتایج** — خروجی CSV با جزئیات هر سرور\n- 📁 **مدیریت CIDR** — IP‌های ایران داخلی + انتخابگر فایل سفارشی (باگ برطرف شده)\n- ⚙️ **قابل تنظیم** — همزمانی، زمان انتظار و فیلترها\n- 🚀 **کم‌مصرف** — تولید IP جریانی بدون بارگذاری در حافظه\n- 🚄 **google-re2** — موتور RE2 گوگل برای regex سریع‌تر\n- 🔔 **هشدارهای صوتی** — صدای اختیاری هنگام تست موفق پروکسی\n\n## 📋 پیش‌نیازها\n\n### نسخه پایتون\n- پایتون ۳.۱۱ یا بالاتر\n\n### وابستگی‌ها\n\n```bash\n# وابستگی‌های اصلی (همیشه نصب می‌شوند — روی همه پلتفرم‌ها از جمله Android/Termux کار می‌کنند)\ntextual\u003e=0.47.0       # فریمورک TUI\naiodns\u003e=3.1.0         # حل‌کننده DNS غیرهمزمان\nhttpx[socks]\u003e=0.25.0  # کلاینت HTTP با پشتیبانی SOCKS5 برای تست پروکسی\nloguru\u003e=0.7.0         # لاگ پیشرفته\n\n# اکستراهای اختیاری \"full\" (pip install pydns-scanner[full]) — فقط دسکتاپ\ngoogle-re2\u003e=1.0       # موتور regex سریع RE2 (به re استاندارد جایگزین می‌شود)\norjson\u003e=3.9.0         # سریالایز سریع JSON (به json استاندارد جایگزین می‌شود)\npyperclip\u003e=1.8.0      # پشتیبانی کلیپ‌بورد (در صورت نبود غیرفعال می‌شود)\n```\n\n### اختیاری\n- **کلاینت Slipstream** - برای قابلیت تست پروکسی (۵ تست همزمان)\n  - **دانلود خودکار**: برنامه به صورت خودکار پلتفرم شما را تشخیص داده و کلاینت مناسب را دانلود می‌کند\n  - **تشخیص هوشمند**: تشخیص نصب‌های موجود (شامل نام‌های قدیمی)\n  - **پشتیبانی از ادامه**: دانلودهای ناقص ذخیره شده و در تلاش مجدد ادامه می‌یابند\n  - پلتفرم‌های پشتیبانی شده:\n    - Linux (x86_64): `slipstream-client-linux-amd64`\n    - Linux (ARM64): `slipstream-client-linux-arm64`\n    - Windows (x86_64): `slipstream-client-windows-amd64.exe`\n    - macOS (ARM64): `slipstream-client-darwin-arm64`\n    - macOS (Intel): `slipstream-client-darwin-amd64`\n    - Android (ARM64): `slipstream-client-linux-arm64`\n  - دانلود دستی از: [انتشارات slipstream-rust-plus-deploy](https://github.com/Fox-Fig/slipstream-rust-plus-deploy/releases/latest)\n\n### 📦 کلاینت‌های Slipstream همراه\n\nباینری‌های کامپایل‌شده کلاینت Slipstream (از مخزن سریع‌تر [Fox-Fig/slipstream-rust-plus-deploy](https://github.com/Fox-Fig/slipstream-rust-plus-deploy)) برای همه پلتفرم‌ها در پوشه `slipstream-client/` موجود است:\n\n| پلتفرم | مسیر | توضیحات |\n|--------|------|----------|\n| **Linux x86_64** | `slipstream-client/linux/slipstream-client-linux-amd64` | باینری لینوکس x86_64 |\n| **Linux ARM64** | `slipstream-client/linux/slipstream-client-linux-arm64` | باینری لینوکس ARM64 (رزبری پای، سرورهای ARM) |\n| **Android/Termux** | `slipstream-client/android/slipstream-client-linux-arm64` | اندروید ARM64 (سازگار با Termux) |\n| **Windows** | `slipstream-client/windows/slipstream-client-windows-amd64.exe` | فایل اجرایی ویندوز x86_64 |\n| **macOS ARM** | `slipstream-client/mac/slipstream-client-darwin-arm64` | مک با تراشه اپل سیلیکون (M1/M2/M3/M4) |\n| **macOS Intel** | `slipstream-client/mac/slipstream-client-darwin-amd64` | مک با پردازنده اینتل x86_64 |\n\n\u003e **⚠️ نکته ویندوز:** کلاینت ویندوز به فایل‌های DLL اپن‌اس‌اس‌ال (`libcrypto-3-x64.dll` و `libssl-3-x64.dll`) نیاز دارد که در پوشه `slipstream-client/windows/` قرار داده شده‌اند. در صورت استفاده از دانلود خودکار، این فایل‌ها به صورت خودکار همراه با فایل اجرایی ویندوز دانلود می‌شوند.\n\n#### 📥 آرشیوهای همه‌در‌یک\n\nبرای راحتی، آرشیوهای فشرده شامل باینری همه پلتفرم‌ها موجود است:\n\n- **`slipstream-client/slipstream-client-all-platforms.tar.gz`** - بهترین فشرده‌سازی (توصیه شده)\n- **`slipstream-client/slipstream-client-all-platforms.zip`** - فرمت سازگار با ویندوز\n\nاین آرشیوها شامل کلاینت‌های لینوکس، ویندوز و مک در یک دانلود هستند.\n\n## 🚀 نصب\n\n### روش ۱: نصب از PyPI (توصیه شده)\n\nساده‌ترین روش نصب PYDNS Scanner:\n\n#### استفاده از pip\n```bash\npip install pydns-scanner\n```\n\n#### دسکتاپ — اکستراهای کامل (regex سریع‌تر، کلیپ‌بورد، JSON سریع)\n```bash\npip install pydns-scanner[full]\n```\n\n#### استفاده از uv (سریع‌تر)\n```bash\nuv pip install pydns-scanner        # هسته اصلی\nuv pip install pydns-scanner[full]   # اکستراهای دسکتاپ\n```\n\n#### Android / Termux\n```bash\npkg update \u0026\u0026 pkg install python\npip install pydns-scanner            # فقط هسته اصلی — همیشه روی Termux کار می‌کند\npydns-scanner\n```\n\n\u003e **نکته:** روی Android/Termux بسته‌های اختیاری C-extension (`google-re2`، `orjson`، `pyperclip`) به‌طور خودکار رد می‌شوند\n\u003e — اسکنر بدون هیچ دخالت دستی به معادل‌های استاندارد جایگزین می‌شود.\n\n#### استفاده از میرور (برای کاربران با دسترسی محدود به PyPI)\n```bash\n# میرور Runflare\npip install pydns-scanner -i https://mirror-pypi.runflare.com/simple/ --trusted-host mirror-pypi.runflare.com\n\n# یا میرور Alibaba Cloud\npip install pydns-scanner -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n\n# یا میرور TUNA\npip install pydns-scanner -i https://pypi.tuna.tsinghua.edu.cn/simple\n```\n\n#### اجرا پس از نصب\n```bash\npydns-scanner\n```\n\n---\n\n### روش ۲: اجرا از سورس کد (دستی)\n\nاگر می‌خواهید کد را مستقیماً از مخزن اجرا کنید:\n\n#### مرحله ۱: کلون کردن مخزن\n```bash\ngit clone https://github.com/xullexer/PYDNS-Scanner.git\ncd PYDNS-Scanner\n```\n\n#### مرحله ۲: نصب وابستگی‌ها\n\n**استفاده از uv (توصیه شده - سریع!)**\n```bash\nuv pip install -r requirements.txt\n```\n\n**استفاده از pip**\n```bash\npip install -r requirements.txt\n```\n\n**استفاده از میرور (برای کاربران با دسترسی محدود به PyPI)**\n```bash\n# میرور Runflare\npip install -r requirements.txt -i https://mirror-pypi.runflare.com/simple/ --trusted-host mirror-pypi.runflare.com\n\n# یا میرور Alibaba Cloud\npip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n\n# یا میرور TUNA\npip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple\n```\n\n#### مرحله ۳: اجرای برنامه\n```bash\npython -m python\n```\n\n---\n\n## 🎮 استفاده\n\n### استفاده پایه\n\n**از PyPI:**\n```bash\npydns-scanner\n```\n\n**از سورس کد:**\n```bash\npython -m python\n```\n\nاین دستور رابط کاربری TUI تعاملی را راه‌اندازی می‌کند که می‌توانید تنظیم کنید:\n- **فایل CIDR**: مسیر فایل حاوی محدوده IP‌ها (نشانه‌گذاری CIDR)\n- **دامنه**: دامنه برای پرس‌وجو (مثلاً google.com)\n- **نوع DNS**: نوع رکورد (A، AAAA، MX، TXT، NS)\n- **همزمانی**: تعداد کارگران موازی (پیش‌فرض: ۱۰۰)\n- **زیردامنه تصادفی**: اضافه کردن پیشوند تصادفی برای جلوگیری از پاسخ‌های کش شده\n- **تست Slipstream**: فعال‌سازی تست پروکسی برای سرورهای DNS یافت شده\n\n### فرمت فایل CIDR\n\nیک فایل متنی با یک محدوده CIDR در هر خط ایجاد کنید:\n\n```\n# نظرات با # شروع می‌شوند\n1.1.1.0/24\n8.8.8.0/24\n178.22.122.0/24\n185.51.200.0/22\n```\n\n### گردش کار نمونه\n\n۱. **راه‌اندازی برنامه**:\n   ```bash\n   python dnsscanner_tui.py\n   ```\n\n۲. **تنظیم پارامترهای اسکن**:\n   - روی \"📂 Browse\" کلیک کنید تا فایل CIDR خود را انتخاب کنید\n   - دامنه را وارد کنید (مثلاً `google.com`)\n   - همزمانی را تنظیم کنید (توصیه: ۱۰۰-۵۰۰)\n   - گزینه‌های مورد نیاز را فعال کنید\n\n۳. **شروع اسکن**:\n   - روی \"🚀 Start Scan\" کلیک کنید\n   - پیشرفت و نتایج را به صورت زنده مشاهده کنید\n   - از \"⏸ Pause\" برای توقف اسکن در هر زمان استفاده کنید\n   - از \"▶ Resume\" برای ادامه از جایی که متوقف شدید استفاده کنید\n\n۴. **مشاهده نتایج**:\n   - مرتب شده بر اساس زمان پاسخ (سریع‌ترین اول)\n   - سبز = سریع (\u003c100ms)\n   - زرد = متوسط (100-300ms)\n   - قرمز = کند (\u003e300ms)\n\n۵. **ذخیره نتایج**:\n   - نتایج به صورت خودکار در `results/TIMESTAMP.csv` ذخیره می‌شوند\n   - `c` را فشار دهید یا روی \"💾 Save Results\" کلیک کنید برای ذخیره دستی\n\n## ⌨️ میانبرهای صفحه‌کلید\n\n| کلید | کِی | عملکرد |\n|------|-----|--------|\n| `s` | صفحه تنظیمات | شروع اسکن |\n| `q` | همیشه | خروج از برنامه |\n| `c` | هنگام اسکن | ذخیره نتایج |\n| `p` | هنگام اسکن | توقف اسکن |\n| `l` | هنگام اسکن | نمایش/پنهان پنل لاگ |\n| `r` | وقتی متوقف شده | ادامه اسکن |\n| `x` | وقتی متوقف شده | تصادفی‌سازی |\n\n## 🎮 دکمه‌های کنترل\n\nدر حین اسکن فعال:\n- **⏸ Pause** - توقف اسکن بدون از دست دادن پیشرفت\n- **▶ Resume** - ادامه اسکن از جایی که متوقف شدید\n- **💾 Save Results** - ذخیره دستی نتایج فعلی\n- **🛑 Quit** - خروج از برنامه\n\n## 🎛️ پیکربندی\n\n### تنظیمات همزمانی\n\nبر اساس سیستم و شبکه خود تنظیم کنید:\n\n- **کم (50-100)**: محافظه‌کارانه، مناسب برای سیستم‌های کندتر\n- **متوسط (100-300)**: عملکرد متعادل\n- **بالا (300-500)**: اسکن سریع، نیاز به سخت‌افزار خوب\n- **خیلی بالا (500+)**: حداکثر سرعت، ممکن است به محدودیت منابع برسد\n\n### تنظیمات تست Slipstream\n\nاسکنر از تست پروکسی Slipstream موازی با دانلود خودکار پشتیبانی می‌کند:\n\n```python\n# در متد __init__\nself.slipstream_max_concurrent = 5  # حداکثر تست‌های پروکسی موازی\nself.slipstream_base_port = 10800   # پورت پایه (استفاده از 10800، 10801، 10802)\n```\n\n## 📊 فرمت خروجی\n\nنتایج در **فرمت CSV** ذخیره می‌شوند (`results/TIMESTAMP.csv`). ستون‌ها بر اساس تست‌های فعال تغییر می‌کنند:\n\n```csv\nDNS,Ping (ms),IPv4/IPv6,TCP/UDP,Security,EDNS0,Resolved IP,ISP\n8.8.8.8,12,IPv4/IPv6,TCP+UDP,DNSSEC,Yes,142.250.185.46,AS15169 Google LLC\n1.1.1.1,15,IPv4/IPv6,TCP+UDP,DNSSEC,Yes,142.250.185.46,AS13335 Cloudflare Inc\n```\n\nستون‌های اختیاری (**Proxy Test**، **Security**، **EDNS0**) فقط در صورت فعال بودن تست مربوطه در تنظیمات درج می‌شوند.\n\n## 🔍 نحوه کار\n\n### منطق تشخیص DNS\n\nاسکنر یک سرور را به عنوان \"DNS فعال\" در نظر می‌گیرد اگر:\n\n۱. **پاسخ موفق**: پاسخ DNS معتبر در کمتر از ۲ ثانیه برگرداند\n۲. **پاسخ‌های خطای DNS**: NXDOMAIN، NODATA یا NXRRSET در کمتر از ۲ ثانیه برگرداند\n   - این خطاها به معنای این است که سرور DNS کار می‌کند، فقط رکورد وجود ندارد\n\nاین رویکرد سرورهای DNS فعال بیشتری را نسبت به ابزارهایی که فقط پاسخ‌های موفق را قبول می‌کنند، تشخیص می‌دهد.\n\n### بهینه‌سازی‌های عملکرد\n\n- **تولید IP جریانی**: IP‌ها به صورت آنی از محدوده‌های CIDR تولید می‌شوند\n- **پردازش دسته‌ای**: IP‌ها در دسته‌های ۵۰۰ تایی پردازش می‌شوند\n- **I/O غیرهمزمان**: پرس‌وجوهای DNS غیرمسدودکننده با استفاده از aiodns\n- **کنترل سمافور**: محدود کردن عملیات همزمان برای جلوگیری از اتمام منابع\n- **نگاشت حافظه**: خواندن سریع فایل CIDR با استفاده از mmap در صورت امکان\n\n## 🌍 یافتن لیست‌های CIDR\n\n### محدوده IP کشورها\n\n**IPv4**:\n- https://www.ipdeny.com/ipblocks/data/aggregated/\n\n**IPv6**:\n- https://www.ipdeny.com/ipv6/ipaddresses/aggregated/\n\n### مثال استفاده\n```bash\n# دانلود محدوده IPv4 ایران\nwget https://www.ipdeny.com/ipblocks/data/aggregated/ir-aggregated.zone -O iran-ipv4.cidrs\n\n# استفاده در اسکنر\npython dnsscanner_tui.py\n# سپس iran-ipv4.cidrs را در مرورگر فایل انتخاب کنید\n```\n\n## 🐛 رفع اشکال\n\n### \"No module named 'textual'\"\n```bash\npip install textual\n```\n\n### خطای \"File not found\"\n- مطمئن شوید مسیر فایل CIDR صحیح است\n- از مسیر مطلق یا مسیر نسبی از محل اسکریپت استفاده کنید\n- از مرورگر فایل داخلی استفاده کنید (دکمه 📂 Browse)\n\n### اسکن کند\n- مقدار همزمانی را کاهش دهید\n- پهنای باند شبکه را بررسی کنید\n- تنظیمات زمان انتظار DNS را تأیید کنید\n\n### دانلود Slipstream ناموفق\n- **مشکلات شبکه**: برنامه به صورت خودکار تا ۵ بار با تأخیر نمایی تلاش مجدد می‌کند\n- **ادامه**: دانلودهای ناقص به صورت فایل‌های `.partial` ذخیره می‌شوند - فقط دوباره اجرا کنید\n- **دانلود دستی**: از [انتشارات slipstream-rust-plus-deploy](https://github.com/Fox-Fig/slipstream-rust-plus-deploy/releases/latest) دانلود کنید\n- **بررسی لاگ‌ها**: لاگ را فعال کنید (بخش پیکربندی را ببینید) برای اطلاعات خطای دقیق\n- **فایروال**: مطمئن شوید دسترسی به GitHub مجاز است\n\n### تست‌های Slipstream ناموفق\n- تأیید کنید که فایل اجرایی مجوزهای صحیح دارد (Linux/macOS: `chmod +x`)\n- بررسی کنید که پورت‌های 10800-10802 در دسترس هستند\n- لاگ‌ها را (اگر فعال است) در پوشه `logs/` بررسی کنید\n- اتصال به سرورهای DNS را به صورت دستی تست کنید\n\n## 🤝 مشارکت\n\nمشارکت‌ها خوش‌آمد هستند! لطفاً در ارسال pull request یا باز کردن issue تردید نکنید.\n\n### راه‌اندازی توسعه\n```bash\ngit clone https://github.com/xullexer/PYDNS-Scanner.git\ncd PYDNS-Scanner/python\npip install -r requirements.txt\npython dnsscanner_tui.py\n```\n\n## 📄 مجوز\n\nاین پروژه تحت مجوز MIT منتشر شده است.\n\n## 👨‍💻 نویسنده\n\n- GitHub: [@xullexer](https://github.com/xullexer)\n\n## 🙏 قدردانی\n\n- ساخته شده با [Textual](https://github.com/Textualize/textual) توسط Textualize\n- حل DNS از طریق [aiodns](https://github.com/saghul/aiodns)\n- الهام گرفته از نیاز به کشف کارآمد سرور DNS\n\n## 📈 یادداشت‌های عملکرد\n\nعملکرد تست شده در سیستم‌های مختلف:\n\n- **اسکن کوچک** (1,000 IP): ~۱۰-۳۰ ثانیه\n- **اسکن متوسط** (50,000 IP): ~۵-۱۰ دقیقه\n- **اسکن بزرگ** (1M+ IP): ~۱-۳ ساعت\n\n*نتایج بر اساس سرعت شبکه، تنظیمات همزمانی و منابع سیستم متفاوت است.*\n\n## 🔐 ملاحظات امنیتی\n\n- استفاده از مولد اعداد تصادفی امن رمزنگاری (`secrets.SystemRandom`)\n- هیچ اطلاعات اعتباری یا داده حساسی لاگ نمی‌شود\n- پرس‌وجوهای DNS از پورت استاندارد UDP/TCP 53 هستند\n- تست پروکسی Slipstream اختیاری است و به صورت پیش‌فرض غیرفعال است\n\n## 💝 حمایت از پروژه\n\nاگر این پروژه برای شما مفید است، از توسعه آن حمایت کنید:\n\n### کمک مالی با ارزهای دیجیتال\n\n- **بیت‌کوین (BTC)**  \n  `bc1qpya0kc2uh0mc08c7nuzrqkpsqjr36mrwscgpxr`\n\n- **سولانا (SOL)**  \n  `J1XzZfizQ6mgYiyxpLGWU52kHBF1hm2Tb9AZ5FaRj8tH`\n\n- **اتریوم (ETH)**  \n  `0x26D9924B88e71b5908d957EA4c74C66989c253cb`\n\n- **بایننس اسمارت چین (BNB/BSC)**  \n  `0x26D9924B88e71b5908d957EA4c74C66989c253cb`\n\n- **ترون (TRX)**  \n  `TYBZFr8WUsjgfrXrqmrdF5EXPXo7QdimA8`\n\n- **اتریوم بیس (Ethereum Base)**  \n  `0x26D9924B88e71b5908d957EA4c74C66989c253cb`\n\n- **تلگرام اوپن نتورک (TON)**  \n  `UQBcI_ZZGQq3fcNzTkL-zszgFR5HpRDLFHYRZffizriiScxJ`\n\n---\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxullexer%2Fpydns-scanner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxullexer%2Fpydns-scanner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxullexer%2Fpydns-scanner/lists"}