Scapy è una libreria Python che costruisce, invia, cattura e decodifica pacchetti di rete, un livello e un campo alla volta. L’ha scritta nel 2003 il ricercatore di sicurezza Philippe Biondi, e oggi la mantiene il gruppo SecDev insieme a una comunità di collaboratori riunita nel repository GitHub secdev/scapy. Il codice è pubblicato con licenza libera GPL v2. Secondo la pagina del progetto su PyPI, la versione 2.8.0 è uscita il 2 ottobre 2026 e richiede almeno Python 3.7.
A cosa serve Scapy
Per capire il senso di Scapy conviene confrontarlo con uno strumento di rete tradizionale, che svolge un compito stabilito in partenza. Ping invia una richiesta ICMP, Nmap cerca porte aperte. Scapy non prende nessuna di queste decisioni al posto vostro. Mette a disposizione classi Python che rappresentano i protocolli, da Ethernet, IP, TCP, UDP, DNS e ARP fino a diverse centinaia di altri, e il pacchetto si assembla impilando questi livelli con l’operatore di divisione. Ogni campo ha un valore predefinito sensato che si può sostituire, così una sola riga produce un pacchetto perfettamente valido oppure, se si vuole, volutamente malformato.
La documentazione riassume la filosofia del progetto in una frase: Scapy decodifica, non interpreta. Quando arriva una risposta, la libreria restituisce il pacchetto intero e decodificato e lascia all’utente le conclusioni, invece di stampare un verdetto come porta filtrata. Per questo gli autori lo presentano come sostituto di hping, arping o arpspoof e di buona parte di Nmap e tcpdump. Sa inoltre leggere e scrivere file pcap, il che lo rende un compagno naturale di Wireshark.
Nella stessa sezione della nostra raccolta, Ostinato e Masscan rispondono a esigenze diverse. Ostinato è un generatore di traffico grafico fatto per spingere grandi volumi di pacchetti a partire da modelli. Masscan è uno scanner di porte specializzato, scritto in C, il cui unico scopo è percorrere intervalli di indirizzi enormi nel minor tempo possibile. Scapy sta altrove: sacrifica la velocità pura in cambio di flessibilità e precisione, ed è adatto a chi vuole esaminare uno scambio preciso o scrivere un test su misura.
Si usa per verificare che un firewall applichi davvero le sue regole, per riprodurre un difetto in uno stack di rete, per scrivere un piccolo fuzzer che invia varianti dello stesso pacchetto, o per insegnare il funzionamento di TCP osservando ogni segmento. La versione 2.8.0 ha ampliato il raggio d’azione con protocolli automobilistici come SAE J1939 e UDS, moduli Bluetooth, DICOM, PTP e il protocollo classico di MySQL, come spiegano le note di rilascio pubblicate su GitHub.
Per chi è?
Scapy si rivolge prima di tutto ai professionisti della sicurezza, offensiva e difensiva, agli amministratori di rete che inseguono un comportamento anomalo, agli sviluppatori di protocolli e ai docenti. L’unico vero requisito è la dimestichezza con Python, perché il linguaggio fa da interfaccia e da linguaggio di scripting allo stesso tempo.
I limiti sono altrettanto netti. Essendo scritto in Python, Scapy non è fatto per saturare un collegamento né per scansionare milioni di host; per quei compiti Ostinato o Masscan rendono molto di più. L’invio e la cattura di pacchetti grezzi richiedono privilegi di amministratore su ogni piattaforma. Infine non è un analizzatore grafico: per sfogliare con comodità una cattura voluminosa resta Wireshark la scelta giusta.
Scaricare Scapy in sicurezza
La versione ufficiale si trova sull’indice dei pacchetti Python PyPI, e su Linux e macOS basta il comando pip install scapy. Il sito scapy.net rimanda al repository GitHub secdev/scapy, dove sono disponibili il codice sorgente e l’archivio di ogni versione. Debian e Ubuntu offrono anche il pacchetto python3-scapy, e OpenBSD il pacchetto python-scapy, secondo la guida di installazione. Su Windows va installato prima il driver di cattura Npcap, poi Scapy con pip; la documentazione precisa che WinPcap funziona ancora ma non è più supportato.
Scapy è del tutto gratuito e non ha edizioni a pagamento o professionali. Trattandosi di un pacchetto Python, il rischio principale è un pacchetto dal nome simile caricato su PyPI da uno sconosciuto: controllate che il progetto installato indichi Philippe Biondi come autore e scapy.net come pagina principale. Un installatore eseguibile per Windows proposto da un sito di download di terzi non ha motivo di esistere e va lasciato perdere.
Domande frequenti
Scapy è gratuito?
Sì. Scapy è software libero distribuito con licenza GPL v2, senza versione a pagamento né funzioni bloccate. La documentazione è pubblicata con licenza Creative Commons BY-NC-SA 2.5, cosa che non incide in alcun modo sull’uso del programma.
Servono i privilegi di amministratore per usare Scapy?
Per inviare pacchetti grezzi o ascoltare un’interfaccia sì, su Linux, macOS e Windows allo stesso modo, perché il sistema riserva queste operazioni agli account privilegiati. Leggere un file pcap esistente o costruire pacchetti senza inviarli funziona invece con un account normale.
Scapy funziona su Windows?
Sì, a patto di installare prima il driver Npcap, indispensabile per accedere alla scheda di rete. La documentazione consiglia di disattivare la modalità di compatibilità WinPcap durante l’installazione di Npcap, quindi di installare Scapy con pip e avviarlo dal prompt dei comandi.