Tcpdump : comment l'utiliser, commandes et filtres (2026)

Penetration Testing
20 min de lecture
Tcpdump : comment l'utiliser, commandes et filtres (2026)
Sur cette page
  1. Qu'est-ce que tcpdump ?
  2. Installer tcpdump et le problème de permissions dont personne ne parle
  3. Comment utiliser tcpdump pour votre première capture
  4. Comment lire la sortie de tcpdump
  5. Les filtres tcpdump : la compétence qui compte
    1. Des filtres qui répondent à une question
  6. Écrire les captures dans un fichier et les ouvrir dans Wireshark
  7. Lire les données avec -A et -X : extraire un flag d'un pcap
    1. Sortie ASCII avec -A
    2. Sortie hexadécimale avec -X
    3. Observer le DNS avec tcpdump
  8. Tcpdump ou Wireshark : lequel et quand
  9. Considérations légales et éthiques
  10. Questions fréquentes
  11. Vos prochaines étapes

Vous êtes connecté à une machine en SSH. Pas de bureau graphique, pas de Wireshark, et quelque chose sur le réseau discute avec une adresse que personne ne sait expliquer. Apprendre à utiliser tcpdump, c'est apprendre à répondre à cette question avec le seul outil déjà installé, dans un terminal de 80 colonnes.

Tcpdump affiche des paquets. C'est tout le produit. Il le fait depuis 1988, il est présent sur presque tous les systèmes Linux et BSD sur lesquels vous vous connecterez, et il reste le moyen le plus rapide de savoir ce qu'une machine envoie réellement. C'est une compétence de base pour le penetration testing, pour la réponse à incident et pour la partie forensic de n'importe quel CTF. Ouvrez le lab Packet Pursuit dans un autre onglet pendant votre lecture : c'est un fichier de capture avec un flag réparti sur trois protocoles, et tout ce qui suit s'y applique directement.

TL;DR : tcpdump est un outil de capture de paquets en ligne de commande bâti sur libpcap. La commande que vous taperez le plus est sudo tcpdump -i eth0 -n 'tcp port 80' : choisissez une interface avec -i, coupez la résolution de noms avec -n, et mettez un filtre BPF entre guillemets simples à la fin. Ajoutez -c 100 pour vous arrêter après 100 paquets, ou -w capture.pcap pour les enregistrer et les ouvrir dans Wireshark. La vraie compétence, c'est lire une ligne de sortie et écrire un filtre qui élimine tout ce qui ne vous intéresse pas.

Qu'est-ce que tcpdump ?

Tcpdump est un outil en ligne de commande qui capture les paquets d'une interface réseau et affiche un résumé d'une ligne pour chacun. Il sait aussi écrire les paquets bruts dans un fichier .pcap, le format que lit Wireshark, si bien qu'une capture prise sur un serveur sans interface graphique s'ouvre parfaitement sur votre portable.

Van Jacobson, Sally Floyd, Vern Paxson et Steven McCanne l'ont écrit en 1988 au Lawrence Berkeley Laboratory. Il repose sur libpcap, la bibliothèque de capture qui fait aussi tourner Wireshark, Nmap, Snort et Suricata, et le "format pcap" n'est rien d'autre que le fichier écrit par libpcap.

La version stable actuelle sur tcpdump.org est la 4.99.7 (septembre 2026), avec libpcap 1.10.7. Les distributions ont un peu de retard : Ubuntu 24.04 LTS fournit la 4.99.4, et pour tout ce que couvre cet article les versions 4.99.x se comportent de façon identique.

Tcpdump ne décode pas les protocoles applicatifs comme le fait Wireshark. Il comprend très bien les en-têtes : Ethernet, IP, TCP, UDP, ICMP, DNS, ARP. Au-dessus, il vous rend surtout des octets. Pas de "Follow HTTP Stream", pas d'arbre de protocoles. Ce que vous gagnez à la place, c'est la vitesse, un langage de filtrage qui s'exécute dans le noyau, et un binaire déjà présent sur la cible.

Installer tcpdump et le problème de permissions dont personne ne parle

Sur Kali, il est déjà là. Sur Debian ou Ubuntu, une seule commande :

sudo apt update
sudo apt install tcpdump

Vérifiez ce que vous avez obtenu :

tcpdump --version
tcpdump version 4.99.4
libpcap version 1.10.4 (with TPACKET_V3)
OpenSSL 3.0.13 30 Jan 2024

Capturer des paquets demande les droits root, ou les capacités de socket brut qui les accompagnent en général, donc toutes les commandes de capture ci-dessous commencent par sudo. Si vous préférez éviter, accordez au binaire les deux capacités dont il a réellement besoin et lancez-le sous votre propre compte :

sudo setcap cap_net_raw,cap_net_admin+eip $(which tcpdump)

Vient maintenant ce qui piège presque tout le monde sur Debian et Ubuntu : ces versions abandonnent leurs privilèges au profit d'un compte non privilégié nommé tcpdump. La page de manuel officielle le documente sous -Z : la bascule a lieu "after opening the capture device or input savefile, but before opening any savefiles for output". Résultat, sudo tcpdump -w /root/capture.pcap échoue avec une erreur de permission alors même que vous êtes root, et quand l'écriture fonctionne, le fichier ne vous appartient pas :

-rw-r--r-- 1 tcpdump tcpdump 3115 Sep 14 07:18 cap.pcap

En pratique : écrivez vos captures à un endroit accessible à l'utilisateur tcpdump, par exemple /tmp, puis sudo chown $USER capture.pcap. Ou demandez à tcpdump de rester root avec -Z root. Deux minutes de confusion la première fois, plus jamais ensuite.

Avant de capturer quoi que ce soit, regardez sur quoi vous pouvez capturer :

tcpdump -D
1.eth0 [Up, Running, Connected]
2.any (Pseudo-device that captures on all interfaces) [Up, Running]
3.lo [Up, Running, Loopback]

eth0 est le vrai réseau, lo est la boucle locale, là où vous observez un service parler à une base de données sur la même machine, et any capture sur tout à la fois. Commencez par any quand vous ne savez pas encore où passe le trafic.

Comment utiliser tcpdump pour votre première capture

Toutes les commandes tcpdump ont la même forme : des options, puis un filtre entre guillemets simples.

sudo tcpdump -i lo -n 'tcp port 8000'

Cela affiche une bannière puis reste en place jusqu'à ce que vous fassiez Ctrl+C :

tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on lo, link-type EN10MB (Ethernet), snapshot length 262144 bytes
^C
25 packets captured
50 packets received by filter
0 packets dropped by kernel

Trois compteurs à la fin, et c'est le troisième qu'il faut surveiller. "Dropped by kernel" signifie que les paquets sont arrivés plus vite que tcpdump ne pouvait les traiter et que le noyau les a jetés. Au-dessus de zéro, votre capture est trouée, et le remède est un filtre plus serré ou -w vers un fichier plutôt qu'un affichage dans le terminal. (Sur la boucle locale, "received by filter" compte chaque paquet deux fois, à l'envoi et à la réception, donc 50 pour 25 est normal.)

Quatre options portent l'essentiel du travail :

  • -i eth0 choisit l'interface. Utilisez -i any en cas de doute.
  • -n empêche tcpdump de convertir les adresses et les numéros de port en noms. À utiliser systématiquement. Sans cette option, chaque nouvelle adresse déclenche une requête DNS qui ralentit l'affichage, pollue votre capture et indique au serveur DNS ce que vous regardez. Les anciens guides recommandent -nn pour garder aussi les ports en chiffres ; sur les versions actuelles, un seul -n fait déjà les deux.
  • -c 100 sort après 100 paquets. sudo tcpdump -i eth0 -n -c 100 capture 100 paquets sur eth0, affiche un résumé de chacun et s'arrête tout seul.
  • -w capture.pcap écrit les paquets bruts dans un fichier au lieu de les afficher.

Trois autres méritent de devenir des réflexes :

  • -v, -vv, -vvv décodent davantage chaque paquet : TTL, identifiant IP, longueur totale et vérification des sommes de contrôle avec -v, SMB entièrement décodé et champs NFS supplémentaires avec -vv.
  • -e ajoute l'en-tête de liaison, donc les adresses MAC. Indispensable pour traquer un problème ARP.
  • -tttt affiche la date complète avant l'heure, ce qu'il vous faut dans tout ce qui finit dans un rapport.

Il n'y a volontairement pas de -s0 dans ces listes. Les vieux tutoriels l'ajoutent parce que tcpdump ne gardait autrefois que les 68 premiers octets de chaque paquet. Les paquets entiers sont la norme depuis la version 4.1 (2010), et la bannière ci-dessus affiche la longueur de capture actuelle de 262144 octets.

💻
Pratiquez maintenant : Packet Pursuit - un fichier de capture avec un flag caché dans du trafic DNS, ICMP et HTTP. C'est exactement le travail pour lequel les filtres tcpdump ont été conçus, et cela tourne dans le navigateur sans rien installer.

Comment lire la sortie de tcpdump

C'est la compétence sur laquelle tout le reste repose. Voici une vraie ligne issue de la capture précédente :

07:18:27.260675 IP 127.0.0.1.56730 > 127.0.0.1.8000: Flags [S], seq 1533482769, win 65495, options [mss 65495,sackOK,TS val 12321087 ecr 0,nop,wscale 10], length 0

De gauche à droite :

  • 07:18:27.260675 est l'horodatage, à la microseconde. Le tempo est souvent la découverte elle-même : une requête toutes les 60,0 secondes est une balise, pas un utilisateur.
  • IP est le protocole de la couche externe. Vous verrez aussi IP6 et ARP.
  • 127.0.0.1.56730 > 127.0.0.1.8000 donne la source puis la destination, et le nombre après le dernier point est le port. Tcpdump n'utilise pas de deux-points pour les ports, ce qui surprend tout le monde une fois.
  • Flags [S] est le champ des drapeaux TCP, et c'est l'information la plus utile de la ligne.
  • length 0 est la taille des données utiles, pas celle du paquet. Un paquet de poignée de main ne transporte aucune donnée.

La notation des drapeaux est compacte et vaut la peine d'être mémorisée :

  • [S] SYN, quelqu'un ouvre une connexion
  • [S.] SYN-ACK, et le point veut toujours dire ACK. Quelque chose écoute.
  • [.] un simple ACK, en général un accusé de réception sans rien d'autre à dire
  • [P.] PSH-ACK, celui qui transporte les vraies données
  • [F.] FIN-ACK, une fermeture polie
  • [R] ou [R.] RST, un refus. Rien n'écoute sur ce port, ou un pare-feu a rejeté la connexion.

Lisez maintenant trois lignes consécutives de la même capture (options TCP coupées pour tenir à l'écran) et la poignée de main apparaît d'elle-même :

07:18:27.260675 IP 127.0.0.1.56730 > 127.0.0.1.8000: Flags [S], seq 1533482769, win 65495, length 0
07:18:27.261001 IP 127.0.0.1.8000 > 127.0.0.1.56730: Flags [S.], seq 62299410, ack 1533482770, win 65483, length 0
07:18:27.261018 IP 127.0.0.1.56730 > 127.0.0.1.8000: Flags [.], ack 1, win 64, length 0

SYN, SYN-ACK, ACK. Dès que vous repérez ce motif d'un coup d'œil, un scan de ports, une connexion échouée et un service fonctionnel se lisent directement dans le terminal. Un scan ressemble à des centaines de paquets [S] avec des [R.] qui reviennent de chaque port fermé, ce qui est très exactement l'allure d'un scan Nmap vu du côté qui le reçoit.

Remarquez aussi les numéros de séquence. Le premier paquet de chaque sens montre la vraie valeur, puis tcpdump affiche des numéros relatifs à celle-ci, d'où le ack 1 de la troisième ligne. Passez -S pour garder les valeurs absolues.

Les filtres tcpdump : la compétence qui compte

Une capture sans filtre sur une vraie interface devient illisible en deux secondes. Ici, les filtres ne sont pas une optimisation, ils sont l'outil.

Tcpdump utilise BPF, le langage Berkeley Packet Filter, documenté dans la page de manuel pcap-filter. Le filtre est compilé et s'exécute dans le noyau, donc les paquets que vous n'avez pas demandés sont écartés avant même d'être copiés vers tcpdump. C'est pour cela qu'un bon filtre règle aussi le problème des paquets perdus.

Une expression BPF se construit à partir de trois types de mots :

  • Type : host, net, port, portrange
  • Direction : src, dst, ou aucun des deux, ce qui accepte les deux sens
  • Protocole : tcp, udp, icmp, arp, ip, ip6

Combinez-les avec and, or et not, et entourez toujours l'ensemble de guillemets simples pour que votre shell laisse les parenthèses tranquilles.

sudo tcpdump -i any -n 'host 192.0.2.10'
sudo tcpdump -i any -n 'dst port 443'
sudo tcpdump -i any -n 'net 10.0.0.0/8'
sudo tcpdump -i any -n 'portrange 8000-8100'
sudo tcpdump -i any -n 'src 192.0.2.10 and not port 22'

La dernière est celle que vous taperez le plus souvent dans la vraie vie. En SSH, une capture sans filtre vous montre votre propre session SSH, qui génère d'autres paquets, qui affichent d'autres lignes. Exclure le port 22 fait la différence entre une capture lisible et un terminal emballé.

Un piège attrape aussi les habitués : and et or ont la même priorité et se lisent de gauche à droite. 'host 192.0.2.10 and port 80 or port 443' signifie "(cette machine sur le port 80) ou tout trafic sur le port 443, de n'importe qui", et sur une interface chargée la seconde moitié noie la première. Écrivez ce que vous voulez dire :

sudo tcpdump -i any -n 'host 192.0.2.10 and (port 80 or port 443)'

Des filtres qui répondent à une question

  • 'tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack == 0' ne montre que les tentatives de connexion, sans réponse ni données. C'est ainsi que vous voyez un scan de ports en cours, ou que vous confirmez qu'une machine essaie bien d'atteindre un service qui ne répond jamais.
  • 'udp port 53' c'est le DNS, et le DNS est l'endroit où se cachent étonnamment beaucoup d'ennuis.
  • 'port 80 or port 8080 or port 8000' attrape le HTTP en clair sur les ports réellement utilisés.
  • 'arp' montre le réseau local demandant qui possède quelle adresse. Ajoutez -e et l'usurpation ARP devient visible : une même IP revendiquée par deux adresses MAC.

La confusion à dissiper : les filtres de capture BPF et les filtres d'affichage de Wireshark sont deux langages différents qui se ressemblent et ne sont pas interchangeables. host 192.0.2.10, c'est du BPF. ip.addr == 192.0.2.10, c'est un filtre d'affichage Wireshark. Taper la version Wireshark dans tcpdump donne une erreur de syntaxe, et taper la version tcpdump dans la barre de filtre d'affichage de Wireshark la fait passer au rouge. Wireshark n'accepte le BPF que dans ses options de capture. Notre aide-mémoire Wireshark présente les deux syntaxes côte à côte.

Écrire les captures dans un fichier et les ouvrir dans Wireshark

L'affichage dans le terminal sert à observer. Tout ce que vous comptez analyser doit aller dans un fichier.

sudo tcpdump -i eth0 -n -w /tmp/capture.pcap 'port 80 or port 443'

Rien ne s'affiche pendant l'exécution, ce qui donne toujours l'impression d'une panne la première fois ; ajoutez -v pour voir un compteur de paquets. La capture de 25 paquets de cet article pèse 3 115 octets, mais un lien chargé produit des gigaoctets à l'heure, et le remède est la rotation :

sudo tcpdump -i eth0 -n -w /tmp/cap.pcap -C 100 -W 10

-C 100 démarre un nouveau fichier tous les 100 Mo (en millions d'octets), et -W 10 en conserve dix avant d'écraser le plus ancien : un tampon circulaire plafonné à 1 Go que vous pouvez laisser tourner plusieurs jours. Pour un fichier par heure, utilisez -G 3600 et mettez un format de date dans le nom du fichier, sinon chaque rotation écrase la précédente :

sudo tcpdump -i eth0 -n -G 3600 -w '/tmp/cap-%Y%m%d-%H%M.pcap'

Relisez un fichier enregistré avec -r, ce qui ne demande aucun droit root. Les filtres fonctionnent à la lecture comme à la capture, et c'est l'habitude qui rend les grosses captures gérables : capturez largement une fois, puis filtrez le fichier autant de fois que nécessaire.

tcpdump -r capture.pcap -n 'host 192.0.2.10 and port 443'

Voici maintenant la commande qui transforme tcpdump et Wireshark en un seul outil. Si le trafic qui vous intéresse est sur un serveur distant sans interface graphique, évitez le cycle capturer, copier, ouvrir. Faites-le passer dans un tube :

ssh [email protected] 'sudo tcpdump -i eth0 -U -w - not port 22' | wireshark -k -i -

-w - écrit la capture sur la sortie standard, -U vide le tampon à chaque paquet, et wireshark -k -i - démarre immédiatement la capture depuis l'entrée standard. Vous obtenez tout le décodage protocolaire de Wireshark, en direct, sur des paquets venant d'une machine qui n'a jamais entendu parler d'un gestionnaire de fenêtres. Deux détails comptent : not port 22 tient votre propre trafic SSH hors de la capture, et le sudo distant ne doit pas demander de mot de passe, puisqu'aucun terminal n'est là pour le saisir.

Lire les données avec -A et -X : extraire un flag d'un pcap

Les épreuves de forensic vous donnent un pcap et une question. Avec deux options de plus, tcpdump vous y amène plus vite qu'une interface graphique.

Sortie ASCII avec -A

-A affiche les données utiles de chaque paquet en ASCII. Sur les protocoles en clair, cela revient presque à lire la conversation :

tcpdump -r capture.pcap -nA 'tcp port 8000'
07:18:27.261121 IP 127.0.0.1.56730 > 127.0.0.1.8000: Flags [P.], seq 1:88, ack 1, win 64, length 87
E....+@.@..?...........@[g.........@.......
[email protected] /index.html HTTP/1.1
Host: 127.0.0.1:8000
User-Agent: curl/8.5.0
Accept: */*

La ligne de bruit avant la requête, c'est l'en-tête IP et TCP rendu en ASCII, dénué de sens par nature. Tout ce qui suit est la requête HTTP telle qu'elle est passée sur le câble. Continuez dans la même capture et un POST apparaît :

POST /login HTTP/1.1
Host: 127.0.0.1:8000
User-Agent: curl/8.5.0
Accept: */*
Content-Length: 26
Content-Type: application/x-www-form-urlencoded

user=dana&password=hunter2

Le voilà, en clair, parce que le formulaire a été envoyé en HTTP. C'est la découverte la plus courante dans les épreuves de forensic pour débutants, et on la retrouve encore sur de vrais réseaux internes en 2026, en général sur une interface d'administration que personne n'a touchée depuis des années.

Sortie hexadécimale avec -X

-X affiche l'hexadécimal à côté de l'ASCII, ce qu'il vous faut quand les données ne sont pas du texte (-XX inclut en plus l'en-tête de liaison) :

tcpdump -r capture.pcap -nX -c 1
07:18:27.260675 IP 127.0.0.1.56730 > 127.0.0.1.8000: Flags [S], seq 1533482769, win 65495, options [mss 65495,sackOK,TS val 12321087 ecr 0,nop,wscale 10], length 0
	0x0000:  4500 003c a829 4000 4006 9490 7f00 0001  E..<.)@.@.......
	0x0010:  7f00 0001 dd9a 1f40 5b67 1711 0000 0000  .......@[g......
	0x0020:  a002 ffd7 fe30 0000 0204 ffd7 0402 080a  .....0..........
	0x0030:  00bc 013f 0000 0000 0103 030a            ...?........

C'est là que se cachent les en-têtes de fichiers. 4500 à l'offset zéro marque le début d'un en-tête IPv4, et 1f40 à 0x0016 est le port 8000. Plus loin dans des données utiles, 504b 0304 est un fichier ZIP et 8950 4e47 un PNG. Repérer une signature de ce genre, c'est savoir qu'il y a un fichier à extraire de la capture.

La méthode dans une épreuve tient en trois étapes. Prenez la forme générale du trafic avec tcpdump -r capture.pcap -nq, qui affiche une ligne courte par paquet. Réduisez au protocole dont parle l'épreuve. Puis videz les données utiles avec -A et passez le tout dans grep :

tcpdump -r capture.pcap -nA | grep -i -E 'flag|password|user='

Observer le DNS avec tcpdump

Le DNS mérite un examen à part, parce qu'il fait sortir des données de réseaux qui bloquent tout le reste. Une requête normale n'a rien de remarquable :

sudo tcpdump -i any -n 'udp port 53'
07:20:43.478932 eth0  Out IP 192.0.2.2.43351 > 8.8.8.8.53: 24085+ AAAA? hackerdna.com. (31)
07:20:43.494090 eth0  In  IP 8.8.8.8.53 > 192.0.2.2.43351: 24085 3/0/0 AAAA 2606:4700:20::681a:f29, AAAA 2606:4700:20::681a:e29, AAAA 2606:4700:20::ac43:4840 (115)

Le type de requête, le nom et les réponses apparaissent sans option supplémentaire (3/0/0 signifie trois réponses, aucun enregistrement d'autorité ni additionnel), et -i any ajoute l'interface et le sens. Dans une investigation, surveillez la forme des noms : de longs sous-domaines à l'allure aléatoire, des centaines de noms uniques sous un même domaine parent, des requêtes qui ne se répètent jamais. Ce sont des données encodées dans des noms d'hôtes, et le lab DNS Tunneling Detective vous donne une capture où cela tourne.

Tcpdump ou Wireshark : lequel et quand

Ce n'est pas une rivalité. Ils partagent libpcap et lisent le même format de fichier, et la plupart du temps la bonne réponse est d'utiliser les deux.

Capacité Tcpdump Wireshark
Fonctionne en SSH sur un serveur sans interface graphique Oui Non
Déjà installé sur la cible En général Rarement
Décodage des protocoles applicatifs En-têtes seulement Des centaines de protocoles
Reconstitution d'une conversation TCP entière Non Follow TCP Stream
Extraction de fichiers depuis une capture Non Export Objects
Longues captures sans surveillance Tampon circulaire avec -C et -W Possible, plus lourd
Scriptable dans un enchaînement de commandes Oui Via tshark

Capturez avec tcpdump, parce qu'il est sur la machine, qu'il est léger et qu'il tournera encore demain. Analysez dans Wireshark, parce que reconstituer des flux et extraire des fichiers à la main est un travail que personne ne devrait faire. Notre guide de Wireshark couvre en détail la moitié analyse.

L'exception est bien réelle : quand vous savez ce que vous cherchez, tcpdump plus grep bat à chaque fois le chargement d'un pcap de 2 Go dans une interface graphique. "Est-ce que cette machine a parlé à cette adresse" est une question d'une ligne. N'ouvrez pas Wireshark pour y répondre.

Considérations légales et éthiques

Rappel essentiel : obtenez toujours une autorisation écrite explicite avant de capturer du trafic sur un réseau. Une capture de paquets est une interception : aux États-Unis elle relève du Wiretap Act, au Royaume-Uni de l'Investigatory Powers Act, et dans l'Union européenne des transpositions nationales de la directive ePrivacy. Nul besoin de modifier quoi que ce soit pour commettre une infraction. Lire le trafic des autres est l'infraction.

  • Ne capturez que sur des réseaux qui vous appartiennent ou qui sont nommés dans un document de périmètre signé
  • Le Wi-Fi d'un café ou d'un hôtel est le réseau de quelqu'un d'autre, transportant le trafic privé de quelqu'un d'autre. Ce n'est pas un environnement d'entraînement.
  • Filtrez dès la capture pour vous limiter au périmètre. Tout collecter en promettant d'en ignorer la majeure partie n'est pas une défense.
  • Un fichier de capture contient des identifiants, des cookies et des messages privés. Chiffrez-le au repos et supprimez-le à la fin de la mission.
  • Sur un réseau partagé ou d'entreprise, prévenez ceux qui l'administrent avant de commencer. Une interface en mode promiscuité se voit dans la supervision et ressemble en tout point à une attaque.

Les captures de laboratoire et les épreuves de CTF existent précisément pour construire ces réflexes sans rien de tout cela au-dessus de la tête.

Questions fréquentes

À quoi sert tcpdump ?

À capturer et inspecter le trafic réseau en ligne de commande. Les administrateurs s'en servent pour prouver quel côté d'une connexion échoue, les équipes de réponse à incident pour voir avec quoi discute une machine compromise, les pentesteurs pour trouver des identifiants en clair et cartographier un réseau, et les joueurs de CTF pour lire les fichiers pcap que leur donnent les épreuves de forensic.

Comment capturer un nombre précis de paquets avec tcpdump ?

Avec -c. sudo tcpdump -i eth0 -n -c 100 capture 100 paquets sur eth0, affiche un résumé d'une ligne pour chacun et s'arrête tout seul. Ajoutez -w capture.pcap pour enregistrer exactement ces 100 paquets dans un fichier.

Comment enregistrer une capture tcpdump dans un fichier ?

Avec -w : sudo tcpdump -i eth0 -n -w /tmp/capture.pcap. Rien ne s'affiche pendant l'exécution, c'est normal. Relisez-le avec tcpdump -r ou ouvrez-le dans Wireshark. Sur Debian et Ubuntu, écrivez dans /tmp ou dans un autre répertoire accessible à l'utilisateur non privilégié tcpdump.

Est-ce que tcpdump voit le trafic UDP ?

Oui. Tcpdump capture tous les protocoles que voit l'interface, y compris UDP, ICMP et ARP. Le nom est un accident historique de 1988. Filtrez avec udp, ou affinez : sudo tcpdump -i any -n 'udp port 53' montre le DNS, et tcpdump décode les requêtes et les réponses pour vous.

Tcpdump nécessite-t-il les droits root ?

Pour capturer, oui, car il lui faut un accès aux sockets bruts ; pour relire un fichier avec -r, non. Pour capturer sans sudo, lancez une fois sudo setcap cap_net_raw,cap_net_admin+eip $(which tcpdump).

Tcpdump peut-il lire le trafic HTTPS ?

Non. TLS chiffre les données utiles, donc -A n'affiche que des octets aléatoires. Vous obtenez malgré tout les métadonnées : adresses, ports, tempo, volume, et en général le nom d'hôte demandé dans la poignée de main TLS (sauf si Encrypted Client Hello le masque). Cela répond à "qui a parlé à quoi et quand", jamais à "qu'ont-ils dit".

Vos prochaines étapes

Savoir utiliser tcpdump demande un après-midi pour les options et quelques vraies captures pour la lecture. Aucun raccourci ne dispense de les faire.

Alors allez en faire une. Passez par le lab Packet Pursuit pour trouver un flag délibérément réparti sur trois protocoles, puis suivez le chapitre sur la forensic réseau de notre cours DFIR, qui pousse les mêmes captures plus loin : beaconing, tunnels DNS et empreintes TLS. Tout tourne dans le navigateur, et vous pouvez démarrer avec l'offre gratuite de HackerDNA, sans carte bancaire. Ensuite, lancez tcpdump sur votre propre machine pendant cinq minutes et regardez à qui parle votre portable quand vous le croyez au repos. C'est en général une surprise.

HackerDNA Team

Équipe HackerDNA

Écrit par l'équipe HackerDNA - des professionnels de la cybersécurité qui créent des labs de hacking pratiques et du contenu éducatif pour vous aider à développer des compétences réelles en sécurité.

Rencontrer l'équipe

Prêt à mettre cela en pratique?

Arrêtez de lire, commencez à hacker. De vraies machines, dans votre navigateur, gratuitement.

Commencer à Hacker Gratuitement
30 000+ Hackers Vrais labs Gratuit
Commencer Gratuitement ou résolvez le hack du jour, sans compte