tcpdump permet de capturer des paquets réseaux afin de les analyser.
Plein d’exemple dispo
La commande tcpdump affiche directement la capture de l’interface réseau par défaut.
Le mode verbeux à 3 niveaux -v
-vv
-vvv
, a contrario, l’option -q
affiche moins de détails
Pour lister les interfaces réseaux
tcpdump -D
Pour utiliser une interface réseau particulière
tcpdump -i eth1
Pour afficher uniquement les adresses ip sans résolution dns
tcpdump -n
Afficher le contenu des paquets
tcpdump -A
Afficher le contenu des paquets avec le code hexadécimal en plus de l’ASCII
tcpdump -X
Ecrire la capture dans un fichier
tcpdump -w lefichier.pcap
Lire un fichier de capture
tcpdump -r lefichier.pcap
Une règle simple qui ne permet d’écouter qu’un hôte précis :
tcpdump host le_nom_de_lhote
Une règle un peu plus complexe qui écoute une hôté précis et son port :
tcpdump host le_nom_de_lhote port le_port
Écouter tout le trafic entre l’hôte 1 et l’hôte 2 ou 3 (les antislashs devant les parenthèses servent à ne pas faire interpréter ses dernières par un shell) :
tcpdump host hote1 and \( hote2 or hote3 \)
Tous les paquets IP entre l’hôte 1 et le reste du réseau, sauf l’hôte 2 :
tcpdump ip host hote1 and not hote2
Pour afficher les paquets SYN et le paquets FIN de chaque session TCP d’un hôte qui n’est pas sur notre réseau :
tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net ladresse_du_reseau_local'
Pour afficher tous les paquets HTTP sur IPv4 qui viennent ou arrivent sur le port 80 et qui ne contiennent que des données (pas de SYN, pas de FIN, pas de paquet ne contenant qu’un ACK):
tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
Affichage des paquets FTP venant de 192.168.1.100 et allant vers 192.168.1.2:
tcpdump src 192.168.1.100 and dst 192.168.1.2 and port ftp