informatique:logiciels:tcpdump
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
informatique:logiciels:tcpdump [2011/06/20 09:36] – Analyse avancée des entêtes pteu | informatique:logiciels:tcpdump [2023/02/07 10:46] (current) – [Filtrer les messages ICMP] pteu | ||
---|---|---|---|
Line 53: | Line 53: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
Line 82: | Line 83: | ||
proto[x:y] | proto[x:y] | ||
</ | </ | ||
+ | On analyse à partir de l' | ||
- | C'est important de connaitre le format des entêtes du protocle | + | C'est important de connaitre le format des entêtes du protocole |
< | < | ||
0 | 0 | ||
Line 186: | Line 188: | ||
D' | D' | ||
- | | + | <code bash> |
+ | tcpdump -i eth0 not host toto | ||
+ | tcpdump -i eth0 host toto and net 192.168.0.0/ | ||
+ | </ | ||
- | | + | 2 équivalents qui permettent d' |
+ | <code bash> | ||
+ | tcpdump -i eth0 'ip[9] = 1' | ||
+ | tcpdump -i eth0 icmp | ||
+ | </code> | ||
- | tcpdump -i eth0 'ip[9] = 1' | + | 2 équivalents pour filtrer les //jumbo frame// (les paquets de taille supérieure à 1518 octet, le standard Ethernet) |
- | qui permet d' | + | <code bash> |
- | tcpdump -i eth0 icmp | + | tcpdump -i eth1 'len > 1518' |
- | + | tcpdump -i eth1 ' | |
- | | + | </ |
- | permet de filtrer les //jumbo frame// (les paquets de taille supérieure à 1518 octet, le standard Ethernet) | + | |
+ | Filtrer les trames Ethernet ('' | ||
+ | <code bash> | ||
+ | tcpdump -e -nni eth0 ether src 00: | ||
+ | </ | ||
+ | NB : l' | ||
====Filtrer les paquets fragmentés==== | ====Filtrer les paquets fragmentés==== | ||
- | L' | + | L' |
- | tcmpdump 'ip[6] & 0x20' = 32 | + | < |
+ | tcmpdump 'ip[6] & 0x20' = 32 | ||
+ | </ | ||
Le résultat de cette addition logique peut être soit 0 soit 32 : en effet le masque ajouté avec un " | Le résultat de cette addition logique peut être soit 0 soit 32 : en effet le masque ajouté avec un " | ||
- | ====Paquet DF==== | + | Cependant cette méthode ne tient pas compte des derniers paquets fragmentés qui ont le bit MF = 0. En revanche ceux-ci possèdent un champ //fragment offset// non nul : |
+ | < | ||
+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
+ | |Flags| | ||
+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
- | Pour filtrer les paquets "non fragmentables" | + | Bit 0: reserved, must be zero |
+ | Bit 1: (DF) 0 = May Fragment, | ||
+ | Bit 2: (MF) 0 = Last Fragment, 1 = More Fragments. | ||
+ | </ | ||
+ | |||
+ | Une autre façon de faire est donc de chercher les paquets dont ces champs ne sont pas vide ET dont le bit DF (Don't Fragment) n'est pas égal à 1. | ||
<code bash> | <code bash> | ||
- | tcpdump -nnv 'ip[6] = 64' | + | tcpdump -i eth1 '((ip[6:2] > 0) and (not ip[6] = 64))' |
</ | </ | ||
- | En effet on regarde le 7e octet de l' | + | ====Paquet DF==== |
- | < | + | |
- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | |
- | |Flags| | + | |
- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | |
- | Bit 0: reserved, must be zero | + | Pour filtrer les paquets "non fragmentables" |
- | Bit 1: (DF) 0 = May Fragment, 1 = Don't Fragment. | + | <code bash> |
- | Bit 2: (MF) 0 = Last Fragment, 1 = More Fragments. | + | tcpdump -nnv 'ip[6] = 64' |
- | + | ||
- | The fragment offset field is only used when fragmentation occurs. | + | |
</ | </ | ||
+ | |||
+ | En effet on regarde le 7e octet de l' | ||
Donc, les paquets non fragmentables doivent avoir cet octet égal à " | Donc, les paquets non fragmentables doivent avoir cet octet égal à " | ||
Line 255: | Line 275: | ||
</ | </ | ||
(l' | (l' | ||
+ | |||
+ | ====Filtrer les paquets TCP FIN==== | ||
+ | |||
+ | On procède de la même façon que pour les TCP SYNs, mais on filtre sur le bit FIN (le bit de poids faible du 13e octet) et on ne tient pas compte du flag ACK car il est (presque ?) toujours activé de toute façon. | ||
+ | |||
+ | ^ champ -> ^ CWR ^ ECE ^ URG ^ ACK ^ PSH ^ RST ^ SYN ^ FIN ^ | ||
+ | | ce qu'on recherche | x | x | x | x | x | x | x | 1 | | ||
+ | |||
+ | Ce qui nous donne : | ||
+ | < | ||
+ | tcpdump -i eth1 -s 40 ' | ||
+ | </ | ||
+ | |||
+ | ====Filtrer les messages ICMP==== | ||
+ | |||
+ | La balise " | ||
+ | <code bash> | ||
+ | tcpdump -nni eth0 icmp[0] == 5 | ||
+ | </ | ||
+ | Pour connaitre la liste exhaustive des différents messages ICMP, go [[https:// |
informatique/logiciels/tcpdump.txt · Last modified: 2023/02/07 10:46 by pteu