◈ ProjView
← todos os projetos

network-scanner

Python Defensiva GitHub ↗

Scanner de rede: hosts, portas, SO e relatório HTML com histórico SQLite.

6 testes · 6 passou · 0 falhou · 0 skip

Entrypoints (CLI)

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

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
network-scanner SIM NÃO SIM NÃO Alvo (IP/CIDR/host) Descoberta de hosts (nmap ou socket) Host ativo? Varrer portas + serviços SO detectável? Inferir SO / banner Salvar em SQLite + gerar HTML Relatório de varredura

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