Voltar às atualizações
New releaseAug 22, 2026

Packet-Sniffer v4.0.0

Uma ferramenta de Sniffing de Pacotes de Rede desenvolvida em Python 3.

Compartilhar

Analisador de Pacotes

CI Python Version OS License

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.

Instalação

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

Uso

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.

Como funciona

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

Roadmap

  • Filtragem BPF (filtros de captura no lado do kernel)
  • Saída de arquivos pcap/pcapng e entrada de replay a partir de pcap
  • Saída JSON/NDJSON para canalizar para outras ferramentas
  • Carimbos de tempo do kernel (SO_TIMESTAMPNS)
  • Um novo nome — fique de olho neste espaço

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.

Licença

AGPL-3.0

Categorias