Torna agli aggiornamenti
New releaseAug 22, 2026

Packet-Sniffer v4.0.0

Sniffer di pacchetti di rete basato su socket grezzi che cattura e disassembla pacchetti TCP/IP dalle interfacce di rete per analisi di sicurezza e uso didattico.

Condividi

RootWire

CI PyPI Python Version OS License

Un monitor del traffico di rete per GNU/Linux — precedentemente noto come Packet-Sniffer. I frame vengono catturati da un'interfaccia di rete tramite un socket raw, decodificati livello per livello con la libreria NETProtocols, e visualizzati in tempo reale, scritti su pcap, o trasmessi come JSON:

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

Il decodificatore copre Ethernet, ARP, IPv4 (opzioni e frammenti), IPv6 inclusi gli header di estensione (un report MLD mostra l'intera catena Hop-by-Hop), ICMPv4/v6, TCP (offset del payload consapevoli delle opzioni) e UDP. I frame malformati o troncati vengono diagnosticati invece di far crashare la cattura, i protocolli sconosciuti terminano la catena con garbo, e un limite di 16 livelli impedisce che stack di header di estensione costruiti ad arte vengano amplificati — la cattura sopravvive a qualunque cosa la rete consegni.

Installazione

pipx install rootwire        # oppure: uv tool install rootwire

Oppure eseguilo da un clone con uv:

git clone https://github.com/EONRaider/RootWire.git
cd RootWire
uv sync

Utilizzo

rootwire [-h] [-i INTERFACE] [-r FILE] [-w FILE] [--json] [-d] [--version]

options:
  -i, --interface   interfaccia da cui catturare i frame (default: tutte le interfacce)
  -r, --read FILE   riproduce i frame da un file pcap classico invece della cattura
                    live (non richiede privilegi)
  -w, --write FILE  scrive anche ogni frame catturato in un file pcap classico
  --json            un oggetto NDJSON per frame su stdout (banner e statistiche
                    restano su stderr): pipe diretto in jq
  -d, --data        mostra anche il payload grezzo di ogni frame (ignorato con --json)

Le statistiche di cattura — frame, byte, frame/s, conteggi di malformati/troncati, totali per protocollo — vengono riportate su stderr al termine della cattura. Alcune combinazioni preferite:

sudo rootwire -i eth0 -w session.pcap   # cattura e conserva le prove
rootwire -r session.pcap                # ispezionalo dopo, senza root
rootwire -r session.pcap --json | jq .  # analisi machine-readable

La cattura live richiede un socket raw, che su Linux significa root (sudo rootwire -i eth0) oppure concedere all'interprete la capacità CAP_NET_RAW. La riproduzione di file con -r non richiede mai privilegi. Da un clone, eseguilo come sudo .venv/bin/python -m rootwire.

Come funziona

capture.py produce frame grezzi da un socket AF_PACKET (oppure pcap.py li riproduce da un file — le due sorgenti sono intercambiabili); decoder.py percorre la catena di protocolli di ogni frame in un DecodedFrame immutabile; le uscite — il renderer a schermo, lo stream NDJSON, lo scrittore pcap, il collettore di statistiche — consumano ogni frame attraverso una piccola interfaccia Output. Il tour completo, incluso il motivo per cui la memoria resta piatta durante catture lunghe e come aggiungere un'uscita, è in ARCHITECTURE.md.

Tutto tranne il socket raw funziona su qualsiasi sistema operativo, quindi la suite di test — che include un corpus di 65 frame di traffico reale catturato riprodotto attraverso l'intera pipeline — non richiede né root né Linux:

uv run pytest

Roadmap

  • Filtri BPF (filtri di cattura lato kernel)
  • Timestamp del kernel (SO_TIMESTAMPNS) e uso del servizio pulito con SIGTERM
  • Rendering della verifica dei checksum (la libreria li calcola già)

Disclaimer legale

L'uso del codice contenuto in questo repository, in parte o nella sua totalità, per colpire target 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 sono responsabili di usi impropri o danni causati da qualsiasi codice contenuto in questo repository, nell'eventualità che, accidentalmente o meno, venga utilizzato da un agente minaccioso 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 loro risorse associate. In questo contesto, il termine "compromissione" è d'ora in poi inteso come lo sfruttamento di vulnerabilità note o sconosciute presenti in detti sistemi, incluse, ma non limitate a, l'implementazione di controlli di sicurezza, abilitati da esseri umani o elettronicamente.

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

Licenza

AGPL-3.0

Categorie