1. Présentation de Wireshark et fonctionnement de la capture

Wireshark est le renifleur de paquets (Packet Sniffer) open-source de référence absolue dans l’industrie informatique mondiale. Il capture les trames circulant sur une interface réseau physique ou virtuelle en basculant la carte réseau en mode promiscuité (Promiscuous Mode), permettant d’inspecter l’intégralité du trafic réseau au bit près.

2. L’interface en trois panneaux de Wireshark

Wireshark organise l’analyse au travers de trois volets synchronisés :

  1. Panneau supérieur (Packet List) : Liste chronologique de tous les paquets capturés avec numéro, horodatage précis à la microseconde, adresse IP source et destination, protocole, longueur et synthèse d’informations.
  2. Panneau intermédiaire (Packet Details) : Décomposition arborescente des couches du modèle OSI/TCP-IP pour le paquet sélectionné (Frame, Ethernet II, IPv4, TCP, protocole applicatif). Chaque champ d’en-tête peut être déplié et analysé individuellement.
  3. Panneau inférieur (Packet Bytes) : Affichage brut des octets du paquet en hexadécimal et code ASCII correspondant.

3. Filtres de capture (BPF) vs Filtres d’affichage (Display Filters)

La distinction entre ces deux moteurs de filtrage est fondamentale pour éviter la saturation de la mémoire vive :

  • Filtres de capture (Syntaxe libpcap / BPF) : Appliqués avant la mise en mémoire pendant la capture. Les paquets non conformes sont définitivement ignorés et non enregistrés sur le disque :
    host 192.168.1.50 and port 80       # Ne capture que le trafic HTTP lié à cette IP
    not port 22                         # Ignore tout le trafic SSH d'administration
  • Filtres d’affichage (Display Filters Wireshark) : Appliqués après la capture sur l’ensemble des trames enregistrées, permettant d’isoler visuellement les données pertinentes :
    # Filtrer par protocole et code de retour HTTP :
    http.response.code == 404
    
    # Filtrer les paquets TCP contenant des alertes de réinitialisation ou de retransmission :
    tcp.flags.reset == 1 or tcp.analysis.retransmission
    
    # Isoler les échanges DNS relatifs à un domaine précis :
    dns.qry.name contains "ecole-informatique"
    
    # Isoler un flux de communication complet (TCP Stream) :
    ip.addr == 192.168.1.10 and ip.addr == 192.168.1.1

4. L’outil Follow TCP Stream

L’une des fonctionnalités les plus puissantes de Wireshark consiste à faire un clic droit sur un segment TCP et sélectionner « Follow → TCP Stream ». Wireshark réassemble automatiquement l’ensemble des segments de la session dans le bon ordre chronologique et affiche le dialogue textuel bidirectionnel complet entre le client (en rouge) et le serveur (en bleu).

Laboratoire pratique : Lancez une capture Wireshark sur votre interface réseau. Dans votre navigateur, ouvrez une page web non chiffrée de test (ou initiez une requête curl http://example.com). Filtrez sur http dans Wireshark, retrouvez la requête GET et la réponse 200 OK, et observez l’ensemble des en-têtes HTTP désencapsulés.