Torna agli aggiornamenti
New releaseAug 22, 2026

Packet-Sniffer v4.0.0

Uno strumento per lo sniffing di pacchetti di rete sviluppato in Python 3.

Condividi

Packet Sniffer

CI Python Version OS License

Un monitor del traffico di rete per GNU/Linux. I frame vengono catturati da un'interfaccia di rete tramite un raw socket, decodificati livello per livello con la libreria NETProtocols e visualizzati a schermo man mano che arrivano:

[>] 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

La decodifica tiene conto delle opzioni (l'IHL di IPv4 e il data offset di TCP vengono rispettati), i frame malformati o troncati vengono diagnosticati invece di far crashare la cattura, e i protocolli sconosciuti terminano la catena di decodifica in modo pulito: la cattura sopravvive a qualunque cosa la rete trasmetta.

Installazione

pipx install "git+https://github.com/EONRaider/Packet-Sniffer.git"

(Oppure uv tool install con lo stesso URL. L'applicazione non è pubblicata su PyPI con questo nome: quel debutto è riservato al suo prossimo cambio di nome.)

Oppure eseguilo da un clone con uv:

git clone https://github.com/EONRaider/Packet-Sniffer.git
cd Packet-Sniffer
uv sync

Utilizzo

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

La cattura richiede un raw socket, che su Linux significa essere root:

sudo packet-sniffer -i eth0

...oppure concedere all'interprete la capacità CAP_NET_RAW. Da un clone, eseguilo come sudo .venv/bin/python -m packet_sniffer.

Come funziona

capture.py genera frame raw da un socket AF_PACKET; decoder.py percorre la catena di protocolli di ogni frame (Ethernet → ARP / IPv4 / IPv6 → ICMP / TCP / UDP) fino a un DecodedFrame immutabile; i renderer in output.py eseguono il dispatch in base ai tipi di layer decodificati. La panoramica completa — incluso il motivo per cui l'utilizzo di memoria rimane costante durante catture lunghe e come aggiungere un renderer — si trova in ARCHITECTURE.md.

Tutto tranne il raw socket funziona su qualsiasi sistema operativo, quindi la suite di test (decodifica e rendering su frame registrati) non richiede né root né Linux:

uv run pytest

Roadmap

  • Filtri BPF (filtri di cattura lato kernel)
  • Output di file pcap/pcapng e input di replay da pcap
  • Output JSON/NDJSON da passare in pipe ad altri strumenti
  • Timestamp del kernel (SO_TIMESTAMPNS)
  • Un nuovo nome: restate sintonizzati

Disclaimer legale

L'uso del codice contenuto in questo repository, in parte o nella sua interezza, per colpire obiettivi senza previo consenso reciproco è illegale. È responsabilità dell'utente finale rispettare tutte le leggi locali, statali e federali applicabili.

Gli sviluppatori non si assumono alcuna responsabilità e non rispondono di usi impropri o danni causati da qualsiasi codice contenuto in questo repository, nell'eventualità che, accidentalmente o meno, venga utilizzato da un agente di minaccia o da un'entità non autorizzata come mezzo per compromettere la sicurezza, la privacy, la riservatezza, l'integrità e/o la disponibilità di sistemi e delle risorse a essi associati. In questo contesto, il termine "compromissione" è d'ora in poi inteso come lo sfruttamento di vulnerabilità note o sconosciute presenti in detti sistemi, inclusa, ma non limitata a, l'implementazione di controlli di sicurezza, abilitati da esseri umani o elettronicamente.

L'uso di questo codice è solo approvato dagli sviluppatori in circostanze direttamente correlate ad ambienti educativi o incarichi autorizzati di penetration testing il cui scopo dichiarato è trovare e mitigare le vulnerabilità nei sistemi, limitando la loro esposizione a compromissioni ed exploit impiegati da agenti malintenzionati come definito nei rispettivi modelli di minaccia.

Licenza

AGPL-3.0

Categorie