
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.
RootWire
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.