Interface gráfica estilo radar para varredura de redes locais, construída em Python puro. Descobre hosts ativos e mapeia portas abertas em qualquer faixa de IPs definida via notação CIDR.
⚠️ USO ÉTICO: Utilize apenas em redes próprias ou com autorização explícita. Varreduras não autorizadas são ilegais. Este projeto tem fins educacionais.
◈ NETWORK SCANNER
// authorized use only
[ RADAR ANIMADO ]
0 hosts detectados
REDE (CIDR): 192.168.1.0/24
THREADS: 50
☑ Varrer portas comuns
☐ Usar ICMP ping
▶ INICIAR SCAN ■ PARAR
⬇ EXPORTAR RELATÓRIO
- Radar animado — visualização em tempo real dos hosts descobertos, desenhado com Tkinter Canvas
- Host Discovery — detecta IPs ativos via TCP ping (sem necessidade de root) ou ICMP
- Port Scan paralelo — varre 23 portas comuns com ThreadPoolExecutor (até 500 threads)
- Resolução de hostname — rDNS reverso para identificar dispositivos pelo nome
- Detecção automática da rede local ao iniciar
- Exportação de relatório em
.txtcom todos os hosts e portas encontradas - Controle de scan — botão de parada segura com threading.Event
- 100% Python padrão — sem dependências externas
O projeto foi dividido em 7 passos didáticos, claramente comentados no código:
| Passo | Responsabilidade |
|---|---|
| 1 | parse_network() — Converte CIDR em lista de IPs com o módulo ipaddress |
| 2 | tcp_ping() / icmp_ping() — Detecta se um host está ativo |
| 3 | scan_host_ports() — Varre portas de um host específico em paralelo |
| 4 | run_network_scan() — Orquestra as 3 fases do scan completo |
| 5 | RadarCanvas — Widget de radar animado desenhado com Canvas Tkinter |
| 6 | NetworkScannerApp — Janela principal, une todos os componentes |
| 7 | __main__ — Ponto de entrada da aplicação |
- Notação CIDR e módulo
ipaddress - TCP ping como alternativa ao ICMP (sem privilégios de root)
- Diferença entre "connection refused" (host existe) e "timeout" (host ausente)
- rDNS (resolução reversa de hostname)
- Portas e serviços comuns (SSH, HTTP, RDP, MySQL, etc.)
ThreadPoolExecutor+as_completedpara I/O paralelo- Padrão produtor/consumidor com
queue.Queue(thread-safety com a GUI) threading.Eventpara cancelamento seguro de threadssocketpara conexões TCP de baixo nívelsubprocesspara chamar opingnativo do sistema operacionalplatformpara código multiplataforma (Windows/Linux/Mac)
- Canvas com animação via
after()— loop de 20 FPS - Trigonometria (
math.sin,math.cos) para plotar pontos no radar - Layout com
gridepack ttk.Treeviewpara tabela de resultadosScrolledTextpara log em tempo realfiledialogpara exportação de arquivo
Requisitos: Python 3.8+ (Tkinter já vem incluso)
# Clone o repositório
git clone https://github.com/SEU_USUARIO/network-scanner.git
cd network-scanner
# Execute
python network_scanner.pyNenhuma instalação de dependências necessária — usa apenas a biblioteca padrão do Python.
- Abra o programa — ele detecta automaticamente sua rede local (ex:
192.168.1.0/24) - Ajuste o CIDR se necessário
- Configure o número de threads (padrão: 50)
- Escolha se quer varrer portas e/ou usar ICMP
- Clique em ▶ INICIAR SCAN
- Acompanhe os hosts aparecendo no radar e na tabela em tempo real
- Ao finalizar, exporte o relatório com ⬇ EXPORTAR RELATÓRIO
| Porta | Serviço | Porta | Serviço |
|---|---|---|---|
| 21 | FTP | 443 | HTTPS |
| 22 | SSH | 445 | SMB |
| 23 | Telnet | 1433 | MSSQL |
| 25 | SMTP | 3306 | MySQL |
| 53 | DNS | 3389 | RDP |
| 80 | HTTP | 5432 | PostgreSQL |
| 135 | RPC | 5900 | VNC |
| 139 | NetBIOS | 6379 | Redis |
| 143 | IMAP | 8080 | HTTP-Alt |
| ... | ... | 27017 | MongoDB |
network-scanner/
└── network_scanner.py # Arquivo único — ~1100 linhas comentadas
- Python ipaddress module
- Python socket module
- ThreadPoolExecutor docs
- Tkinter Canvas
- OWASP — Network Scanning
Este software é fornecido exclusivamente para fins educacionais e de pesquisa em segurança. O uso em redes sem autorização explícita é ilegal e de responsabilidade exclusiva do usuário.