Générateur de filtres tcpdump

Assemblez vos filtres tcpdump à partir de blocs au lieu d’apprendre la syntaxe BPF par cœur. Vous obtenez la commande prête à l’emploi pour tcpdump, tshark ou Wireshark, avec une explication en clair.

Fonctionne entièrement dans le navigateurVérifié avec libpcapGratuit, sans inscription

Exemples pour démarrer

Construire le filtre

Ajoutez des règles, combinez-les avec ET/OU, inversez-les avec NON. Les groupes créent des parenthèses.

Comprendre les filtres tcpdump

tcpdump utilise la syntaxe de filtrage de libpcap, souvent appelée syntaxe BPF (Berkeley Packet Filter). La même syntaxe s’applique aux filtres de capture de Wireshark, tshark et dumpcap. Un filtre se compose de primitives simples que l’on combine avec and, or et not.

Les primitives : type, sens, protocole

tcp dst port 443
src net 10.0.0.0/8
ether host 00:11:22:33:44:55

Combiner et mettre des parenthèses

Dans libpcap, and et or ont la même priorité et sont évalués de gauche à droite. a or b and c signifie donc (a or b) and c. Mettez des parenthèses dès que vous mélangez les deux. Dans le générateur, chaque paire de parenthèses correspond à un groupe.

Placez toujours le filtre entre apostrophes, sinon le shell interprète lui-même les parenthèses et les caractères spéciaux :

sudo tcpdump -nn -i eth0 'host 10.0.0.5 and (port 80 or port 443)'

Filtrer les drapeaux TCP

tcp[tcpflags] donne accès aux drapeaux de l’en-tête TCP. tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn ne retient que le premier paquet de chaque connexion : SYN activé, ACK désactivé. Cela ne fonctionne qu’en IPv4, car libpcap ne retrouve pas l’en-tête TCP derrière les en-têtes d’extension IPv6.

Filtres courants

ObjectifFiltre
Trafic d’un hôtehost 192.168.1.10
Trafic entre deux hôteshost 10.0.0.5 and host 10.0.0.20
Web sans sa propre session SSH(port 80 or port 443) and not port 22
DNSport 53
DHCPudp portrange 67-68
Ouverture de connexiontcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn
Connexions réinitialiséestcp[tcpflags] & tcp-rst != 0
Pingicmp[icmptype] == icmp-echo
Paquets du VLAN 100vlan 100 and host 10.1.1.1
Gros paquets (problèmes de MTU)greater 1400

Conseils pratiques

FAQ

Comment enregistrer une capture pour Wireshark ?

Indiquez un nom de fichier dans les options, sous « Écrire dans un fichier (-w) », par exemple capture.pcap. tcpdump y écrit alors les paquets bruts, et vous pouvez ouvrir ce fichier directement dans Wireshark.

Pourquoi tcpdump affiche-t-il « syntax error » ?

Le plus souvent, le shell interprète les parenthèses ou les caractères spéciaux parce que le filtre n’est pas entre apostrophes. Le générateur place donc toujours le filtre entre apostrophes. Les autres causes sont des fautes de frappe dans les mots-clés ou des parenthèses manquantes.

Le filtre fonctionne-t-il aussi dans Wireshark ?

Oui, comme filtre de capture, car Wireshark utilise lui aussi libpcap. Les filtres d’affichage de Wireshark ont une autre syntaxe, par exemple ip.addr == 10.0.0.5 au lieu de host 10.0.0.5.

Pourquoi mon filtre ne trouve-t-il rien sur le trafic VLAN ?

Avec une étiquette VLAN, l’en-tête IP est décalé de 4 octets. Placez donc la règle VLAN en premier, par exemple vlan 100 and host 10.0.0.5. Sur certains systèmes Linux, la carte réseau retire l’étiquette avant, et vlan devient inutile.

Mes saisies sont-elles envoyées quelque part ?

Non. Le générateur fonctionne entièrement dans votre navigateur. Le lien de partage enregistre le filtre après le #, et le navigateur n’envoie pas cette partie au serveur.