
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.
Scanner now scans from the start and end of each IP range simultaneously across multiple ranges, combined with random shuffle — faster performance and higher chance of finding working DNS servers compared to linear scanning.
All DNS types (A, AAAA, MX, TXT, NS) are automatically tested and scored per server — same scoring system as the SlipNet scanner.
Fully customizable scanning parameters:
Scan with a specified MTU value for advanced network tuning.
google.com, result shown in table# Core dependencies (always installed — works on every platform including Android/Termux)
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
# Optional "full" extras (pip install pydns-scanner[full]) — desktop only
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-client-linux-amd64slipstream-client-linux-arm64slipstream-client-windows-amd64.exeslipstream-client-darwin-arm64slipstream-client-darwin-amd64slipstream-client-linux-arm64Pre-compiled Slipstream client binaries (from the faster Fox-Fig/slipstream-rust-plus-deploy) are included in the slipstream-client/ folder for all platforms:
⚠️ Windows Note: The Windows client requires OpenSSL DLLs (
libcrypto-3-x64.dllandlibssl-3-x64.dll) which are included in theslipstream-client/windows/folder. When using automatic download, these DLLs are downloaded automatically alongside the Windows executable.
For convenience, compressed archives containing all platform binaries are available:
slipstream-client/slipstream-client-all-platforms.tar.gz - Best compression (recommended)slipstream-client/slipstream-client-all-platforms.zip - Windows-friendly formatThese archives include Linux, Windows, and macOS clients in a single download.
slipnet-linux-amd64slipnet-linux-arm64slipnet-windows-amd64.exeslipnet-darwin-arm64slipnet-darwin-amd64Pre-compiled SlipNet client binaries (by anonvector) are included in the slipnet-client/ folder for all platforms:
The easiest way to install PYDNS Scanner:
pip install pydns-scanner
pip install pydns-scanner[full]
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
Note: On Android/Termux the optional C-extension packages (
google-re2,orjson,pyperclip) are automatically skipped — the scanner falls back to stdlib equivalents with zero manual intervention.
# 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
If you want to run the code directly from the repository:
git clone https://github.com/xullexer/PYDNS-Scanner.git
cd PYDNS-Scanner
Using uv (Recommended - Fast!)
uv pip install -r requirements.txt
Using pip
pip install -r requirements.txt
Using Mirror (For Users with Limited Access to PyPI)
# Runflare Mirror
pip install -r requirements.txt -i https://mirror-pypi.runflare.com/simple/ --trusted-host mirror-pypi.runflare.com
# Or Alibaba Cloud Mirror
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
# Or TUNA Mirror
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
python -m python
From PyPI:
pydns-scanner
From source:
python -m python
This will launch the interactive TUI where you can configure:
Create a text file with one CIDR range per line:
# Comments start with #
1.1.1.0/24
8.8.8.0/24
178.22.122.0/24
185.51.200.0/22
Launch the application:
python dnsscanner_tui.py
Configure scan parameters:
google.com)Start scanning:
View results:
Save results:
results/TIMESTAMP.csvc or click "💾 Save Results" to save manuallyDuring an active scan:
Logging is disabled by default to keep the interface clean and avoid unnecessary disk writes.
To enable logging, edit dnsscanner_tui.py:
# Configure logging (disabled by default)
logger.remove() # Remove default handler to disable logging
# Uncomment the line below to enable file logging
logger.add(
"logs/dnsscanner_{time}.log",
rotation="50 MB",
compression="zip",
level="DEBUG",
)
When enabled:
logs/dnsscanner_TIMESTAMP.logAdjust based on your system and network:
The scanner supports parallel Slipstream proxy testing with automatic download:
# In __init__ method
self.slipstream_max_concurrent = 5 # Max parallel proxy tests
self.slipstream_base_port = 10800 # Base port (uses 10800, 10801, 10802)
Auto-Download Features:
.partial files)slipstream-client.exe)DNS queries timeout after 2 seconds:
# In _test_dns method
resolver = aiodns.DNSResolver(nameservers=[ip], timeout=2.0, tries=1)
Results are saved in CSV format (results/TIMESTAMP.csv). Columns adapt to which tests are enabled:
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
Optional columns (Proxy Test, Security, EDNS0) are included only when the corresponding test is enabled in settings.
The scanner considers a server as "working DNS" if:
This approach catches more working DNS servers than tools that only accept successful responses.
When enabled, queries use random prefixes:
original: google.com
random: a1b2c3d4.google.com
Use case: Bypass cached DNS responses
Requirement: Target domain should have wildcard 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
_stream_ips_from_file.partial files - just run again to resumeslipstream-client/windows/, etc.)slipstream-client.exe (auto-detected)chmod +x)logs/ directoryDefault: Disabled - No logs are created to keep your system clean.
To Enable Logging:
python/dnsscanner_tui.pylogger.add() sectionlogs/dnsscanner_TIMESTAMP.logLog Levels:
IPv4:
IPv6:
# 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
Contributions are welcome! Please feel free to submit pull requests or open issues.
git clone https://github.com/xullexer/PYDNS-Scanner.git
cd PYDNS-Scanner/python
pip install -r requirements.txt
python dnsscanner_tui.py
This project is licensed under the MIT License.
Tested performance on various systems:
Results vary based on network speed, concurrency settings, and system resources.
secrets.SystemRandom)If you find this project useful, consider supporting its development:
Bitcoin (BTC)
bc1qpya0kc2uh0mc08c7nuzrqkpsqjr36mrwscgpxr
Solana (SOL)
J1XzZfizQ6mgYiyxpLGWU52kHBF1hm2Tb9AZ5FaRj8tH
Ethereum (ETH)
0x26D9924B88e71b5908d957EA4c74C66989c253cb
Binance Smart Chain (BNB/BSC)
0x26D9924B88e71b5908d957EA4c74C66989c253cb
Tron (TRX)
TYBZFr8WUsjgfrXrqmrdF5EXPXo7QdimA8
Ethereum Base
0x26D9924B88e71b5908d957EA4c74C66989c253cb
TON (Telegram Open Network)
UQBcI_ZZGQq3fcNzTkL-zszgFR5HpRDLFHYRZffizriiScxJ
Happy Scanning! 🚀
| Platform | Path | Description |
|---|
| Linux x86_64 | slipstream-client/linux/slipstream-client-linux-amd64 | Linux x86_64 binary |
| Linux ARM64 | slipstream-client/linux/slipstream-client-linux-arm64 | Linux ARM64 binary (Raspberry Pi, ARM servers) |
| Android/Termux | slipstream-client/android/slipstream-client-linux-arm64 | Android ARM64 (Termux compatible) |
| Windows | slipstream-client/windows/slipstream-client-windows-amd64.exe | Windows x86_64 executable |
| 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 |
| Platform | Path | Description |
|---|
| Linux x86_64 | slipnet-client/linux/slipnet-linux-amd64 | Linux x86_64 binary |
| Linux ARM64 | slipnet-client/linux/slipnet-linux-arm64 | Linux ARM64 binary (Raspberry Pi, ARM servers) |
| Windows | slipnet-client/windows/slipnet-windows-amd64.exe | Windows x86_64 executable |
| 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 |
| Key | When | Action |
|---|
s | Config screen | Start scan |
q | Anytime | Quit application |
c | While scanning | Save results |
p | While scanning | Pause scan |
r | When paused | Resume scan |
x | When paused | Shuffle remaining IPs |