Wireshark est l’analyseur de protocoles réseau le plus utilisé au monde. Disponible gratuitement sous licence GNU GPLv2, il permet de capturer et d’inspecter chaque paquet qui circule sur un réseau, en temps réel ou depuis un fichier de capture enregistré. Que vous soyez administrateur système, ingénieur sécurité, étudiant en cybersécurité ou développeur souhaitant déboguer des communications réseau, Wireshark est l’outil incontournable de 2026.
Ce tutoriel complet couvre l’installation de la version 4.6.6 (publiée le 19 mai 2026), la prise en main de l’interface, la maîtrise des filtres, l’analyse du trafic TLS, la détection d’anomalies, l’utilisation de TShark en ligne de commande, et l’automatisation via des scripts Lua. Vous trouverez 12 étapes détaillées, 6 blocs de code fonctionnels, 3 tableaux de référence, 6 pièges courants et 8 solutions de dépannage.
Qu’est-ce que Wireshark et pourquoi l’utiliser en 2026 ?
Wireshark est né en 1998 sous le nom d’Ethereal, avant d’être renommé en 2006. Aujourd’hui maintenu par la Wireshark Foundation, une organisation à but non lucratif fondée lors du passage à la version 4.2.0, l’outil supporte plus de 3 000 protocoles réseau, des plus courants (TCP, UDP, HTTP, DNS, TLS) aux plus spécialisés (QUIC, gRPC-Web, SFTP, UASP).
En 2026, les cas d’usage de Wireshark couvrent quatre domaines principaux :
- Débogage réseau : identifier les latences, les retransmissions TCP, les timeouts DNS.
- Sécurité offensive et défensive : détecter les scans de ports, les attaques ARP spoofing, les exfiltrations de données.
- Forensique réseau : analyser des captures PCAP post-incident pour reconstituer une attaque.
- Développement logiciel : vérifier que vos APIs REST, WebSocket ou gRPC émettent exactement les paquets attendus.
La version 4.6.6 corrige une vulnérabilité de sécurité et un conflit DLL avec certaines versions de Windows 10. La branche 4.6, publiée le 8 octobre 2025, est la dernière à supporter Windows 10, Red Hat EL 8 et Qt 5. Elle introduit une série de raffinements de l’interface et de nouvelles fonctions de filtres d’affichage, notamment max(), min() et abs(), qui permettent d’appliquer des calculs arithmétiques directement dans les filtres.
| Version | Date de sortie | Nouveautés clés | Support |
|---|---|---|---|
| 4.6.6 | 19 mai 2026 | Correctif CVE, fix DLL Windows 10 | Actif |
| 4.6.0 | 8 oct. 2025 | Fin de Qt 5, dernière version Windows 10 | Actif |
| 4.4.x | 2024 | Stabilité, correctifs protocoles | Maintenance |
| 4.2.0 | 2023 | Mode sombre Windows, Arm64, Npcap 1.78 | EOL |
| 4.0.0 | 2022 | +20 protocoles, QUIC natif, fonctions filtres | EOL (4.0.17) |
Prérequis avant de commencer
Avant de démarrer, vérifiez les éléments suivants :
- Système d’exploitation : Windows 10/11 (64 bits), macOS 12 ou supérieur, Linux (Debian 11+, Ubuntu 22.04+, Fedora 38+).
- Wireshark 4.6.6 : téléchargeable sur wireshark.org.
- Droits administrateur : nécessaires pour la capture sur interface réseau. Sous Linux, vous pouvez configurer des droits de groupe pour éviter de lancer Wireshark en root.
- Interface réseau active : filaire (Ethernet), Wi-Fi, ou tunnel VPN.
- Npcap 1.78 (Windows uniquement) : inclus dans l’installateur Wireshark depuis la version 4.2.0. Remplace l’ancien WinPcap, désormais non maintenu.
- Connaissances de base : notions de TCP/IP, adresses IP, ports. Aucune expérience de Wireshark n’est requise.
- Espace disque : minimum 500 Mo pour l’installation, prévoyez 2 à 10 Go si vous comptez enregistrer des captures longues.
Sous Linux, Wireshark peut être installé depuis les dépôts officiels ou en compilant depuis les sources. L’ajout de l’utilisateur au groupe wireshark permet la capture sans privilèges root, ce qui est la méthode recommandée en production.
Étape 1 : Télécharger et installer Wireshark 4.6.6
L’installation varie selon le système d’exploitation. Voici la procédure pour les trois plateformes principales.
Windows : Téléchargez l’installateur Wireshark-4.6.6-x64.exe depuis le site officiel. L’installateur inclut automatiquement Npcap 1.78. Cochez l’option “Install USBPcap” uniquement si vous souhaitez capturer du trafic USB.
macOS : Utilisez le paquet .dmg disponible sur wireshark.org, ou installez via Homebrew :
# Installation via Homebrew sur macOS
brew install --cask wireshark
# Vérifier la version installée
wireshark --version
Linux (Ubuntu/Debian) : Wireshark est disponible dans les dépôts officiels. La commande usermod configure les permissions de capture sans root :
# Ajouter le dépôt et installer Wireshark
sudo add-apt-repository ppa:wireshark-dev/stable
sudo apt-get update
sudo apt-get install wireshark tshark -y
# Permettre la capture sans root (répondre "Oui" au prompt)
sudo dpkg-reconfigure wireshark-common
# Ajouter votre utilisateur au groupe wireshark
sudo usermod -aG wireshark $USER
# Appliquer les changements (redémarrer la session ou utiliser newgrp)
newgrp wireshark
# Vérifier la version
wireshark --version
# Output attendu : Wireshark 4.6.6 (Git v4.6.6 packaged as ...)
Sous Fedora/RHEL : sudo dnf install wireshark wireshark-cli. Sous Arch Linux : sudo pacman -S wireshark-qt.
Après installation, lancez Wireshark depuis le menu applications ou en tapant wireshark dans un terminal. Si l’interface se lance mais que les interfaces réseau n’apparaissent pas, vérifiez que Npcap (Windows) ou libpcap (Linux/macOS) est correctement installé.
Étape 2 : Comprendre l’interface Wireshark
L’interface de Wireshark se divise en trois zones principales, plus une barre de filtres et une barre de statut.
Le panneau de liste des paquets (en haut) affiche chaque paquet capturé sur une ligne, avec les colonnes : numéro, horodatage, adresse source, adresse destination, protocole, longueur, et informations. Chaque ligne est colorisée selon le protocole : vert pour HTTP, bleu foncé pour DNS, rouge pour les erreurs TCP.
Le panneau de détail du paquet (au milieu) présente une arborescence de protocoles pour le paquet sélectionné. Vous y voyez les couches réseau empilées : trame Ethernet, IP, TCP/UDP, et le protocole applicatif. Cliquer sur une couche la développe pour révéler chaque champ avec sa valeur décodée.
Le panneau hexadécimal (en bas) montre les octets bruts du paquet en hexadécimal à gauche et en ASCII à droite. Sélectionner un champ dans le panneau de détail surligne les octets correspondants dans la vue hex, ce qui est essentiel pour comprendre le format réel des paquets.
La barre de filtres d’affichage se trouve juste au-dessus du panneau de liste. Tapez-y un filtre pour restreindre l’affichage sans affecter la capture en cours. Le fond passe au vert si la syntaxe est valide, au rouge si elle est incorrecte.
Les menus importants à connaître dès le départ :
- Capture > Options : sélectionner les interfaces, définir les filtres de capture et la taille maximale des fichiers.
- Analyse > Suivre > Flux TCP : reconstituer une session TCP complète en texte lisible.
- Statistiques > Conversations : voir toutes les paires source/destination et les volumes échangés.
- Statistiques > Graphique IO : visualiser le débit réseau dans le temps.
- Analyse > Informations expert : accéder au système de classification automatique des problèmes réseau.
Depuis la version 4.2.0, Wireshark supporte le mode sombre sur Windows via les paramètres système. L’interface s’adapte automatiquement si Windows est configuré en mode sombre. Sous Linux avec KDE ou GNOME en mode sombre, Wireshark suit également le thème système.
Étape 3 : Démarrer votre première capture réseau
Depuis l’écran d’accueil de Wireshark, la liste des interfaces réseau disponibles s’affiche avec un graphique de débit en temps réel. Cela vous permet d’identifier immédiatement quelle interface est active.
Double-cliquez sur l’interface souhaitée (par exemple eth0, en0 sur macOS, ou Wi-Fi sur Windows) pour démarrer la capture immédiatement avec les paramètres par défaut. La capture démarre en mode promiscuous par défaut, ce qui permet de capturer les paquets destinés à d’autres machines sur le même segment réseau.
Pour une configuration avancée, passez par Capture > Options (Ctrl+K sur Windows/Linux, Cmd+K sur macOS). Les paramètres clés :
- Filtre de capture BPF : appliquer dès la capture pour ne récupérer que le trafic pertinent (voir étape 4).
- Taille maximale du fichier : limiter à 100 Mo ou 500 Mo pour éviter des fichiers incontrôlables sur les liaisons haut débit.
- Capture en anneau : créer plusieurs fichiers successifs (ex : 10 fichiers de 50 Mo) pour les captures longues.
- Arrêt automatique : stopper après X paquets, X mégaoctets ou X secondes.
Arrêtez la capture avec le bouton rouge carré ou Ctrl+E. Sauvegardez au format PCAP (Fichier > Enregistrer sous) ou au format PCAPNG, qui supporte les métadonnées étendues et les commentaires par paquet.
Étape 4 : Maîtriser les filtres de capture BPF
Les filtres de capture s’appliquent avant que les paquets ne soient enregistrés. Ils utilisent la syntaxe BPF (Berkeley Packet Filter), la même que tcpdump. Leur avantage est la performance : les paquets non correspondants ne consomment ni CPU ni mémoire.
La syntaxe BPF repose sur des primitives combinables avec les opérateurs logiques and, or et not. Voici les filtres BPF les plus utilisés :
# Capturer uniquement le trafic HTTP et HTTPS
port 80 or port 443
# Capturer le trafic depuis ou vers une IP précise
host 192.168.1.50
# Capturer le trafic entrant depuis un sous-réseau
src net 10.0.0.0/24
# Capturer le DNS uniquement
port 53
# Exclure le trafic ARP (réduire le bruit)
not arp
# Capturer SSH depuis une IP source spécifique
src host 192.168.1.100 and port 22
# Capturer les paquets de plus de 1400 octets (détecter gros transferts)
greater 1400
# Combiner : trafic TCP vers le serveur web, hors trafic de monitoring
tcp and dst host 203.0.113.10 and port 80 and not src host 10.0.0.1
Un piège classique avec les filtres BPF : ils sont appliqués au niveau du pilote réseau avant décodage des protocoles. Vous ne pouvez donc pas filtrer par http.request.method == "GET" dans un filtre de capture ; c’est réservé aux filtres d’affichage.
Étape 5 : Exploiter les filtres d’affichage
Les filtres d’affichage s’appliquent après la capture. Ils peuvent inspecter n’importe quel champ de n’importe quel protocole décodé par Wireshark, y compris des champs applicatifs profonds. Leur syntaxe est propre à Wireshark et bien plus expressive que BPF.
Depuis Wireshark 4.0.0, les fonctions max(), min() et abs() sont disponibles dans les filtres d’affichage. Ces fonctions acceptent des expressions et d’autres fonctions imbriquées, ouvrant des possibilités d’analyse avancée.
| Cas d’usage | Filtre d’affichage Wireshark | Équivalent BPF (capture) |
|---|---|---|
| Requêtes HTTP GET | http.request.method == "GET" | Non disponible |
| Code réponse 404 | http.response.code == 404 | Non disponible |
| Trafic DNS vers Google | dns and ip.dst == 8.8.8.8 | port 53 and dst host 8.8.8.8 |
| Retransmissions TCP | tcp.analysis.retransmission | Non disponible |
| Paquets TLS Client Hello | tls.handshake.type == 1 | Non disponible |
| IP source spécifique | ip.src == 192.168.1.50 | src host 192.168.1.50 |
| Paquets > 1400 octets | frame.len > 1400 | greater 1400 |
| Trafic ICMP (ping) | icmp | icmp |
| Heure comprise entre | frame.time >= "2026-06-18 10:00:00" | Non disponible |
| Credential en clair | http contains "password" | Non disponible |
L’autocomplétion des filtres d’affichage est particulièrement puissante depuis la version 4.2.0 : commencez à taper http. et Wireshark liste tous les champs HTTP disponibles. Le fond de la barre passe au vert si la syntaxe est valide, ce qui élimine les erreurs silencieuses.
Pour sauvegarder vos filtres les plus utilisés, cliquez sur l’icône de marque-page à droite de la barre de filtres. Vous pouvez créer des boutons de filtre rapide qui apparaissent sous la barre, accélérant l’analyse répétitive.
Étape 6 : Analyser le trafic HTTP et suivre les flux
Le trafic HTTP non chiffré (port 80) est directement lisible dans Wireshark. Appliquez le filtre http pour isoler les requêtes et réponses. Cliquez droit sur un paquet HTTP, puis Suivre > Flux HTTP pour reconstituer la conversation complète.
La vue “Suivre le flux” affiche la requête et la réponse en alternant les couleurs rouge (client vers serveur) et bleu (serveur vers client). C’est le moyen le plus rapide de lire le contenu d’une session HTTP, y compris les en-têtes, les cookies et le corps de la réponse.
Pour les API REST, filtrez par méthode et code de statut simultanément :
http.request.method == "POST" and http.request.uri contains "/api/login": identifier les tentatives de connexion.http.response.code >= 500: repérer les erreurs serveur.http.response.code == 200 and http.content_length > 10000: identifier les grosses réponses potentiellement exfiltrées.
Pour le trafic HTTPS, les paquets TLS apparaissent chiffrés par défaut. Wireshark affiche la couche TLS avec les étapes du handshake (Client Hello, Server Hello, Certificate, etc.) mais pas le contenu déchiffré, sauf si vous fournissez les clés (voir étape 7).
Le filtre tls.handshake.extensions_server_name permet de voir le SNI (Server Name Indication) des connexions TLS, même sans déchiffrement. Cela révèle à quels domaines se connecte une machine, même via HTTPS.
Étape 7 : Déchiffrer le trafic TLS avec les clés privées
Wireshark peut déchiffrer le trafic TLS si vous disposez de la clé privée du serveur ou des clés de session via le mécanisme SSLKEYLOGFILE. Cette fonctionnalité est cruciale pour analyser des problèmes de sécurité sur vos propres serveurs ou lors de tests d’intrusion autorisés.
Méthode 1 : clé privée RSA (fonctionne uniquement avec les suites de chiffrement sans Perfect Forward Secrecy, comme RSA key exchange). Dans Édition > Préférences > Protocoles > TLS, ajoutez votre fichier de clé privée PEM avec l’adresse IP et le port du serveur. Cette méthode ne fonctionne pas avec TLS 1.3 ni avec les suites ECDHE.
Méthode 2 : SSLKEYLOGFILE (méthode recommandée, compatible TLS 1.3). Définissez la variable d’environnement SSLKEYLOGFILE avant de lancer le navigateur ou l’application. Les clés de session sont alors écrites dans un fichier texte que Wireshark peut charger :
# Linux/macOS : exporter la variable avant de lancer le navigateur
export SSLKEYLOGFILE=/tmp/ssl-keys.log
google-chrome --incognito &
# ou
firefox &
# Windows (PowerShell) : définir la variable d'environnement
$env:SSLKEYLOGFILE = "C:\Temp\ssl-keys.log"
Start-Process "chrome.exe"
# Capturer le trafic pendant la session (dans un autre terminal)
tshark -i eth0 -w /tmp/capture.pcapng
# Dans Wireshark : Édition > Préférences > Protocoles > TLS
# Champ "(Pre)-Master-Secret log filename" : /tmp/ssl-keys.log
Après configuration, rechargez la capture avec Ctrl+Shift+R. Le trafic HTTPS s’affiche maintenant en clair dans le panneau de détail, avec les requêtes HTTP/2 ou HTTP/3 visibles. Appliquez alors le filtre http2 ou http pour ne voir que le contenu déchiffré.
Important : le fichier SSLKEYLOGFILE contient des informations sensibles permettant de déchiffrer toutes les sessions capturées. Ne l’activez que dans un environnement de test contrôlé, supprimez-le immédiatement après usage, et ne capturez jamais de trafic de production avec cette méthode sans autorisation explicite.
Pour aller plus loin sur les protocoles TLS et leurs différences de performance, consultez notre analyse détaillée : TLS 1.3 vs TLS 1.2 : 40 % plus rapide, 5 CVE.
Étape 8 : Détecter les attaques et anomalies réseau
Wireshark est un outil de détection passive puissant. Plusieurs types d’attaques génèrent des signatures réseau caractéristiques identifiables avec les bons filtres.
Scan de ports (Nmap SYN scan) : un attaquant qui scanne votre réseau génère de nombreux paquets TCP SYN vers des ports variés, sans compléter le three-way handshake. Filtre : tcp.flags.syn == 1 and tcp.flags.ack == 0. Si vous voyez des centaines de paquets SYN depuis une même source vers de multiples ports en quelques secondes, c’est un scan. Consultez notre tutoriel Nmap : scanner un réseau en 12 étapes pour comprendre ces signatures du côté attaquant.
ARP Spoofing : une attaque de type man-in-the-middle sur réseau local. Filtre : arp.duplicate-address-detected ou arp.opcode == 2 pour voir toutes les réponses ARP. Si une même adresse MAC répond à plusieurs IP, ou si une IP change de MAC, c’est suspect.
Exfiltration DNS : des requêtes DNS avec des noms de domaines anormalement longs (plus de 50 caractères dans le sous-domaine) indiquent souvent un tunnel DNS ou une exfiltration. Filtre : dns.qry.name.len > 50.
Credential en clair sur HTTP : filtre http.request.method == "POST" and http contains "password" pour détecter des formulaires d’authentification non chiffrés. En 2026, ce type de trafic ne devrait plus exister sur des applications sérieuses, mais il apparaît encore dans des environnements legacy.
Attaque par force brute SSH : de nombreuses nouvelles connexions TCP vers le port 22 depuis une même source. Filtre : tcp.dstport == 22 and tcp.flags.syn == 1, puis allez dans Statistiques > Conversations pour voir le volume par IP source.
Le système Informations Expert de Wireshark classe automatiquement les anomalies en quatre niveaux : Chat (informatif), Note (à surveiller), Warning (problème potentiel) et Error (problème confirmé). Accédez-y via Analyse > Informations expert. Chaque entrée renvoie directement aux paquets concernés, ce qui accélère l’investigation.
Étape 9 : Statistiques et graphiques IO
Le menu Statistiques de Wireshark regroupe des outils d’analyse qui transforment une capture brute en métriques exploitables.
Résumé de la capture (Statistiques > Capture File Properties) : affiche la durée, le nombre de paquets, le débit moyen, les protocoles détectés et la proportion de chaque protocole. C’est le point de départ d’une investigation : en 30 secondes, vous voyez si 80 % du trafic est du TLS normal ou si du DNS anormalement dense domine.
Hiérarchie des protocoles (Statistiques > Hiérarchie des protocoles) : présente une arborescence de tous les protocoles avec leur pourcentage du trafic total. Repérez immédiatement si un protocole inhabituel (IRC, Telnet, ou un protocole propriétaire) consomme une part significative.
Conversations (Statistiques > Conversations) : liste toutes les paires source/destination par couche (Ethernet, IP, TCP, UDP). Triez par “Octets” pour identifier le plus gros émetteur ou récepteur. En cas de suspicion d’exfiltration, cherchez une destination externe avec un volume anormalement élevé.
Graphique IO (Statistiques > Graphique IO) : visualise le débit par unité de temps. Vous pouvez superposer plusieurs filtres sur le même graphe pour comparer, par exemple, le trafic TCP total vs le trafic DNS. L’intervalle de temps est configurable de 1 milliseconde à plusieurs secondes. Les valeurs de temps Unix absolues sont supportées depuis la version 4.2.0 (syntaxe ts:1718700000).
Temps de réponse des requêtes (Statistiques > Service Response Time) : pour des protocoles comme DNS, HTTP, SMB ou DCERPC, Wireshark calcule automatiquement le temps entre la requête et la réponse. C’est l’outil idéal pour diagnostiquer des latences applicatives sans modifier le code.
Étape 10 : TShark, l’interface en ligne de commande
TShark est l’équivalent en ligne de commande de Wireshark. Il partage les mêmes dissecteurs de protocoles et la même syntaxe de filtres, mais s’exécute sans interface graphique, ce qui le rend idéal pour les serveurs, les scripts d’automatisation et les pipelines CI/CD.
# Lister les interfaces réseau disponibles
tshark -D
# Capturer 100 paquets sur eth0 et les sauvegarder
tshark -i eth0 -c 100 -w /tmp/capture.pcapng
# Lire un fichier PCAP et appliquer un filtre d'affichage
tshark -r /tmp/capture.pcapng -Y "http.request.method == POST"
# Extraire des champs spécifiques en sortie texte
tshark -r /tmp/capture.pcapng \
-Y "dns" \
-T fields \
-e frame.time \
-e ip.src \
-e dns.qry.name \
-E header=y \
-E separator=,
# Afficher le résumé des données fabricants (depuis Wireshark 4.2.0)
tshark -G manuf | head -20
# Capturer 60 secondes de trafic HTTP en décryptant TLS avec SSLKEYLOGFILE
tshark -i eth0 \
-o tls.keylog_file:/tmp/ssl-keys.log \
-Y "http" \
-T fields \
-e http.request.uri \
-e http.response.code \
-a duration:60
# Exporter en JSON pour traitement avec jq ou Python
tshark -r /tmp/capture.pcapng -T json > /tmp/capture.json
cat /tmp/capture.json | python3 -c "
import json, sys
packets = json.load(sys.stdin)
for pkt in packets[:5]:
layers = pkt.get('_source', {}).get('layers', {})
print(layers.get('ip', {}).get('ip.src', 'N/A'), '->', layers.get('ip', {}).get('ip.dst', 'N/A'))
"
TShark supporte également les dissecteurs Lua via l’option -X lua_script:/chemin/vers/script.lua, et peut lire des flux depuis stdin avec tshark -r -, ce qui permet de l’intégrer dans des pipelines shell complexes. Pour du monitoring continu, combinez TShark avec tcpdump ou dumpcap pour la capture et TShark pour l’analyse différée.
| Outil | Interface | Dissecteurs | Filtres | Cas d’usage |
|---|---|---|---|---|
| Wireshark GUI | Graphique | 3 000+ protocoles | BPF + display | Analyse interactive, investigation |
| TShark | Ligne de commande | Identiques à Wireshark | Identiques à Wireshark | Scripts, serveurs, automatisation |
| tcpdump | Ligne de commande | Minimal | BPF uniquement | Capture légère, embarqué |
| NetworkMiner | Graphique (Windows) | Limité | Basique | Forensique, extraction de fichiers |
| Zeek (Bro) | Ligne de commande | Étendu | Scripts Zeek | IDS réseau, journalisation |
Étape 11 : Automatiser avec des scripts Lua
Wireshark intègre un moteur Lua (version 5.4) qui permet d’écrire des dissecteurs personnalisés, des post-dissecteurs, des champs calculés et des boutons de menu. C’est la fonctionnalité la plus avancée de Wireshark, utilisée par les équipes sécurité pour analyser des protocoles propriétaires ou des formats de données spécifiques.
Les scripts Lua se chargent depuis le répertoire de configuration personnel de Wireshark (~/.config/wireshark/ sur Linux, %APPDATA%\Wireshark\ sur Windows) ou via l’option -X lua_script: de TShark.
-- Exemple : dissecteur Lua pour un protocole propriétaire sur port 9999
-- Fichier : ~/.config/wireshark/my_protocol.lua
local my_proto = Proto("myproto", "Mon Protocole Propriétaire")
-- Définir les champs du protocole
local f_magic = ProtoField.uint16("myproto.magic", "Magic Number", base.HEX)
local f_version = ProtoField.uint8("myproto.version", "Version", base.DEC)
local f_length = ProtoField.uint32("myproto.length", "Payload Length", base.DEC)
local f_payload = ProtoField.bytes("myproto.payload", "Payload")
my_proto.fields = {f_magic, f_version, f_length, f_payload}
-- Fonction de dissection
function my_proto.dissector(buffer, pinfo, tree)
if buffer:len() < 7 then return end
pinfo.cols.protocol = "MYPROTO"
local subtree = tree:add(my_proto, buffer(), "Mon Protocole")
subtree:add(f_magic, buffer(0, 2))
subtree:add(f_version, buffer(2, 1))
subtree:add(f_length, buffer(3, 4))
local payload_len = buffer(3, 4):uint()
if buffer:len() >= 7 + payload_len then
subtree:add(f_payload, buffer(7, payload_len))
end
end
-- Enregistrer le dissecteur sur le port TCP 9999
local tcp_port = DissectorTable.get("tcp.port")
tcp_port:add(9999, my_proto)
Ce script crée un dissecteur pour un protocole fictif fonctionnant sur le port TCP 9999. Il définit 4 champs (magic, version, longueur, payload), les ajoute à l’arborescence de Wireshark, et enregistre le dissecteur sur le port concerné. Une fois le script chargé, Wireshark décode automatiquement ce trafic et les champs myproto.* deviennent disponibles dans les filtres d’affichage.
Pour des cas d’usage réels, consultez le wiki Wireshark sur les filtres d’affichage et la documentation utilisateur officielle pour les API Lua complètes.
Étape 12 : Exporter, sauvegarder et partager vos captures
Wireshark propose plusieurs formats d’export selon l’usage prévu. Le choix du format impacte la compatibilité avec d’autres outils et la taille du fichier.
PCAP : format universel, compatible avec tcpdump, Zeek, Snort, NetworkMiner. Limité à une seule interface par fichier et aux commentaires de base.
PCAPNG : format moderne recommandé. Supporte plusieurs interfaces, les commentaires par paquet, les métadonnées d’interface et les horodatages haute résolution. Wireshark 4.x l’utilise par défaut.
Export d’objets (Fichier > Exporter des objets) : Wireshark peut extraire automatiquement les fichiers transférés via HTTP, SMB, FTP ou DICOM depuis une capture. Pratique pour la forensique ou pour vérifier qu’aucune donnée sensible n’est exfiltrée en clair.
Export en JSON via TShark : pour intégrer des captures dans un SIEM ou une base de données :
# Exporter une capture filtrée en JSON compact
tshark -r capture.pcapng \
-Y "ip.src == 10.0.0.0/8 and tcp" \
-T ek \
> capture_filtree.json
# Anonymiser les adresses IP avant partage (outil 'tcprewrite' de tcpreplay)
tcprewrite \
--seed=12345 \
--infile=capture.pcapng \
--outfile=capture_anonymisee.pcapng
# Supprimer les paquets d'une plage d'IP (editcap, inclus dans Wireshark)
editcap \
--discard "ip.src==192.168.1.1" \
capture.pcapng \
capture_epuree.pcapng
Avant de partager une capture réseau en dehors de votre organisation, anonymisez systématiquement les adresses IP, les adresses MAC et tout contenu applicatif potentiellement sensible. Des outils comme tcprewrite (inclus dans le paquet tcpreplay) permettent de pseudonymiser les adresses de manière cohérente, préservant la structure des flux tout en rendant les données non traçables.
Pour des serveurs qui génèrent du trafic à haute vélocité, utilisez dumpcap (inclus avec Wireshark) plutôt que TShark pour la phase de capture : dumpcap est un processus léger dédié à la capture qui minimise les pertes de paquets, même sur des liaisons 10 Gbps.
6 pièges courants et comment les éviter
Piège 1 : capturer sur la mauvaise interface. Wireshark liste toutes les interfaces disponibles, y compris les interfaces virtuelles (loopback, VPN, conteneurs Docker). Si vous ne voyez pas le trafic attendu, vérifiez que vous capturez sur l’interface physique active (eth0, ens3, en0) et pas sur lo ou une interface virtuelle. Sous Linux, ip link show liste toutes les interfaces et leur état.
Piège 2 : confondre filtres de capture et filtres d’affichage. Les filtres BPF (capture) ne comprennent pas les champs applicatifs comme http.request.method. Si votre filtre de capture n’affiche aucun paquet, vous avez probablement utilisé la syntaxe des filtres d’affichage. Règle simple : filtres BPF pour les protocoles de niveau 3-4, filtres d’affichage pour tout ce qui est au-dessus.
Piège 3 : fichiers de capture incontrôlables. Sur un réseau à 1 Gbps, Wireshark peut générer des gigaoctets de données en quelques minutes. Configurez toujours la capture en anneau (ring buffer) avec une taille maximale par fichier et un nombre maximum de fichiers. Utilisez un filtre BPF dès le départ pour limiter le volume.
Piège 4 : le mode promiscuous désactivé sur les interfaces virtuelles. Sur les interfaces virtuelles (VMware, VirtualBox, WSL2), le mode promiscuous est souvent désactivé par l’hyperviseur. Vous ne verrez que le trafic destiné à votre propre adresse MAC. Activez le mode promiscuous dans les paramètres de l’adaptateur réseau virtuel, ou utilisez un TAP/SPAN port sur un switch physique.
Piège 5 : oublier de sauvegarder avant de fermer. Wireshark ne demande pas de confirmation à la fermeture si vous n’avez pas sauvegardé une capture non nommée. Activez l’enregistrement automatique via un fichier temporaire dans les options de capture (Use a temporary file est activé par défaut, mais le fichier est supprimé à la fermeture sans sauvegarde explicite).
Piège 6 : analyser du TLS 1.3 avec la méthode de clé privée RSA. TLS 1.3 utilise exclusivement des suites de chiffrement avec Perfect Forward Secrecy (ECDHE). La méthode de déchiffrement par clé privée RSA ne fonctionne que sur TLS 1.2 avec RSA key exchange. Pour TLS 1.3, seule la méthode SSLKEYLOGFILE fonctionne. Vérifiez la version TLS avec le filtre tls.handshake.version avant de commencer.
8 problèmes fréquents et leurs solutions
Problème 1 : “No interfaces found” sous Linux. Causes possibles : l’utilisateur n’est pas dans le groupe wireshark (relancez la session après usermod -aG wireshark $USER), ou libpcap n’est pas installé (sudo apt install libpcap-dev). Vérifiez avec ls -la /dev/bpf* ou ls -la /proc/net/dev.
Problème 2 : Wireshark affiche des paquets mais aucun filtre ne fonctionne. Le filtre est appliqué mais le résultat est vide ? Vérifiez que le fond de la barre de filtres est vert (syntaxe valide). Un fond rouge signifie une erreur de syntaxe. Un fond jaune (depuis certaines versions) indique un filtre valide mais peu susceptible de correspondre.
Problème 3 : le déchiffrement TLS ne fonctionne pas. Vérifiez que le fichier SSLKEYLOGFILE est bien créé et non vide (wc -l /tmp/ssl-keys.log). Certains navigateurs ignorent la variable si elle est définie après leur démarrage. Vérifiez que le chemin dans les préférences Wireshark correspond exactement au fichier. Si la capture et les clés ont été faites séparément, les timestamps doivent se correspondre.
Problème 4 : Wireshark est lent ou plante sur de gros fichiers PCAP. Les fichiers PCAP de plusieurs gigaoctets peuvent saturer la RAM. Solutions : utilisez editcap pour découper le fichier en tranches (editcap -i 300 big.pcapng slice), ou ouvrez directement le fichier dans TShark qui consomme moins de mémoire. Augmentez également la mémoire allouée à Wireshark via les variables d’environnement de la JVM si vous utilisez une version Java.
Problème 5 : les paquets apparaissent comme “Continuation or non-HTTP traffic” au lieu d’être décodés en HTTP. HTTP sur un port non standard (ex : 8080, 8443) n’est pas détecté automatiquement. Cliquez droit sur un paquet, Décoder comme > HTTP, ou configurez le port dans les préférences du dissecteur HTTP.
Problème 6 : les couleurs des paquets semblent aléatoires après une mise à jour. Les règles de colorisation sont stockées dans le profil utilisateur. Si vous avez importé un profil d’une version précédente, certaines règles peuvent être invalides. Allez dans Vue > Règles de coloration pour réinitialiser aux valeurs par défaut.
Problème 7 : tshark retourne “Lua: error during loading” au démarrage. Un script Lua du répertoire de configuration contient une erreur de syntaxe. Identifiez le script coupable avec tshark -X lua_script:mon_script.lua 2>&1 et corrigez la syntaxe. Désactivez temporairement tous les scripts Lua avec tshark --disable-protocol Lua.
Problème 8 : les paquets UDP apparaissent dans le mauvais ordre. Les paquets UDP n’ont pas de mécanisme de séquencement natif. Le désordre apparent peut être réel (réseau instable) ou dû aux timestamps de capture. Activez Capture > Options > Use pcapng format qui offre une meilleure résolution temporelle. Pour la réassemblage de flux UDP (ex : RTP, QUIC), activez le suivi de flux via Analyser > Activer les protocoles.
Conseils avancés pour une analyse réseau professionnelle
Profils de configuration multiples. Wireshark supporte plusieurs profils (Édition > Profils de configuration). Créez un profil “Investigation sécurité” avec des règles de colorisation spécifiques aux attaques, un profil “Développement API” pour l’analyse HTTP/2, et un profil “Performance réseau” avec des colonnes de temps de réponse. Basculez entre profils en un clic.
Colonnes personnalisées. Ajoutez des colonnes calculées depuis n’importe quel champ de protocole. Par exemple, ajoutez une colonne “RTT TCP” depuis tcp.analysis.ack_rtt pour visualiser la latence de chaque connexion directement dans la liste des paquets, sans avoir à inspecter chaque paquet individuellement.
GeoIP et géolocalisation. Wireshark peut afficher la géolocalisation des adresses IP si vous installez les bases de données MaxMind GeoLite2. Téléchargez GeoLite2-City.mmdb et configurez le chemin dans Édition > Préférences > Résolution de noms > MaxMind database directories. Les colonnes Country et City deviennent disponibles, ce qui est précieux pour identifier des destinations géographiques suspectes.
Captures distantes avec SSH. Pour analyser le trafic d’un serveur distant sans y installer Wireshark, redirigez la capture de tcpdump via SSH directement dans Wireshark :
# Analyser le trafic d'un serveur distant en temps réel
# (remplacez user@serveur par vos identifiants SSH)
ssh [email protected] "tcpdump -i eth0 -w - 'port 80'" | wireshark -k -i -
# Avec un filtre plus restrictif pour économiser la bande passante SSH
ssh [email protected] \
"tcpdump -i eth0 -w - 'tcp and port 443 and host 10.0.0.50'" | \
wireshark -k -i -
Intégration avec des outils de sécurité. Exportez vos captures en JSON avec TShark et ingérez-les dans Elasticsearch, Splunk ou Grafana Loki pour une analyse à grande échelle. Pour une protection proactive de vos serveurs web sécurisés avec HTTPS, combinez l’analyse Wireshark avec un pare-feu applicatif : notre guide Let’s Encrypt + Nginx : HTTPS en 12 étapes couvre la configuration complète du chiffrement côté serveur.
Pour une protection complète de vos serveurs Linux, couchez Wireshark avec Fail2ban qui bloque automatiquement les IP après détection d’attaques, et avec les certificats TLS générés via OpenSSL que Wireshark peut ensuite utiliser pour le déchiffrement.
Couverture connexe
- Nmap : scanner un réseau en 12 étapes, 30 min [2026]
- TLS 1.3 vs TLS 1.2 : 40 % plus rapide, 5 CVE [2026]
- OpenSSL : clés et certificats en 12 étapes [2026]
- Fail2ban : protéger un serveur Linux en 12 étapes [2026]
- Let’s Encrypt + Nginx : HTTPS en 12 étapes [2026]
- OWASP Top 10 Node.js : sécurisez votre API en 12 étapes [2026]
FAQ : Wireshark en 2026
Wireshark est-il légal à utiliser ?
Wireshark est légal si vous l’utilisez sur un réseau dont vous êtes l’administrateur ou sur lequel vous avez une autorisation explicite. Capturer le trafic d’autres utilisateurs sans leur consentement est illégal dans la plupart des pays, y compris en France (article 226-15 du Code pénal pour l’interception de correspondances privées). En entreprise, les conditions d’utilisation des outils de capture doivent être formalisées dans la charte informatique et validées par le RSSI.
Quelle est la différence entre Wireshark et tcpdump ?
tcpdump est un outil en ligne de commande qui capture le trafic avec une syntaxe BPF et affiche un résumé textuel. Il est plus léger et disponible sur presque tous les systèmes Unix. Wireshark offre une interface graphique complète, décode plus de 3 000 protocoles, supporte les filtres d’affichage avancés, la reconstitution de flux, les statistiques, les graphiques et les scripts Lua. Dans la pratique, on capture souvent avec tcpdump sur un serveur distant et on analyse le fichier PCAP avec Wireshark sur son poste local.
Peut-on utiliser Wireshark pour tester la sécurité de son propre réseau ?
Absolument. Wireshark est un outil passif : il observe le trafic sans le modifier ni l’injecter. Pour des tests actifs (scan de ports, tests de pénétration), vous avez besoin d’outils complémentaires comme Nmap. Wireshark vous permet de valider que votre réseau ne transmet pas de données en clair, que vos services TLS utilisent bien les bonnes suites de chiffrement, et que vos applications ne font pas de requêtes vers des destinations inattendues.
Comment analyser du trafic chiffré avec Wireshark sans clé privée ?
Sans clés de déchiffrement, Wireshark peut quand même extraire de nombreuses informations du trafic TLS : la version TLS négociée, les suites de chiffrement proposées et choisies, le SNI (nom de domaine cible), les certificats échangés (y compris leur contenu décodé : CN, émetteur, dates de validité), et la longueur des messages chiffrés. Ces métadonnées permettent souvent d’identifier des problèmes de configuration TLS ou des comportements suspects, sans nécessiter de déchiffrement.
Wireshark peut-il capturer le trafic Wi-Fi ?
Oui, sous deux conditions. Votre adaptateur Wi-Fi doit supporter le mode moniteur (différent du mode promiscuous utilisé sur Ethernet). Sous Linux, activez-le avec sudo iw dev wlan0 set type monitor puis sudo ip link set wlan0 up. Sous Windows, Npcap supporte le mode moniteur sur certains adaptateurs. Pour déchiffrer le trafic WPA2, vous avez besoin de la passphrase Wi-Fi et du EAPOL handshake enregistré dans la capture (configurez la clé dans Édition > Préférences > Protocoles > IEEE 802.11).
Quelles certifications incluent Wireshark dans leur programme ?
Wireshark figure dans le programme de nombreuses certifications cybersécurité et réseau en 2026 : CompTIA Network+, CompTIA Security+, CompTIA CySA+, CEH (Certified Ethical Hacker), OSCP (Offensive Security Certified Professional), SANS GCIA (GIAC Certified Intrusion Analyst, spécialement axée sur l’analyse réseau), et eJPT (eLearnSecurity Junior Penetration Tester). La maîtrise de Wireshark est considérée comme une compétence fondamentale pour tout professionnel de la sécurité réseau.
TShark est-il inclus dans l’installation Wireshark ?
Sur Windows et macOS, TShark est inclus dans l’installateur Wireshark standard. Sur Linux, le paquet est souvent séparé : sudo apt install tshark ou sudo dnf install wireshark-cli. TShark partage exactement les mêmes dissecteurs de protocoles et le même moteur de filtres que Wireshark GUI, donc tout filtre que vous maîtrisez dans Wireshark fonctionne identiquement dans TShark avec l’option -Y.
Comment réduire la taille d’un gros fichier PCAP avant partage ?
Trois outils inclus avec Wireshark permettent de manipuler les fichiers PCAP sans les ouvrir dans l’interface graphique. editcap filtre, tronque et divise les captures (editcap -i 60 big.pcapng slice_%d.pcapng divise en tranches de 60 secondes). mergecap fusionne plusieurs captures. capinfos affiche les statistiques d’un fichier PCAP sans l’ouvrir. Pour une compression supplémentaire, les fichiers PCAPNG se compressent très bien avec gzip ou zstd (ratio de compression souvent supérieur à 10:1 sur du trafic HTTP).




