
Ein moderner, leistungsstarker DNS-Scanner mit einer schönen Terminal-Benutzeroberfläche (TUI), erstellt mit Textual. Dieses Tool kann Millionen von IP-Adressen scannen, um funktionierende DNS-Server zu finden, mit optionalem Slipstream-Proxy-Testing und automatischem Multi-Plattform-Client-Download.
Der Scanner scannt nun gleichzeitig vom Anfang und Ende jedes IP-Bereichs über mehrere Bereiche hinweg, kombiniert mit zufälliger Durchmischung — schnellere Leistung und höhere Wahrscheinlichkeit, funktionierende DNS-Server zu finden, im Vergleich zu linearem Scannen.
Alle DNS-Typen (A, AAAA, MX, TXT, NS) werden automatisch pro Server getestet und bewertet — gleiches Bewertungssystem wie der SlipNet-Scanner.
Vollständig anpassbare Scan-Parameter:
Scan mit einem bestimmten MTU-Wert für erweitertes Netzwerk-Tuning.
google.com, Ergebnis in Tabelletextual>=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)
### Optional
- **Slipstream Client** – Für Proxy-Testfunktionalität (5 gleichzeitige Tests)
- **Automatischer Download**: Die Anwendung erkennt automatisch Ihre Plattform und lädt den korrekten Client herunter
- **Intelligente Erkennung**: Erkennt vorhandene Installationen (einschließlich Legacy-Dateinamen)
- **Unterstützung für Fortsetzung**: Teilweise heruntergeladene Dateien werden gespeichert und können bei einem erneuten Versuch fortgesetzt werden
- Unterstützte Plattformen:
- 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`
- Manueller Download verfügbar unter: [slipstream-rust-plus-deploy releases](https://github.com/Fox-Fig/slipstream-rust-plus-deploy/releases/latest)
### 📦 Gebündelte Slipstream Clients
Vorkompilierte Slipstream-Client-Binärdateien (vom schnelleren [Fox-Fig/slipstream-rust-plus-deploy](https://github.com/Fox-Fig/slipstream-rust-plus-deploy)) sind im Ordner `slipstream-client/` für alle Plattformen enthalten:
| Plattform | Pfad | Beschreibung |
|----------|------|-------------|
| **Linux x86_64** | `slipstream-client/linux/slipstream-client-linux-amd64` | Linux x86_64 Binärdatei |
| **Linux ARM64** | `slipstream-client/linux/slipstream-client-linux-arm64` | Linux ARM64 Binärdatei (Raspberry Pi, ARM-Server) |
| **Android/Termux** | `slipstream-client/android/slipstream-client-linux-arm64` | Android ARM64 (Termux-kompatibel) |
| **Windows** | `slipstream-client/windows/slipstream-client-windows-amd64.exe` | Windows x86_64 ausführbare Datei |
| **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-Hinweis:** Der Windows-Client benötigt OpenSSL DLLs (`libcrypto-3-x64.dll` und `libssl-3-x64.dll`), die im Ordner `slipstream-client/windows/` enthalten sind. Bei automatischem Download werden diese DLLs zusammen mit der Windows-Ausführungsdatei automatisch heruntergeladen.
#### 📥 All-in-One-Archive
Der Einfachheit halber stehen komprimierte Archive mit allen Plattform-Binärdateien zur Verfügung:
- **`slipstream-client/slipstream-client-all-platforms.tar.gz`** – Beste Komprimierung (empfohlen)
- **`slipstream-client/slipstream-client-all-platforms.zip`** – Windows-freundliches Format
Diese Archive enthalten Linux-, Windows- und macOS-Clients in einem einzigen Download.
### Optional
- **SlipNet Client** – Für SlipNet (DNSTT / NoiseDNS) Tunnel-Tests
- **Automatischer Download**: Die Anwendung erkennt automatisch Ihre Plattform und lädt den korrekten SlipNet-Client herunter
- **Intelligente Erkennung**: Erkennt vorhandene Installationen
- **Unterstützung für Fortsetzung**: Teilweise heruntergeladene Dateien werden gespeichert und können bei einem erneuten Versuch fortgesetzt werden
- Unterstützte Plattformen:
- 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`
- Manueller Download verfügbar unter: [anonvector releases](https://github.com/anonvector/SlipNet/releases)
### 📦 Gebündelte SlipNet Clients
Vorkompilierte SlipNet-Client-Binärdateien (von [anonvector](https://github.com/anonvector/SlipNet/releases)) sind im Ordner `slipnet-client/` für alle Plattformen enthalten:
| Plattform | Pfad | Beschreibung |
|----------|------|-------------|
| **Linux x86_64** | `slipnet-client/linux/slipnet-linux-amd64` | Linux x86_64 Binärdatei |
| **Linux ARM64** | `slipnet-client/linux/slipnet-linux-arm64` | Linux ARM64 Binärdatei (Raspberry Pi, ARM-Server) |
| **Windows** | `slipnet-client/windows/slipnet-windows-amd64.exe` | Windows x86_64 ausführbare Datei |
| **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 |
## 🚀 Installation
### Methode 1: Installation von PyPI (Empfohlen)
Der einfachste Weg, PYDNS Scanner zu installieren:
#### Mit pip```bash
pip install pydns-scanner
pip install pydns-scanner[full]
#### Verwendung von uv (Schneller)```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
> **Hinweis:** Auf Android/Termux werden die optionalen C-Erweiterungspakete (`google-re2`, `orjson`, `pyperclip`)
> automatisch übersprungen — der Scanner greift ohne manuelles Eingreifen auf stdlib-Äquivalente zurück.
#### Spiegel verwenden (Für Benutzer mit eingeschränktem Zugang zu 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
---
### Methode 2: Aus Quellcode ausführen (Manuell)
Wenn Sie den Code direkt aus dem Repository ausführen möchten:
#### Schritt 1: Repository klonen```bash
git clone https://github.com/xullexer/PYDNS-Scanner.git
cd PYDNS-Scanner
Verwendung von uv (Empfohlen - Schnell!)```bash uv pip install -r requirements.txt
**Verwendung von pip**```bash
pip install -r requirements.txt
Verwendung eines Mirrors (Für Benutzer mit eingeschränktem Zugriff auf 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
#### Schritt 3: Ausführen der Anwendung```bash
python -m python
Von PyPI:```bash pydns-scanner
**Von der Quelle:**```bash
python -m python
Dies startet die interaktive TUI, in der Sie Folgendes konfigurieren können:
Erstellen Sie eine Textdatei mit einem CIDR-Bereich pro Zeile:```
1.1.1.0/24 8.8.8.0/24 178.22.122.0/24 185.51.200.0/22
### Beispiel-Workflow
1. **Starten Sie die Anwendung**: ```bash
python dnsscanner_tui.py
Scanparameter konfigurieren:
google.com)Scan starten:
Ergebnisse anzeigen:
Ergebnisse speichern:
results/TIMESTAMP.csv gespeichertc oder klicke auf "💾 Ergebnisse speichern", um manuell zu speichernWährend eines aktiven Scans:
Die Protokollierung ist standardmäßig deaktiviert, um die Oberfläche sauber zu halten und unnötige Festplattenschreibvorgänge zu vermeiden.
Um die Protokollierung zu aktivieren, bearbeite 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", )
Wenn aktiviert:
- Logs werden unter `logs/dnsscanner_TIMESTAMP.log` gespeichert
- Automatische Rotation bei 50 MB
- Automatisch komprimiert (zip)
- Enthält DEBUG-Level-Details
### Parallelitätseinstellungen
Passen Sie sie basierend auf Ihrem System und Netzwerk an:
- **Niedrig (50-100)**: Konservativ, geeignet für langsamere Systeme
- **Mittel (100-300)**: Ausgewogene Leistung
- **Hoch (300-500)**: Schnelles Scannen, erfordert gute Hardware
- **Sehr hoch (500+)**: Maximale Geschwindigkeit, kann Ressourcengrenzen erreichen
### Slipstream-Tests
Der Scanner unterstützt parallele Slipstream-Proxy-Tests mit automatischem Herunterladen:```python
# 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-Funktionen:
.partial-Dateien)slipstream-client.exe)DNS-Abfragen haben ein Timeout nach 2 Sekunden:```python
resolver = aiodns.DNSResolver(nameservers=[ip], timeout=2.0, tries=1)
## 📊 Ausgabeformat
Ergebnisse werden im **CSV-Format** (`results/TIMESTAMP.csv`) gespeichert. Die Spalten passen sich an, welche Tests aktiviert sind:```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
Optionale Spalten (Proxy Test, Security, EDNS0) sind nur dann enthalten, wenn der entsprechende Test in den Einstellungen aktiviert ist.
Der Scanner betrachtet einen Server als „funktionierenden DNS“, wenn:
Dieser Ansatz erfasst mehr funktionierende DNS-Server als Tools, die nur erfolgreiche Antworten akzeptieren.
Wenn aktiviert, verwenden Abfragen zufällige Präfixe:``` original: google.com random: a1b2c3d4.google.com
**Anwendungsfall**: Umgehung zwischengespeicherter DNS-Antworten
**Voraussetzung**: Die Zieldomain sollte einen Wildcard-DNS-Eintrag haben (`*.example.com`)
## 📂 Projektstruktur```
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
### "Datei nicht gefunden" Fehler
- Stellen Sie sicher, dass der CIDR-Dateipfad korrekt ist
- Verwenden Sie absoluten Pfad oder relativen Pfad relativ zum Skriptspeicherort
- Verwenden Sie den integrierten Dateibrowser (📂 Durchsuchen-Button)
### Langsames Scannen
- Verringern Sie den Gleichzeitigkeitswert
- Überprüfen Sie die Netzwerkbandbreite
- Überprüfen Sie die DNS-Timeout-Einstellungen
### Hoher Speicherverbrauch
- Der Scanner verwendet Streaming, um den Speicher zu minimieren
- Wenn Probleme bestehen bleiben, reduzieren Sie die Chunk-Größe in `_stream_ips_from_file`
### Slipstream-Download schlägt fehl
- **Netzwerkprobleme**: Die App wiederholt automatisch bis zu 5 Mal mit exponentiellem Backoff
- **Fortsetzen**: Teilweise Downloads werden als `.partial`-Dateien gespeichert - führen Sie es einfach erneut aus, um fortzusetzen
- **Manueller Download**: Herunterladen von [slipstream-rust-plus-deploy releases](https://github.com/Fox-Fig/slipstream-rust-plus-deploy/releases/latest)
- **Protokolle prüfen**: Aktivieren Sie die Protokollierung (siehe Abschnitt Konfiguration) für detaillierte Fehlerinformationen
- **Firewall**: Stellen Sie sicher, dass der Zugriff auf GitHub erlaubt ist
### Slipstream nicht erkannt
- Überprüfen Sie, ob das plattformspezifische Verzeichnis existiert (`slipstream-client/windows/` usw.)
- Überprüfen Sie, ob der Dateiname übereinstimmt (unterstützt sowohl neue als auch alte Namen)
- Bei Legacy-Installationen: Verwenden Sie `slipstream-client.exe` (automatisch erkannt)
- Aktivieren Sie die Protokollierung, um den Erkennungsprozess zu sehen
### Slipstream-Tests schlagen fehl
- Überprüfen Sie, ob die ausführbare Datei die richtigen Berechtigungen hat (Linux/macOS: `chmod +x`)
- Überprüfen Sie, ob die Ports 10800-10802 verfügbar sind
- Überprüfen Sie die Protokolle (falls aktiviert) im Verzeichnis `logs/`
- Testen Sie die Konnektivität zu DNS-Servern manuell
## 📝 Protokollierung
**Standard: Deaktiviert** - Es werden keine Protokolle erstellt, um Ihr System sauber zu halten.
**So aktivieren Sie die Protokollierung:**
1. Bearbeiten Sie `python/dnsscanner_tui.py`
2. Kommentieren Sie den Abschnitt `logger.add()` aus
3. Protokolle werden unter `logs/dnsscanner_TIMESTAMP.log` gespeichert
**Protokollstufen:**
- **DEBUG**: Detaillierte DNS-Abfrageergebnisse, Download-Fortschritt
- **INFO**: Scan-Fortschritt und Statistiken
- **WARNING**: Nicht-kritische Probleme, Wiederholungsversuche
- **ERROR**: Kritische Fehler, Download-Fehler
## 🌍 CIDR-Listen finden
### Länder-IP-Bereiche
**IPv4**:
- https://www.ipdeny.com/ipblocks/data/aggregated/
**IPv6**:
- https://www.ipdeny.com/ipv6/ipaddresses/aggregated/
### Anwendungsbeispiel```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
Beiträge sind willkommen! Du kannst gerne Pull-Requests einreichen oder Issues eröffnen.
git clone https://github.com/xullexer/PYDNS-Scanner.git cd PYDNS-Scanner/python pip install -r requirements.txt python dnsscanner_tui.py
## 📄 Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert.
## 👨💻 Autor
- GitHub: [@xullexer](https://github.com/xullexer)
## 🙏 Danksagungen
- Erstellt mit [Textual](https://github.com/Textualize/textual) von Textualize
- DNS-Auflösung über [aiodns](https://github.com/saghul/aiodns)
- Inspiriert durch die Notwendigkeit einer effizienten DNS-Server-Erkennung
- Danke an [**anonvector**](https://github.com/anonvector) für die Entwicklung der **SlipNet CLI** — die in diesem Projekt gebündelten SlipNet-Client-Binärdateien stammen von seiner Arbeit
- Die Python-Codebasis ist jetzt **modular** und einfacher zu entwickeln und zu warten
## 📈 Leistungshinweise
Getestete Leistung auf verschiedenen Systemen:
- **Kleiner Scan** (1.000 IPs): ~10-30 Sekunden
- **Mittlerer Scan** (50.000 IPs): ~5-10 Minuten
- **Großer Scan** (1M+ IPs): ~1-3 Stunden
*Ergebnisse variieren je nach Netzwerkgeschwindigkeit, Parallelitätseinstellungen und Systemressourcen.*
## 🔐 Sicherheitsaspekte
- Verwendet einen kryptografisch sicheren Zufallszahlengenerator (`secrets.SystemRandom`)
- Es werden keine Anmeldeinformationen oder sensiblen Daten protokolliert
- DNS-Anfragen erfolgen über Standard-UDP/TCP-Port 53
- Slipstream-Proxy-Tests sind optional und standardmäßig deaktiviert
## 💝 Unterstützen Sie das Projekt
Wenn Sie dieses Projekt nützlich finden, erwägen Sie, seine Entwicklung zu unterstützen:
### Kryptowährungs-Spenden
- **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`
---
**Viel Spaß beim Scannen! 🚀**
| Taste | Wann | Aktion |
|---|
s | Konfigurationsbildschirm | Scan starten |
q | Jederzeit | Anwendung beenden |
c | Während des Scans | Ergebnisse speichern |
p | Während des Scans | Scan pausieren |
r | Im Pausenzustand | Scan fortsetzen |
x | Im Pausenzustand | Verbleibende IPs mischen |