tcpdump
Analyseur de paquets en ligne de commande. Capture et filtre le trafic réseau avec des expressions BPF. Indispensable pour le debug et l'investigation réseau sur des systèmes headless. Command-line packet analyzer. Captures and filters network traffic with BPF expressions. Essential for debugging and network forensics on headless systems.
↗ https://www.tcpdump.orgOverview
tcpdump is the standard command-line network packet analyzer. It captures packets matching Berkeley Packet Filter (BPF) expressions and dumps them to the terminal or a .pcap file for later analysis in Wireshark.
Basic Capture
Capture on all interfaces
sudo tcpdump -i any
Specific interface
sudo tcpdump -i eth0
Capture N packets then stop
sudo tcpdump -i eth0 -c 100
Don’t resolve hostnames/ports (faster, clearer IPs)
sudo tcpdump -i eth0 -nn
# Verbose output
sudo tcpdump -i eth0 -v
sudo tcpdump -i eth0 -vvv # Maximum verbosity
# Show hex + ASCII
sudo tcpdump -i eth0 -X
sudo tcpdump -i eth0 -XX # Include Ethernet headers
sudo tcpdump -i eth0 -tt # Unix timestamps
sudo tcpdump -i eth0 -ttt # Time between packets
Write & Read pcap Files
Write to file
sudo tcpdump -i eth0 -w capture.pcap
Write with rotation (100MB files)
sudo tcpdump -i eth0 -w capture-%H%M%S.pcap -C 100
Read from file
tcpdump -r capture.pcap
Read and filter
tcpdump -r capture.pcap 'host 10.10.10.1'
BPF Filters
Filter by host
sudo tcpdump -i eth0 host 10.10.10.1
# Source or destination
sudo tcpdump -i eth0 src 10.10.10.1
sudo tcpdump -i eth0 dst 10.10.10.1
# Filter by port
sudo tcpdump -i eth0 port 80
sudo tcpdump -i eth0 port 80 or port 443
# Protocol
sudo tcpdump -i eth0 tcp
sudo tcpdump -i eth0 udp
sudo tcpdump -i eth0 icmp
Network/subnet
sudo tcpdump -i eth0 net 10.10.10.0/24
# Complex filters
sudo tcpdump -i eth0 'tcp port 80 and host 10.10.10.1'
sudo tcpdump -i eth0 'not arp and not icmp'
sudo tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0' # SYN packets
Capture DNS queries
sudo tcpdump -i eth0 -nn 'udp port 53'
Capture HTTP traffic
sudo tcpdump -i eth0 -A 'tcp port 80'
Capture credentials (cleartext protocols)
sudo tcpdump -i eth0 -nn -A 'port ftp or port telnet or port pop3'
Useful One-Liners
Watch HTTP GET requests
sudo tcpdump -i eth0 -nn -A 'tcp port 80' | grep -E 'GET|POST|Host:'
Capture ICMP (ping)
sudo tcpdump -i eth0 icmp
Monitor ARP (host discovery)
sudo tcpdump -i eth0 arp
Capture traffic to/from specific port range
sudo tcpdump -i eth0 'portrange 8000-8080'
Show all unique IPs communicating
sudo tcpdump -i eth0 -nn -q | awk '{print $3}' | cut -d. -f1-4 | sort | uniq -c | sort -rn
Tips
- Always use
-nnto disable name resolution — faster and shows actual IPs/ports -Aprints packet payload as ASCII — useful for cleartext protocol analysis- Save to pcap (
-w) when dealing with high-volume traffic, analyze offline with Wireshark - BPF filters are applied at capture time (efficient) vs post-capture filtering in Wireshark
Help / Man page
tcpdump [options] [expression]
Interface:
-i interface Interface (any = all)
-D List available interfaces
Capture:
-c count Exit after N packets
-s snaplen Bytes to capture per packet (0 = full)
-w file Write pcap file
-r file Read pcap file
-C size_MB Rotate output file at size (with -w)
Output:
-n Don't resolve hostnames
-nn Don't resolve hostnames or ports
-v/-vv/-vvv Verbosity levels
-q Quiet (less protocol info)
-A Print payload as ASCII
-X Print payload as hex+ASCII
-e Print Ethernet header
-t/-tt/-ttt Timestamp format
BPF Primitives:
host X src or dst host
src/dst X source or destination
net X/prefix network
port X port number
portrange X-Y port range
proto tcp/udp/icmp/arp
not/and/or boolean operators
Vue d’ensemble
tcpdump est l’analyseur de paquets réseau standard en ligne de commande. Il capture les paquets correspondant à des expressions BPF (Berkeley Packet Filter) et les affiche dans le terminal ou les écrit dans un fichier .pcap pour une analyse ultérieure dans Wireshark.
Capture de base
# Capturer sur toutes les interfaces
sudo tcpdump -i any
# Interface spécifique
sudo tcpdump -i eth0
# Capturer N paquets puis s'arrêter
sudo tcpdump -i eth0 -c 100
# Ne pas résoudre les noms d'hôtes/ports (plus rapide, IPs plus lisibles)
sudo tcpdump -i eth0 -nn
# Sortie verbeuse
sudo tcpdump -i eth0 -v
sudo tcpdump -i eth0 -vvv # Verbosité maximale
# Afficher en hex + ASCII
sudo tcpdump -i eth0 -X
sudo tcpdump -i eth0 -XX # Inclure les en-têtes Ethernet
# Timestamps Unix
sudo tcpdump -i eth0 -tt
# Temps entre les paquets
sudo tcpdump -i eth0 -ttt
Écriture et lecture de fichiers pcap
# Écrire dans un fichier
sudo tcpdump -i eth0 -w capture.pcap
# Écrire avec rotation (fichiers de 100 Mo)
sudo tcpdump -i eth0 -w capture-%H%M%S.pcap -C 100
# Lire depuis un fichier
tcpdump -r capture.pcap
# Lire et filtrer
tcpdump -r capture.pcap 'host 10.10.10.1'
Filtres BPF
# Filtrer par hôte
sudo tcpdump -i eth0 host 10.10.10.1
# Source ou destination
sudo tcpdump -i eth0 src 10.10.10.1
sudo tcpdump -i eth0 dst 10.10.10.1
# Filtrer par port
sudo tcpdump -i eth0 port 80
sudo tcpdump -i eth0 port 80 or port 443
# Protocole
sudo tcpdump -i eth0 tcp
sudo tcpdump -i eth0 udp
sudo tcpdump -i eth0 icmp
# Réseau/sous-réseau
sudo tcpdump -i eth0 net 10.10.10.0/24
# Filtres complexes
sudo tcpdump -i eth0 'tcp port 80 and host 10.10.10.1'
sudo tcpdump -i eth0 'not arp and not icmp'
sudo tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0' # Paquets SYN
# Capturer les requêtes DNS
sudo tcpdump -i eth0 -nn 'udp port 53'
# Capturer le trafic HTTP
sudo tcpdump -i eth0 -A 'tcp port 80'
# Capturer des credentials (protocoles en clair)
sudo tcpdump -i eth0 -nn -A 'port ftp or port telnet or port pop3'
One-liners utiles
# Observer les requêtes HTTP GET
sudo tcpdump -i eth0 -nn -A 'tcp port 80' | grep -E 'GET|POST|Host:'
# Capturer ICMP (ping)
sudo tcpdump -i eth0 icmp
# Surveiller ARP (découverte d'hôtes)
sudo tcpdump -i eth0 arp
# Capturer le trafic vers/depuis une plage de ports spécifique
sudo tcpdump -i eth0 'portrange 8000-8080'
# Afficher toutes les IPs uniques qui communiquent
sudo tcpdump -i eth0 -nn -q | awk '{print $3}' | cut -d. -f1-4 | sort | uniq -c | sort -rn
Conseils
- Toujours utiliser
-nnpour désactiver la résolution de noms : plus rapide et affiche les vraies IPs/ports -Aaffiche le payload du paquet en ASCII : utile pour l’analyse de protocoles en clair- Sauvegarder en pcap (
-w) pour du trafic à haut volume, puis analyser hors ligne avec Wireshark - Les filtres BPF sont appliqués au moment de la capture (efficace) contrairement au filtrage post-capture dans Wireshark
Aide / Page de manuel
tcpdump [options] [expression]
Interface:
-i interface Interface (any = all)
-D List available interfaces
Capture:
-c count Exit after N packets
-s snaplen Bytes to capture per packet (0 = full)
-w file Write pcap file
-r file Read pcap file
-C size_MB Rotate output file at size (with -w)
Output:
-n Don't resolve hostnames
-nn Don't resolve hostnames or ports
-v/-vv/-vvv Verbosity levels
-q Quiet (less protocol info)
-A Print payload as ASCII
-X Print payload as hex+ASCII
-e Print Ethernet header
-t/-tt/-ttt Timestamp format
BPF Primitives:
host X src or dst host
src/dst X source or destination
net X/prefix network
port X port number
portrange X-Y port range
proto tcp/udp/icmp/arp
not/and/or boolean operators