Wireshark è il principale analizzatore di traffico di rete open source, utilizzato per la cattura e l'ispezione dei pacchetti in tempo reale. Lo strumento supporta più di duemila protocolli di rete e funziona su tutte le principali piattaforme. Secondo la Wireshark User Guide (2026), l'utilità viene utilizzata per la diagnostica delle reti, il debug delle API e l'analisi della sicurezza nello sviluppo mobile e web.
Punti chiave
Wireshark è un programma open source (GPLv2) che cattura i pacchetti di dati che passano attraverso l'interfaccia di rete del computer. Si basa sulla libreria libpcap (Unix) o Npcap (Windows) per la cattura a livello dello strato di collegamento dati del modello OSI.
In modalità normale, una scheda di rete riceve solo i frame indirizzati al proprio indirizzo MAC. Wireshark porta l'interfaccia in modalità promiscuous (indiscriminata), in cui il sistema elabora tutti i frame in transito indipendentemente dal destinatario. I dati catturati vengono trasferiti al kernel tramite un raw socket, dopodiché la libreria libpcap li copia nello spazio utente per l'analisi.
Wireshark utilizza un'architettura modulare: ogni protocollo è implementato come un dissector separato — un plugin che analizza i dati binari e li visualizza in forma strutturata. Nel 2026 il programma implementa dissector per 2 874 protocolli, inclusi HTTP/2, QUIC, gRPC e MQTT. I dissector funzionano tramite il sistema ad albero dei protocolli — ogni pacchetto viene analizzato strato per strato: dal frame Ethernet fino al livello applicativo.
// Esempio di un semplice dissector per un protocollo personalizzato
static int dissect_custom(tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree, void *data) {
proto_item *ti = proto_tree_add_item(tree, hf_custom_field,
tvb, 0, tvb_captured_length(tvb), ENC_NA);
return 0;
}
L'interfaccia grafica di Wireshark è divisa in tre pannelli: elenco dei pacchetti (packet list), dettagli dei protocolli (packet details) e dump esadecimale (packet bytes). Ogni pannello viene aggiornato in tempo reale e supporta la navigazione interattiva: un clic su una riga di pacchetto apre la sua struttura completa.
Lo strumento legge file di cattura nei formati pcap, pcapng, snoop e NetMon. L'esportazione è possibile in JSON, XML, CSV e testo semplice. Tra i principali protocolli del livello applicativo ci sono HTTP/HTTPS, DNS, DHCP, TCP, UDP, TLS, QUIC, WebSocket, MQTT, AMQP e Protobuf. Per lo sviluppo mobile è particolarmente importante il supporto di gRPC e HTTP/2 con multiplexing dei flussi.
Le utilità integrate includono Follow Stream (ricostruzione del dialogo completo TCP/UDP/TLS), IO Graph (grafico della larghezza di banda), statistiche delle conversazioni (Conversations) e gerarchia dei protocolli (Protocol Hierarchy). La funzione Flow Graph visualizza la sequenza dei pacchetti tra i nodi, semplificando la ricerca delle cause dei ritardi nel debug dell'interazione client-server.
L'avvio della cattura inizia con la selezione di un'interfaccia di rete — Ethernet, Wi-Fi, Bluetooth PAN o Loopback. Su Windows potrebbe essere necessario installare Npcap in modalità WinPcap API Compatible Mode. Per la cattura su dispositivi mobile si utilizza Remote Packet Capture tramite tunnel SSH.
Su un dispositivo Android, il traffico viene catturato con tcpdump o PCAPdroid, quindi il file viene trasferito al computer di lavoro. Il comando per la cattura remota tramite ADB:
# Cattura del traffico su Android tramite ADB shell
adb shell tcpdump -i wlan0 -s 0 -w /sdcard/capture.pcap
# Copia sul computer
adb pull /sdcard/capture.pcap .
Su Windows, il traffico localhost (127.0.0.1) non passa attraverso un'interfaccia fisica, quindi Wireshark non lo vede direttamente. La soluzione è installare Npcap con l'opzione Loopback Support o reindirizzare il traffico tramite RawCap. Su Linux e macOS, l'interfaccia loopback (lo) viene catturata senza configurazioni aggiuntive.
Wireshark offre due tipi di filtri: capture filters (applicati prima della cattura, a livello di libpcap) e display filters (applicati ai dati già catturati). I capture filters usano la sintassi BPF (Berkeley Packet Filter), i display filters — il linguaggio proprio di Wireshark con autocompletamento.
I filtri BPF sono scritti in formato tcpdump ed eseguiti nel kernel, il che minimizza la perdita di pacchetti sotto carico elevato. Esempi di filtri:
| Filtro | Funzione |
|---|---|
| tcp port 80 | Solo traffico HTTP sulla porta standard |
| host 192.168.1.1 | Pacchetti da un host specifico |
| not arp | Tutti i pacchetti tranne le richieste ARP |
I display filters vengono applicati successivamente e supportano condizioni complesse con gli operatori logici and, or, not. Esempio: http.request.method == "POST" and ip.src == 192.168.0.100 filtrerà solo le richieste POST da un IP specifico. I filtri possono essere salvati come preferiti per il riutilizzo.
Il traffico HTTP viene visualizzato in Wireshark in forma leggibile: metodo della richiesta, URI, intestazioni e corpo della risposta. La funzione Follow TCP Stream raccoglie il dialogo completo tra client e server in una singola finestra. Per HTTPS è richiesta la decifrazione delle sessioni TLS, poiché il contenuto è crittografato.
I browser Chrome e Firefox supportano la variabile d'ambiente SSLKEYLOGFILE, che scrive le chiavi di sessione TLS in un file di testo. Wireshark utilizza questo file per decifrare i record. La configurazione si esegue tramite Preferences → Protocols → TLS → (Pre)-Master-Secret log filename.
# Avvio di Chrome con registrazione delle chiavi TLS
export SSLKEYLOGFILE=/tmp/sslkeys.log
google-chrome .
# Dopo la cattura, indicare il percorso in Wireshark
# Edit → Preferences → Protocols → TLS → Log Filename
gRPC usa HTTP/2 come trasporto e Protobuf per la serializzazione dei dati. Wireshark decifra i messaggi gRPC se viene fornito un file .proto con le definizioni delle strutture. Il dissector Protobuf associa i campi binari ai nomi del file proto, il che è fondamentale nel debug di un'architettura a microservizi.
Il debug mobile con Wireshark richiede di instradare il traffico del dispositivo verso il computer. Il metodo più affidabile è creare un punto di accesso Wi-Fi sul laptop e reindirizzare il traffico tramite NAT. Su Android è disponibile anche il metodo VPN con l'app PCAPdroid senza diritti di root.
PCAPdroid crea un servizio VPN locale che reindirizza il traffico delle app a Wireshark tramite uno stream UDP. L'app non richiede accesso root e supporta il filtraggio per singoli processi. I file pcap ottenuti vengono aperti in Wireshark per un'analisi completa.
# Ricezione del traffico da PCAPdroid sul computer
# PCAPdroid → Settings → PCAP dumper → UDP Exporter
nc -l -u 192.168.0.10 12345 > capture.pcap
Wireshark è uno strumento universale, ma per compiti specifici esistono soluzioni più specializzate. tcpdump è più efficace per la cattura lato server senza grafica, Charles Proxy è più comodo per analizzare il traffico HTTPS, mentre Fiddler — per l'ispezione del traffico web con la possibilità di modificare le richieste al volo.
Charles Proxy agisce come un server proxy intermedio con la capacità di intercettare HTTPS tramite una propria certificazione SSL. A differenza di Wireshark, Charles non richiede la configurazione di SSLKEYLOGFILE e può non solo visualizzare, ma anche modificare il traffico — sostituire le risposte, emulare i ritardi e ripetere le richieste.
Fiddler è un altro strumento proxy popolare nell'ecosistema .NET. Offre un editor di richieste integrato, supporto di AutoResponder per i mock e un composer per creare richieste personalizzate. Fiddler è più adatto per l'analisi del traffico web del browser, Wireshark — per l'analisi di rete di basso livello.
| Strumento | Tipo | HTTPS senza chiavi | Modifica del traffico |
|---|---|---|---|
| Wireshark | Sniffer | No (serve SSLKEYLOGFILE) | Solo visualizzazione |
| Charles | Proxy | Sì (certificato personalizzato) | Sì |
| Fiddler | Proxy | Sì (certificato personalizzato) | Sì |
| tcpdump | Sniffer | No | Solo visualizzazione |
Wireshark richiede la comprensione dei principi di base della cattura del traffico. Uno degli scenari frequenti è la ricerca della fonte dei ritardi in un'app mobile tramite il filtro tcp.analysis.ack_rtt. Per trovare le richieste HTTP lente, usa la condizione http.time maggiore di 1.
Per trovare le richieste HTTP lente, filtra http.time maggiore di 1 — Wireshark mostrerà le richieste con un tempo di risposta superiore a 1 secondo. Combina con ip.addr per analizzare un server specifico. Un IO Graph con intervallo di 1 secondo mostrerà chiaramente i picchi di carico.
Wireshark supporta l'esportazione in CSV, JSON e XML tramite il menu File. Per l'analisi automatica usa tshark — la versione console che funziona nelle pipeline CI/CD. Tshark supporta gli stessi filtri e formati di output della versione grafica.
Wireshark richiede la comprensione dei principi di base della cattura del traffico. Uno degli scenari frequenti è la ricerca della fonte dei ritardi in un'app mobile tramite il filtro tcp.analysis.ack_rtt. Per trovare le richieste HTTP lente, usa la condizione http.time maggiore di 1.
Per trovare le richieste HTTP lente, filtra http.time maggiore di 1 — Wireshark mostrerà le richieste con un tempo di risposta superiore a 1 secondo. Combina con ip.addr per analizzare un server specifico. Un IO Graph con intervallo di 1 secondo mostrerà chiaramente i picchi di carico.
Wireshark supporta l'esportazione in CSV, JSON e XML tramite il menu File. Per l'analisi automatica usa tshark — la versione console che funziona nelle pipeline CI/CD. Tshark supporta gli stessi filtri e formati di output della versione grafica.
Domande frequenti
Wireshark offre un'interfaccia grafica con visualizzazione dei pacchetti, filtri integrati e statistiche. tcpdump è un'utilità console senza GUI, comoda per la cattura lato server tramite SSH. Wireshark sa leggere i file di tcpdump e viceversa.
Per la decifrazione è richiesto un file di chiavi di sessione TLS (SSLKEYLOGFILE). Chrome e Firefox esportano le chiavi all'avvio con la variabile d'ambiente. Il percorso del file viene indicato nelle impostazioni Protocols → TLS in Wireshark.
Il traffico loopback su Windows non passa attraverso il driver Npcap per impostazione predefinita. La soluzione è installare Npcap con l'opzione Loopback Support attivata o usare l'utilità RawCap per catturare il traffico locale.
Sì, instradando il traffico verso il computer. Android supporta la cattura tramite PCAPdroid (senza root) o tcpdump (con root). iOS richiede RVI (Remote Virtual Interface) tramite macOS o jailbreak per la cattura.
Il display filter frame contains cerca una stringa o sequenza esadecimale nell'intero pacchetto. Esempio: frame contains "password" troverà i pacchetti con la sottostringa password in qualsiasi campo. Per la ricerca esatta per campo usa http.request.uri contains "api".
Sintesi
Svilupperemo un'applicazione mobile chiavi in mano
IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.
Leggi anche