
Um moderno e de alto desempenho scanner de DNS com uma bela Interface de Usuário no Terminal (TUI) construída com Textual. Esta ferramenta pode escanear milhões de endereços IP para encontrar servidores DNS funcionais com testes opcionais de proxy Slipstream e download automático de cliente multiplataforma.
O scanner agora escaneia do início e do fim de cada faixa IP simultaneamente em múltiplas faixas, combinado com embaralhamento aleatório — desempenho mais rápido e maior chance de encontrar servidores DNS funcionais em comparação com varredura linear.
Todos os tipos DNS (A, AAAA, MX, TXT, NS) são automaticamente testados e pontuados por servidor — mesmo sistema de pontuação que o scanner SlipNet.
Parâmetros de varredura totalmente personalizáveis:
Varra com um valor de MTU especificado para ajuste avançado de rede.
google.com, resultado mostrado na tabelatextual>=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)
### Opcional
- **Slipstream Client** — Para funcionalidade de teste de proxy (5 testes simultâneos)
- **Download Automático**: A aplicação detecta automaticamente a sua plataforma e baixa o cliente correto
- **Detecção Inteligente**: Detecta instalações existentes (incluindo nomes de ficheiros legados)
- **Suporte a Retoma**: Downloads parciais são salvos e podem ser retomados ao tentar novamente
- Plataformas suportadas:
- 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`
- Download manual disponível em: [lançamentos slipstream-rust-plus-deploy](https://github.com/Fox-Fig/slipstream-rust-plus-deploy/releases/latest)
### 📦 Clientes Slipstream Incluídos
Binários do cliente Slipstream pré-compilados (do mais rápido [Fox-Fig/slipstream-rust-plus-deploy](https://github.com/Fox-Fig/slipstream-rust-plus-deploy)) estão incluídos na pasta `slipstream-client/` para todas as plataformas:
| Plataforma | Caminho | Descrição |
|----------|------|-------------|
| **Linux x86_64** | `slipstream-client/linux/slipstream-client-linux-amd64` | Binário Linux x86_64 |
| **Linux ARM64** | `slipstream-client/linux/slipstream-client-linux-arm64` | Binário Linux ARM64 (Raspberry Pi, servidores ARM) |
| **Android/Termux** | `slipstream-client/android/slipstream-client-linux-arm64` | Android ARM64 (compatível com Termux) |
| **Windows** | `slipstream-client/windows/slipstream-client-windows-amd64.exe` | Executável 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 |
> **⚠️ Nota para Windows:** O cliente Windows requer DLLs OpenSSL (`libcrypto-3-x64.dll` e `libssl-3-x64.dll`) que estão incluídas na pasta `slipstream-client/windows/`. Ao usar o download automático, essas DLLs são baixadas automaticamente junto com o executável Windows.
#### 📥 Arquivos All-in-One
Para conveniência, arquivos compactados contendo binários de todas as plataformas estão disponíveis:
- **`slipstream-client/slipstream-client-all-platforms.tar.gz`** — Melhor compressão (recomendado)
- **`slipstream-client/slipstream-client-all-platforms.zip`** — Formato amigável para Windows
Esses arquivos incluem clientes Linux, Windows e macOS em um único download.
### Opcional
- **SlipNet Client** — Para teste de túnel SlipNet (DNSTT / NoiseDNS)
- **Download Automático**: A aplicação detecta automaticamente a sua plataforma e baixa o cliente SlipNet correto
- **Detecção Inteligente**: Detecta instalações existentes
- **Suporte a Retoma**: Downloads parciais são salvos e podem ser retomados ao tentar novamente
- Plataformas suportadas:
- 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`
- Download manual disponível em: [lançamentos anonvector](https://github.com/anonvector/SlipNet/releases)
### 📦 Clientes SlipNet Incluídos
Binários do cliente SlipNet pré-compilados (por [anonvector](https://github.com/anonvector/SlipNet/releases)) estão incluídos na pasta `slipnet-client/` para todas as plataformas:
| Plataforma | Caminho | Descrição |
|----------|------|-------------|
| **Linux x86_64** | `slipnet-client/linux/slipnet-linux-amd64` | Binário Linux x86_64 |
| **Linux ARM64** | `slipnet-client/linux/slipnet-linux-arm64` | Binário Linux ARM64 (Raspberry Pi, servidores ARM) |
| **Windows** | `slipnet-client/windows/slipnet-windows-amd64.exe` | Executável 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 |
## 🚀 Instalação
### Método 1: Instalar a partir do PyPI (Recomendado)
A maneira mais fácil de instalar o PYDNS Scanner:
#### Usando pip```bash
pip install pydns-scanner
pip install pydns-scanner[full]
#### Usando uv (Mais rápido)```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
> **Nota:** No Android/Termux, os pacotes opcionais de extensão C (`google-re2`, `orjson`, `pyperclip`) são
> automaticamente ignorados — o scanner recorre aos equivalentes da stdlib sem intervenção manual.
#### Usando Mirror (Para Usuários com Acesso Limitado ao 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
---
### Método 2: Executar a partir do Código Fonte (Manual)
Se você deseja executar o código diretamente do repositório:
#### Passo 1: Clonar o Repositório```bash
git clone https://github.com/xullexer/PYDNS-Scanner.git
cd PYDNS-Scanner
Usando uv (Recomendado - Rápido!)```bash uv pip install -r requirements.txt
**Usando pip**```bash
pip install -r requirements.txt
Usando Mirror (Para Usuários com Acesso Limitado ao 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
#### Passo 3: Executar a Aplicação```bash
python -m python
A partir do PyPI:```bash pydns-scanner
**Da fonte:**```bash
python -m python
Isto irá lançar a TUI interativa onde pode configurar:
Crie um ficheiro de texto com um intervalo CIDR por linha:```
1.1.1.0/24 8.8.8.0/24 178.22.122.0/24 185.51.200.0/22
### Exemplo de Fluxo de Trabalho
1. **Inicie a aplicação**: ```bash
python dnsscanner_tui.py
Configurar parâmetros de varredura:
google.com)Iniciar varredura:
Visualizar resultados:
Salvar resultados:
results/TIMESTAMP.csvc ou clique em "💾 Save Results" para salvar manualmenteDurante uma varredura ativa:
O logging está desabilitado por padrão para manter a interface limpa e evitar escritas desnecessárias no disco.
Para habilitar o logging, edite 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", )
Quando ativado:
- Os logs são salvos em `logs/dnsscanner_TIMESTAMP.log`
- Rotação automática aos 50 MB
- Comprimido automaticamente (zip)
- Inclui detalhes de nível DEBUG
### Configurações de Concorrência
Ajuste com base no seu sistema e rede:
- **Baixa (50-100)**: Conservadora, adequada para sistemas mais lentos
- **Média (100-300)**: Desempenho equilibrado
- **Alta (300-500)**: Escaneamento rápido, requer bom hardware
- **Muito Alta (500+)**: Velocidade máxima, pode atingir limites de recursos
### Teste Slipstream
O scanner suporta teste de proxy Slipstream paralelo com download automático:```python
# In __init__ method
self.slipstream_max_concurrent = 5 # Max parallel proxy tests
self.slipstream_base_port = 10800 # Base port (uses 10800, 10801, 10802)
Recursos de Download Automático:
.partial)slipstream-client.exe)Consultas DNS expiram após 2 segundos:```python
resolver = aiodns.DNSResolver(nameservers=[ip], timeout=2.0, tries=1)
## 📊 Formato de Saída
Resultados são salvos em **formato CSV** (`results/TIMESTAMP.csv`). As colunas se adaptam a quais testes estão habilitados:```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
Colunas opcionais (Proxy Test, Security, EDNS0) são incluídas apenas quando o teste correspondente está ativado nas configurações.
O scanner considera um servidor como "DNS funcional" se:
Essa abordagem captura mais servidores DNS funcionais do que ferramentas que apenas aceitam respostas bem-sucedidas.
Quando ativado, as consultas usam prefixos aleatórios:``` original: google.com random: a1b2c3d4.google.com
**Caso de uso**: Contornar respostas DNS em cache
**Requisito**: O domínio alvo deve ter DNS curinga (`*.example.com`)
## 📂 Estrutura do Projeto```
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
### Erro "Arquivo não encontrado"
- Certifique-se de que o caminho do arquivo CIDR está correto
- Use caminho absoluto ou caminho relativo a partir da localização do script
- Use o navegador de arquivos integrado (botão 📂 Procurar)
### Varredura lenta
- Reduza o valor de concorrência
- Verifique a largura de banda da rede
- Verifique as configurações de tempo limite do DNS
### Alto uso de memória
- O scanner usa streaming para minimizar o uso de memória
- Se os problemas persistirem, reduza o tamanho do bloco em `_stream_ips_from_file`
### Falha no download do Slipstream
- **Problemas de rede**: O aplicativo tenta automaticamente até 5 vezes com backoff exponencial
- **Retomar**: Downloads parciais são salvos como arquivos `.partial` - basta executar novamente para retomar
- **Download manual**: Faça o download em [slipstream-rust-plus-deploy releases](https://github.com/Fox-Fig/slipstream-rust-plus-deploy/releases/latest)
- **Verifique os logs**: Ative o registro (consulte a seção Configuração) para obter informações detalhadas de erro
- **Firewall**: Certifique-se de que o acesso ao GitHub está permitido
### Slipstream não detectado
- Verifique se o diretório específico da plataforma existe (`slipstream-client/windows/`, etc.)
- Verifique se o nome do arquivo corresponde (suporta nomes novos e legados)
- Para instalações legadas: Use `slipstream-client.exe` (detectado automaticamente)
- Ative o registro para ver o processo de detecção
### Testes do Slipstream falham
- Verifique se o executável tem as permissões corretas (Linux/macOS: `chmod +x`)
- Verifique se as portas 10800-10802 estão disponíveis
- Revise os logs (se ativados) no diretório `logs/`
- Teste a conectividade com servidores DNS manualmente
## 📝 Registro
**Padrão: Desativado** - Nenhum registro é criado para manter seu sistema limpo.
**Para Ativar o Registro:**
1. Edite `python/dnsscanner_tui.py`
2. Descomente a seção `logger.add()`
3. Logs salvos em `logs/dnsscanner_TIMESTAMP.log`
**Níveis de Log:**
- **DEBUG**: Resultados detalhados de consultas DNS, progresso do download
- **INFO**: Progresso da varredura e estatísticas
- **WARNING**: Problemas não críticos, tentativas de repetição
- **ERROR**: Falhas críticas, erros de download
## 🌍 Encontrando Listas CIDR
### Faixas de IP por País
**IPv4**:
- https://www.ipdeny.com/ipblocks/data/aggregated/
**IPv6**:
- https://www.ipdeny.com/ipv6/ipaddresses/aggregated/
### Exemplo de Uso```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
Contribuições são bem-vindas! Sinta-se à vontade para enviar pull requests ou abrir issues.
git clone https://github.com/xullexer/PYDNS-Scanner.git cd PYDNS-Scanner/python pip install -r requirements.txt python dnsscanner_tui.py
## 📄 Licença
Este projeto está licenciado sob a Licença MIT.
## 👨💻 Autor
- GitHub: [@xullexer](https://github.com/xullexer)
## 🙏 Agradecimentos
- Construído com [Textual](https://github.com/Textualize/textual) por Textualize
- Resolução DNS via [aiodns](https://github.com/saghul/aiodns)
- Inspirado pela necessidade de descoberta eficiente de servidores DNS
- Agradecimentos a [**anonvector**](https://github.com/anonvector) por desenvolver o **SlipNet CLI** — os binários do cliente SlipNet incluídos neste projeto são de seu trabalho
- A base de código Python agora é **modular** e mais fácil de desenvolver e manter
## 📈 Notas de Desempenho
Desempenho testado em vários sistemas:
- **Varredura pequena** (1.000 IPs): ~10-30 segundos
- **Varredura média** (50.000 IPs): ~5-10 minutos
- **Varredura grande** (1M+ IPs): ~1-3 horas
*Os resultados variam com base na velocidade da rede, configurações de concorrência e recursos do sistema.*
## 🔐 Considerações de Segurança
- Usa gerador de números aleatórios criptograficamente seguro (`secrets.SystemRandom`)
- Nenhuma credencial ou dado sensível é registrado
- As consultas DNS são padrão porta UDP/TCP 53
- O teste de proxy Slipstream é opcional e desabilitado por padrão
## 💝 Apoie o Projeto
Se você achar este projeto útil, considere apoiar seu desenvolvimento:
### Doações em Criptomoedas
- **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`
---
**Feliz Varredura! 🚀**
| Tecla | Quando | Ação |
|---|
s | Tela de configuração | Iniciar varredura |
q | A qualquer momento | Sair do aplicativo |
c | Durante a varredura | Salvar resultados |
p | Durante a varredura | Pausar varredura |
r | Quando pausado | Retomar varredura |
x | Quando pausado | Embaralhar IPs restantes |