
Uma ferramenta de Sniffing de Pacotes de Rede desenvolvida em Python 3.
Um monitor de tráfego de rede para GNU/Linux. Quadros são capturados de uma interface de rede com um socket raw, decodificados camada por camada com a biblioteca NETProtocols e renderizados na tela à medida que chegam:
[>] Frame #4 at 15:42:07 (wlan0, 74 bytes)
[+] Ethernet 3c:7c:3f:1a:be:22 -> 9c:1e:95:aa:01:5f
EtherType: IPv4
[+] IPv4 192.168.1.96 -> 142.250.79.78
TTL: 64 | Flags: Don't fragment (DF) | Total Length: 60 | ID: 39754
Protocol: TCP | Checksum: 0x2b51
[+] TCP 51888 -> 443
Flags: 0x002 (SYN) | Seq: 3598801521 | Ack: 0
Window: 64240 | Checksum: 0x2008 | Options: 20 bytes
A decodificação é ciente de opções (o IHL do IPv4 e o data offset do TCP são respeitados), quadros malformados ou truncados são diagnosticados em vez de interromper a captura, e protocolos desconhecidos encerram a cadeia de decodificação graciosamente — a captura sobrevive ao que quer que a rede entregue.
pipx install "git+https://github.com/EONRaider/Packet-Sniffer.git"
(Ou uv tool install com a mesma URL. A aplicação não é publicada no PyPI com este nome — essa estreia está reservada para sua futura renomeação.)
Ou execute a partir de um clone com uv:
git clone https://github.com/EONRaider/Packet-Sniffer.git
cd Packet-Sniffer
uv sync
packet-sniffer [-h] [-i INTERFACE] [-d] [--version]
options:
-i, --interface interface to capture frames from (default: all interfaces)
-d, --data also display each frame's raw payload
Capturar exige um socket raw, o que no Linux significa: ou root:
sudo packet-sniffer -i eth0
...ou conceder ao interpretador a capacidade CAP_NET_RAW. A partir de um clone, execute-o como sudo .venv/bin/python -m packet_sniffer.
capture.py gera quadros brutos a partir de um socket AF_PACKET; decoder.py percorre a cadeia de protocolos de cada quadro (Ethernet → ARP / IPv4 / IPv6 → ICMP / TCP / UDP) até um DecodedFrame imutável; renderizadores em output.py despacham com base nos tipos de camada decodificados. O tour completo — incluindo por que a memória permanece estável durante capturas longas e como adicionar um renderizador — está em ARCHITECTURE.md.
Tudo, exceto o socket raw, roda em qualquer sistema operacional, então a suíte de testes (decodificação e renderização de quadros gravados) não exige root nem Linux:
uv run pytest
SO_TIMESTAMPNS)O uso do código contido neste repositório, seja em parte ou em sua totalidade, para atingir alvos sem consentimento mútuo prévio é ilegal. É responsabilidade do usuário final obedecer a todas as leis locais, estaduais e federais aplicáveis.
Os desenvolvedores não assumem responsabilidade alguma e não se responsabilizam por usos indevidos ou danos causados por qualquer código contido neste repositório na eventualidade de, acidentalmente ou por qualquer outro meio, ele vir a ser utilizado por um agente de ameaça ou entidade não autorizada como forma de comprometer a segurança, privacidade, confidencialidade, integridade e/ou disponibilidade de sistemas e seus recursos associados. Nesse contexto, o termo "comprometimento" passa a ser entendido como o aproveitamento da exploração de vulnerabilidades conhecidas ou desconhecidas presentes nos referidos sistemas, incluindo, mas não se limitando a, a implementação de controles de segurança, habilitados por meios humanos ou eletrônicos.
O uso deste código é somente endossado pelos desenvolvedores nas circunstâncias diretamente relacionadas a ambientes educacionais ou testes de penetração autorizados cujo propósito declarado seja encontrar e mitigar vulnerabilidades em sistemas, limitando sua exposição a comprometimentos e exploits empregados por agentes maliciosos, conforme definido em seus respectivos modelos de ameaça.