Le filtrage à postériori est certainement l'étape la plus importante dans l'analyse réseau. C'est cette opération qui permet d'isoler l'information pertinente. La granularité de la syntaxe de filtrage disponible avec Wireshark est très importante. Il est possible de retenir un champ unique parmi les 820 protocoles supportés. Voici quelques exemples de filtrage allant du plus général au plus détaillé.
Après avoir réalisé une capture, il est possible d'isoler une connexion TCP en repérant son établissement (le début) et sa libération (la fin). En cliquant sur le bouton droit de la souris après avoir sélectionné n'importe quelle trame appartenant à la connexion à isoler, il faut valider l'option .
A la suite de cette opération, Wireshark ouvre une nouvelle fenêtre contenant les données vues de la couche transport.
Comme indiqué ci avant, la granularité de la syntaxe de filtrage est très importante. Elle peut donc s'avérer très complexe à manipuler. Wireshark offre plusieurs solutions pour rendre l'apprentissage de cette syntaxe interactif.
Tout d'abord, l'opération précédente de filtrage simplifié (voir Section 5.1, « Isoler une connexion TCP ») n'était qu'un cas particulier de saisie interactive de filtre de capture. En sélectionnant l'option , on a «saisi» un filtre avec la syntaxe suivante :
(ip.addreq 192.168.1.9
and ip.addr eq 80.247.225.35) \ and
(tcp.port
eq 32783
and tcp.port eq 80)
Cette expression est extraite de la Barre de filtrage. Elle doit tenir sur une ligne unique quelque soit sa longueur.
|
|
|
|
|
|
|
Les opérateurs logiques tels que |
|
|
|
|
|
|
La construction interactive des filtres d'affichage peut se faire à l'aide de la souris. Voici 2 exemples «simplistes» :
Admettons que l'on veuille repérer toutes les trames capturées dans
lesquelles l'option MSS (Maximum Segment
Size) apparaît. On développe alors l'en-tête
TCP d'un paquet correspondant à une demande de
connexion pour faire apparaître cette option. En cliquant sur le bouton
droit de la souris on accède au menu .
L'expression préparée apparaît dans la champ de la Barre de filtrage :
tcp.options.mss_val == 1460
Supposons maintenant que l'on veuille afficher toutes les trames ayant cette option indépendemment de sa valeur. Il suffit alors de supprimer le test :
tcp.options.mss_val
Admettons que l'on veuille observer la fragmentation IP en repérant les champs correspondants de l'en-tête des paquets IP. Tout d'abord, il faut «provoquer» la fragmentation IP artificiellement. On utilise 2 hôtes avec chacun une interface ethernet et un hub. En réduisant la taille maximum des données transmises par paquet (Maximum Transmit Unit) sur l'interface ethernet d'un hôte, on observe plus facilement les effets de la fragmentation.
__________
|_=_=_=_=_// Hub
| |
/ \_______
|..... \
.------,~ |.....
|Hote_A|' .------,~
| || |Hote_B|'
\------ / | ||
======/ \------ /
192.168.254.128 ======/
192.168.254.2
Hote_A # ifconfig eth0 mtu 256
Hote_A # ping -s 128 -c 5 192.168.254.2
PING 192.168.254.2 (192.168.254.2) 128(156) bytes of data.
136 bytes from 192.168.254.2: icmp_seq=1 ttl=64 time=0.591 ms
136 bytes from 192.168.254.2: icmp_seq=2 ttl=64 time=0.528 ms
136 bytes from 192.168.254.2: icmp_seq=3 ttl=64 time=0.554 ms
136 bytes from 192.168.254.2: icmp_seq=4 ttl=64 time=0.545 ms
136 bytes from 192.168.254.2: icmp_seq=5 ttl=64 time=0.546 ms
--- 192.168.254.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 0.528/0.552/0.591/0.036 ms
Hote_A # ping -s 8192 -c 5 192.168.254.2
PING 192.168.254.2 (192.168.254.2) 8192(8220) bytes of data.
8200 bytes from 192.168.254.2: icmp_seq=1 ttl=64 time=15.4 ms
8200 bytes from 192.168.254.2: icmp_seq=2 ttl=64 time=15.4 ms
8200 bytes from 192.168.254.2: icmp_seq=3 ttl=64 time=15.4 ms
8200 bytes from 192.168.254.2: icmp_seq=4 ttl=64 time=15.4 ms
8200 bytes from 192.168.254.2: icmp_seq=5 ttl=64 time=15.4 ms
--- 192.168.254.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 15.444/15.462/15.481/0.079 ms
On observe ensuite le résultat sur l'affichage des trames capturées. La syntaxe du filtre est :
ip.flags.df == 0
Connaissant maintenant la syntaxe d'identification de la fragmentation IP, il sera toujours possible d'appliquer le même filtre sur une capture beaucoup plus importante en volume.
La documentation sur l'ensemble des champs des protocoles reconnus utilisables dans les expressions de filtres d'affichage est disponible à l'adresse : Display Filter Reference.
Vous êtes ici :