network-scanner
Scanner de rede: hosts, portas, SO e relatório HTML com histórico SQLite.
6 testes · 6 passou · 0 falhou · 0 skip
- test_expand_cidr0.00s
- test_expand_single_ip0.00s
- test_guess_os0.00s
- test_socket_scan_detects_open_port0.02s
- test_storage_roundtrip0.00s
- test_html_report_contains_ip0.00s
Entrypoints (CLI)
netscan
Módulos e funções principais
netscan/__init__.py
- —
netscan/cli.py
main()
netscan/report.py
render_html()write_report()
netscan/scanner.py
has_nmap()expand_targets()— Aceita IP único, CIDR (192.168.0.0/24) ou hostname.scan_host_socket()scan_host_nmap()scan_network()— Varre um alvo (IP/CIDR/hostname) e retorna hosts vivos com portas abertas.
netscan/storage.py
connect()save_scan()
Estrutura de arquivos
- LICENSE
- README.md
- netscan/__init__.py
- netscan/cli.py
- netscan/report.py
- netscan/scanner.py
- netscan/storage.py
- network_scanner.egg-info/PKG-INFO
- network_scanner.egg-info/SOURCES.txt
- network_scanner.egg-info/dependency_links.txt
- network_scanner.egg-info/entry_points.txt
- network_scanner.egg-info/requires.txt
- network_scanner.egg-info/top_level.txt
- pyproject.toml
- tests/test_scanner.py
README
# Network Scanner 🛰️
Scanner de rede inteligente que descobre dispositivos, identifica portas abertas, tenta adivinhar o sistema operacional e gera um **relatório HTML** — com armazenamento em **SQLite** para histórico de varreduras.
> ⚠️ Ferramenta educacional. Faça varreduras **apenas em redes que você possui ou tem autorização explícita para testar**. Escanear redes de terceiros sem permissão é ilegal na maioria dos países.
## Recursos
- Descoberta de hosts vivos em IP, **CIDR** (`192.168.0.0/24`) ou hostname
- Varredura de portas concorrente (multithread)
- Dois backends: **nmap** (se instalado) ou **fallback puro em Python (socket)** — funciona sem root e sem nmap
- Captura de **banners** e heurística de detecção de SO
- Histórico persistente em **SQLite**
- **Relatório HTML** autocontido com tema escuro
- Saída bonita no terminal com **Rich**
## Instalação
```bash
git clone https://github.com/Diogo-Damasceno/network-scanner.git
cd network-scanner
pip install -e .
```
## Uso
```bash
# varrer a rede local, portas comuns, gerar HTML
netscan 192.168.1.0/24 --html relatorio.html
# portas específicas ou faixa
netscan 192.168.1.10 -p 22,80,443
netscan 192.168.1.10 -p 1-1024
# forçar o fallback em socket (sem nmap)
netscan 192.168.1.0/24 --no-nmap
# escolher o arquivo de banco
netscan 10.0.0.0/28 --db minhas_varreduras.db
```
## Testes
```bash
pip install -e '.[dev]'
pytest -q
```
## Arquitetura
```
netscan/
├── scanner.py # descoberta + varredura (nmap e socket)
├── storage.py # persistência SQLite
├── report.py # geração de HTML
└── cli.py # interface de linha de comando (Rich)
```
## Licença
MIT
Como rodar na prática (entrada → saída):
$ network-scanner 10.0.0.0/24
HOST 10.0.0.5 up (Linux 5.x) 22/tcp open ssh 80/tcp open http nginx HOST 10.0.0.12 up (Windows 10) 445/tcp open smb