
netwatch v0.28.2
Diagnósticos de rede em tempo real no seu terminal. Um comando, zero configuração, visibilidade instantânea.
NetWatch
Veja o que sua rede realmente está fazendo — ao vivo, no seu terminal.
Um monitor de rede que lê tráfego criptografado, nomeia o processo por trás de cada conexão e detecta malware fazendo contato com o servidor. Um único binário. Zero configuração.
Uma visita rápida pela TUI ao vivo — o painel, o programa por trás de cada socket, inspeção profunda de pacotes, o mapa de rede e com o que cada programa fala.
A maioria das ferramentas de rede responde a uma pergunta — "o que está usando minha largura de banda?" — e para. A NetWatch continua. Ela decodifica os protocolos na rede, diz qual programa abriu cada conexão e observa os padrões que significam problemas — uma varredura de portas, malware em beacon para um servidor de comando, dados escapando por DNS. Quando algo parece errado, uma tecla congela um pacote portátil de evidências que você pode anexar a um relatório de bug.
Pense nele como um único binário de configuração zero que faz o trabalho de um medidor de largura de banda, a visão de triagem do Wireshark e um detector leve de intrusão — sem sair do terminal.
Ele se adapta à pergunta que você está fazendo. netwatch --lite é uma tela 80×24 para "o que está usando minha rede agora?"; a visão completa de dez abas está lá quando a resposta é "algo que preciso investigar" — a uma tecla de distância, compartilhando a mesma captura ao vivo.
Feito para defensores de blue team, respondedores de incidentes, SREs e entusiastas de homelab que precisam ver o que está acontecendo agora — não analisar um arquivo de captura uma hora depois.
650+ testes · com sandbox Landlock (Linux) · analisa tráfego hostil com segurança
E a parte que nenhuma outra ferramenta de terminal faz: a NetWatch aprende com quem cada programa na máquina fala, transforma essa linha de base observada em uma política com uma tecla e avisa no momento em que um programa começa a falar com algo novo.
Observe → promova → alerte. A linha de base vira uma política com uma tecla; o próximo destino novo chega como drift.
Por que NetWatch?
- 🔓 Leia o tráfego criptografado que você controla — aponte o
SSLKEYLOGFILEde um navegador ou aplicativo para a NetWatch e veja o texto puro das sessões TLS 1.3 sendo decodificado ao vivo, da mesma forma que o Wireshark faz. Sem proxy, sem certificados, nada no meio. - 🛰️ Aprenda com o que cada programa fala e depois seja avisado quando isso mudar — a NetWatch observa quais destinos cada processo alcança (hostname do ClientHello, sistema autônomo, porta), e uma tecla promove essa linha de base observada a uma política de egresso. A partir daí, ela avisa quando um programa começa a falar com algo novo. Essa é a frase que uma regra de firewall não consegue expressar:
curlcostumava alcançar apenasapi.github.com, e hoje alcançou outra coisa. Apenas observação — nunca bloqueia. - 🧬 Identifique o software por trás de uma conexão — o JA4 transforma cada handshake TLS/QUIC em uma impressão digital estável, para que você reconheça um cliente específico — ou um malware específico — mesmo com o tráfego criptografado, do mesmo jeito que você reconheceria um navegador pelo user-agent. Faça pivot em uma impressão digital para encontrar todos os outros fluxos do mesmo software.
- 🚨 Pegue malware fazendo contato com o servidor — a detecção integrada de beaconing C2 (check-ins regulares com baixo jitter), varreduras de portas e tunelamento DNS roda em segundo plano com zero configuração. Um alerta crítico congela automaticamente o gravador para que a evidência já esteja salva quando você olhar.
- ⚙️ Dê nome ao processo por trás de cada conexão — mapeia cada socket para o programa que o abriu a partir de
ss/lsof, com uma sonda eBPF kprobe opcional em nível de kernel (Linux, recursoebpf) que também captura fluxos de curta duração que a sondagem pode perder. Funciona em qualquer lugar; a kprobe é um aprimoramento, não um requisito. - 📡 Decodifique os protocolos, não apenas as portas — parser L7 real de TLS, QUIC, HTTP e DNS (além de uma verificação de banner/versão SSH) e mais uma dezena, com rastreamento de stream por fluxo e medição de tempo de handshake — para que você veja
api.github.come a impressão digital JA4, não apenas "porta 443". - 🎥 Congele as evidências — arme um gravador contínuo e congele qualquer incidente em um pacote portátil: os pacotes mais as conexões, DNS, saúde e alertas que os explicam. Feito para relatórios de bug e post-mortems.
- 🛡️ Seguro por design — após a configuração, a NetWatch reduz seus privilégios e se limita a uma allow-list de sistema de arquivos Landlock (Linux). Uma ferramenta que analisa tráfego hostil não pode ler suas chaves SSH, perfis de navegador ou
/etc/shadow. - 🪟 Reduz para uma única tela — o
--literesponde "o que está usando minha rede, e minha conexão está OK?" em uma única tela 80×24 com seis teclas, cabendo em uma sessão SSH para um Pi ou em uma divisão do tmux. Uma tecla escala para a visão forense completa com os coletores já aquecidos.
Sem arquivos de configuração. Sem configuração. Sem flags necessárias.
Instalação
brew install netwatch # macOS / Linux
nix-shell -p netwatch # NixOS / Nix
paru -S netwatch-tui-bin # Arch (prebuilt; netwatch-tui builds from source)
scoop install netwatch # Windows
cargo install netwatch-tui # anywhere with Rust
Ou baixe um binário pré-compilado em Releases.
Os pacotes Nix, Arch e Scoop são mantidos por empacotadores da comunidade — obrigado. Relate problemas de empacotamento com eles; registre bugs da NetWatch aqui. Se um pacote ficar atrás de um lançamento, a página do Repology mostra isso.
Todas as plataformas & compilação a partir do código-fonte
| Plataforma | Download |
|---|---|
| Linux (x86_64, Debian/Ubuntu) | netwatch-linux-x86_64.tar.gz |
| Linux (aarch64, Debian/Ubuntu) | netwatch-linux-aarch64.tar.gz |
| Linux (x86_64, estático — Arch/Fedora/Alpine/qualquer distro) | netwatch-linux-x86_64-static.tar.gz |
| Linux (aarch64, estático — Arch/Fedora/Alpine/qualquer distro) | netwatch-linux-aarch64-static.tar.gz |
| macOS (Intel) | netwatch-macos-x86_64.tar.gz |
| macOS (Apple Silicon) | netwatch-macos-aarch64.tar.gz |
As compilações Linux -static incluem libpcap e não têm dependências de runtime — use-as no Arch, Fedora, Alpine ou qualquer distro onde as compilações padrão informem libpcap.so.0.8: cannot open shared object file.
A partir do código-fonte:
git clone https://github.com/matthart1983/netwatch.git && cd netwatch
cargo build --release
Pré-requisitos: Rust 1.70+, libpcap (sudo apt install libpcap-dev no Linux, incluída no macOS).
Início rápido
netwatch # interface stats, connections, config — no privileges needed
sudo netwatch # full mode — adds live packet capture + health probes
É isso. Alterne as abas com 1–9, pressione ? para ajuda, q para sair. A Dashboard já é útil em cinco segundos; tudo abaixo está lá quando você precisar se aprofundar.
Linux sem
sudo: conceda as capacidades de captura uma vez e execute como seu usuário normal —sudo setcap 'cap_net_raw,cap_bpf,cap_perfmon+eip' "$(which netwatch)". Execute novamente após cada atualização (detalhes).
Veja a descriptografia de TLS em 60 segundos
A forma mais rápida de entender o que é a NetWatch — veja-a ler o texto puro de uma sessão TLS 1.3 que você controla:
sudo netwatch # 1. launch, then open the Packets tab (4)
SSLKEYLOGFILE=/tmp/sslkeylog.txt curl https://example.com # 2. any client that exports its keys
# 3. filter the Packets tab with: decrypted:true
Os dados de aplicação descriptografados são renderizados inline. Uma falha no keylog nunca quebra a captura — esse registro apenas permanece opaco. (SSLKEYLOGFILE é o mesmo mecanismo que o Wireshark usa; ele só funciona para tráfego que você controla, nunca para tráfego de terceiros ou malware).
Lendo o texto puro de uma sessão TLS 1.3 ao vivo — descriptografada direto no terminal. Sem proxy, sem man-in-the-middle.
Veja a detecção de drift de egresso em 60 segundos
O ciclo da demonstração acima, em três comandos:
sudo netwatch # 1. launch and open the Egress tab (0). Leave it a minute
# while it learns; each process grows a list of destinations
# with hostnames, autonomous systems and ports
# 2. put the cursor on a process and press Enter — its observed
# baseline becomes a rule in egress-policy.toml
curl https://example.org # 3. same program, somewhere it has never been
O novo destino chega com um veredito ✗ drift e um alerta. Nada foi bloqueado — o objetivo é que você foi avisado.
Os vereditos são deliberadamente não binários:
✓ sni / ✓ ip | Correspondeu a um hostname ou endereço declarado — preciso |
~ asn | Correspondeu apenas por sistema autônomo — isso admite tudo o que esse AS opera, o que para um hiperscaler é efetivamente ilimitado |
? ech | Encrypted ClientHello: o nome está oculto por design, então isso é "não é possível julgar", não "ruim" |
✗ drift | Fora da allow-list |
— no rule | Este programa nunca foi declarado — nada foi verificado |
✗ undeclared | Sem regra, com strict = true — a política afirma ser completa, então a ausência é o achado |
As regras aceitam hostnames exatos, *.wildcards, sistemas autônomos, blocos CIDR (10.0.0.0/8) e portas. strict = true é o que transforma o linter de "me avise quando meu software declarado se comportar mal" em "me avise quando algo que nunca declarei começar a falar" — que é o formato de um comprometimento real.
O que você obtém
Dez abas, alternadas com 1–9 e 0:
| # | Tab | O que mostra |
|---|---|---|
| 1 | Dashboard | Interfaces, gráfico de largura de banda, principais conexões, saúde do gateway/DNS, mapa de calor de latência. Útil em 5 segundos. |
| 2 | Connections | Cada socket com seu processo + PID, protocolo, estado, GeoIP e sparklines de latência. |
| 3 | Interfaces | IPv4/IPv6 por interface, MAC, MTU, RX/TX, erros, descartes. |
| 4 | Packets | Captura ao vivo com decodificação L7 real, descriptografia TLS 1.3, JA4, rastreamento de stream por fluxo, filtros, exportação PCAP. |
| 5 | Stats | Divisão de protocolos por bytes + histograma de tempo de handshake TCP. |
| 6 | Topology | Mapa ASCII de máquina → gateway → DNS → principais hosts, com traceroute. |
| 7 | Timeline | Linha do tempo de conexões codificada por cores conforme o estado TCP; alertas de segurança chegam aqui. |
| 8 | Processes | Ranking de largura de banda por processo com RX/TX ao vivo e contagens de conexões. |
| 9 | Insights | (opt-in) envia um snapshot para um LLM local/cloud para análise em linguagem natural. |
| 0 | Egress | Aprende com o que cada processo fala (hostname/AS/porta), promove essa linha de base a uma política com uma tecla e depois alerta sobre drift. Apenas observação, nunca bloqueia. |
A aba Packets é onde a forense vive — decodificação profunda de protocolos, descriptografia TLS 1.3 ao vivo, caça a ameaças com JA4, filtros de exibição no estilo Wireshark e captura de incidentes. Veja a referência completa de recursos →
Visão Lite
Dez abas são um instrumento de operador. Quando a pergunta é apenas "o que está usando minha rede, e minha conexão está OK?" — uma máquina, uma sessão SSH para um Pi, uma divisão do tmux — existe o --lite:
netwatch --lite # one screen, fits 80×24
Uma tela, seis teclas. Throughput ao vivo, alcance e quem está falando — expanda qualquer linha no lugar, filtre enquanto digita.
Tudo em uma única tela: gráficos de throughput ao vivo, alcance de gateway/DNS/internet e os principais comunicadores por processo e host. Seis teclas — q sair, p pausar, / filtrar, ↵ expandir um comunicador, L voltar para a visão completa, ? ajuda.
Pressione L em qualquer uma das visões para alternar. Ambas compartilham os mesmos coletores, então escalar de "algo parece errado" para a visão forense completa de dez abas custa uma tecla — sem reiniciar, sem perder histórico, com a captura ainda rodando.
Aprofundamentos
| Guia | O que contém |
|---|---|
| Referência de recursos | Cada atalho de teclado, a linguagem de filtro de exibição, a lista de decodificadores de protocolo, temas e opções de configuração. |
| Descriptografia TLS 1.3 | Como a descriptografia via SSLKEYLOGFILE funciona, suites de cifra suportadas e o que ela pode e não pode ler. |
| Caça a ameaças com JA4 | Identificação por impressão digital de clientes e pivoteamento entre fluxos. |
| Segurança e a sandbox Landlock | O modelo de ameaças, a remoção de capacidades e a allow-list de sistema de arquivos. |
| Linting de política de egresso | O modelo observar → promover → alertar, a linguagem de regras, o modo strict e o esquema de exportação NDJSON. |
| Flight Recorder | Armar, congelar e o conteúdo de um pacote de incidente. |
| AI Insights | Análise opcional por LLM local/cloud (desativada por padrão). |
Como funciona
Raw bytes → Ethernet → IPv4/IPv6/ARP → TCP/UDP/ICMP → L7 decoders
↓
Per-flow stream tracking · Handshake timing
TLS 1.3 decryption · JA4 · Threat detection
| Coletor | macOS | Linux |
|---|---|---|
| Conexões | lsof + PKTAP | /proc/net/tcp + eBPF kprobe |
| Pacotes | libpcap (BPF) | libpcap |
| Atribuição de processo | PKTAP | lsof/ss polling, com overlay opcional de eBPF kprobe |
Tudo degrada graciosamente: recursos que precisam de privilégios elevados mostram uma mensagem clara e recuam, nunca travam. As notas completas de arquitetura estão em WIKI.md.
Relacionados
Ferramentas irmãs: SysWatch (sistema) e DiskWatch (disco) — mesmo visual, superfície diferente. ESSH — um cliente SSH em Rust puro com a mesma estética de TUI; conecta onde a NetWatch observa.
NetWatch Cloud — monitoramento de frota hospedado para os servidores em que você executa a NetWatch. Um agente Rust pequeno em cada host Linux, um painel em tempo real e alertas por e-mail + Slack sobre latência, perda de pacotes ou hosts offline. Gratuito enquanto crescemos. O agente, o SDK e o dashboard são MIT; o backend hospedado é proprietário.
Agradecimentos
Empacotadores. A NetWatch está no homebrew-core, no nixpkgs, no AUR e no bucket principal do Scoop — e eu não empacotei nada disso. Cada um desses pacotes foi feito por alguém que achou a ferramenta útil, fez o trabalho sem ser pedido e o mantém atualizado desde então. A entrada do Scoop geralmente acompanhou um lançamento em poucas horas após a tag.
| Dominiquini | netwatch-tui no AUR, desde março de 2026 |
| kemelzaidan | netwatch-tui-bin no AUR |
| tomasrivera | netwatch no nixpkgs |
| scillidan | netwatch no bucket principal do Scoop, desde v0.15.3 |
| Mantenedores do Homebrew | por levar a fórmula para o core, e o bot que acompanhou todos os lançamentos desde então |
Empacotar é um trabalho ingrato que só é notado quando quebra. Se você instalar a NetWatch por um destes meios, agradeça a eles, não a mim.
Colaboradores. @lamchau, @fdncred e @PeteE enviaram patches. Obrigado — um pull request de um desconhecido é a melhor coisa que acontece a um projeto como este.
E a todos que abriram uma issue com uma reprodução real, discutiram uma decisão de design ou me disseram que a saída estava errada no seu terminal: esse é o ciclo de feedback sobre o qual isto é construído.
Contribuindo
Dúvidas, ideias e relatos de bugs são bem-vindos em GitHub Discussions e Issues. Veja CONTRIBUTING.md para convenções de código e WIKI.md para o guia de arquitetura.
Licença
MIT