tshark Filter

6 Kernkonzepte
Die wichtigsten Filtertechniken für tshark: -f · -Y · Protocol-Filter · Field-Filter · Vergleichsoperatoren · logische Operatoren Filter sind das Herzstück der Netzwerkanalyse mit tshark. Sie ermöglichen es, aus riesigen Datenmengen gezielt relevante Pakete zu extrahieren – effizient und präzise.

Capture-Filter – Bereits beim Erfassen filtern

-f <libpcap-Syntax>
tshark -i eth0 -f "port 80 or port 443"

Capture-Filter (-f) werden direkt beim Erfassen angewendet – der Traffic wird bereits vor der Speicherung gefiltert. Sie verwenden die libpcap-Syntax (wie bei tcpdump) und sind besonders effizient, da weniger Daten verarbeitet werden müssen.

Häufige Capture-Filter

Filter Beschreibung
port 80 Nur HTTP-Traffic (Port 80)
port 443 Nur HTTPS-Traffic (Port 443)
port 53 Nur DNS-Traffic
host 192.168.1.1 Verkehr zu/von einer IP
src host 192.168.1.100 Nur von einer IP
dst host 8.8.8.8 Nur zu einer IP
tcp Nur TCP-Traffic
udp Nur UDP-Traffic
icmp Nur ICMP-Traffic (ping)
port 22 or port 80 SSH oder HTTP
net 192.168.0.0/16 Netzwerkbereich
not arp Alle Pakete außer ARP
Beispiele
tshark -i eth0 -f "port 80" -c 10 # 10 HTTP-Pakete erfassen
tshark -i wlan0 -f "host 192.168.1.100" # Traffic von 192.168.1.100
tshark -i eth0 -f "not port 22" # Alle außer SSH
tshark -i eth0 -f "tcp and port 80" # TCP-Pakete auf Port 80
tshark -i eth0 -f "tcp[13] & 0x02 != 0" # SYN-Pakete (Fortgeschritten)
Tipp: Capture-Filter reduzieren die Datenmenge bereits vor der Speicherung – das spart Speicherplatz und CPU. Verwenden Sie sie bei großen Datenmengen oder langen Captures.

Display-Filter – Nach der Erfassung filtern

-Y <Wireshark-Syntax>
tshark -r capture.pcap -Y "http.request.method == GET"

Display-Filter (-Y) werden nach der Erfassung auf bereits gespeicherte Pakete angewendet. Sie verwenden die Wireshark-Display-Filter-Syntax, die wesentlich mächtiger und flexibler ist als Capture-Filter.

Häufige Display-Filter

Filter Beschreibung
http Alle HTTP-Pakete
dns Alle DNS-Pakete
tcp.port == 443 HTTPS-Traffic
ip.src == 192.168.1.100 Pakete von einer IP
ip.dst == 8.8.8.8 Pakete zu einer IP
http.request.method == "GET" HTTP-GET-Anfragen
http.response.code == 404 HTTP-404-Antworten
tcp.flags.syn == 1 SYN-Pakete (Verbindungsaufbau)
tcp.flags.reset == 1 RST-Pakete (Verbindungsabbruch)
frame contains "password" Pakete mit dem String "password"
udp.port == 53 DNS über UDP
Beispiele
tshark -r capture.pcap -Y "tcp.port == 22" # Nur SSH-Pakete
tshark -r capture.pcap -Y "ip.addr == 192.168.1.1" # Alle Pakete mit 192.168.1.1
tshark -r capture.pcap -Y "http.response.code >= 400" # HTTP-Client-Fehler (400+)
tshark -r capture.pcap -Y "tcp.analysis.retransmission" # TCP-Retransmissionen
tshark -r capture.pcap -Y "frame contains \"secret\"" # Pakete mit "secret"
Tipp: Display-Filter sind wesentlich flexibler als Capture-Filter. Sie können auf Felder auf allen Protokollebenen zugreifen (z.B. tcp.flags.syn, http.response.code).

Protokoll-Filter – Nach Protokollen filtern

http · dns · tcp · udp · icmp · arp
tshark -r capture.pcap -Y "tcp or udp"

Protokoll-Filter ermöglichen es, gezielt nach bestimmten Netzwerkprotokollen zu filtern – sowohl in Capture- als auch in Display-Filtern.

Häufige Protokoll-Filter

Filter (Display) Filter (Capture) Beschreibung
http port 80 HTTP
https port 443 HTTPS (TLS/SSL)
dns port 53 DNS
tcp tcp TCP
udp udp UDP
icmp icmp ICMP (ping)
arp arp ARP
dhcp port 67 or port 68 DHCP
ssh port 22 SSH
smtp port 25 SMTP (E-Mail)
ftp port 21 FTP
ntp port 123 NTP (Zeitsynchronisation)
Beispiele
tshark -r capture.pcap -Y "tcp" # Nur TCP-Pakete
tshark -r capture.pcap -Y "udp and dns" # UDP + DNS
tshark -r capture.pcap -Y "not arp" # Alle außer ARP
tshark -i eth0 -f "port 22 or port 80" # SSH oder HTTP (Capture)
Tipp: Display-Filter unterstützen viele Protokolle direkt – z.B. http, dns, tcp. Für spezifischere Filter (z.B. HTTPS) verwenden Sie tls oder Port-Filter.

Feld-Filter – Auf Protokollfelder zugreifen

tcp.port · ip.src · http.request.uri
tshark -r capture.pcap -Y "http.request.uri contains /api/"

Feld-Filter ermöglichen den Zugriff auf spezifische Felder innerhalb von Protokollen – z.B. Quell-IP, Ziel-Port oder HTTP-URI. Sie sind das Herzstück der Display-Filter.

Häufige Felder

Feld Beschreibung Beispiel
ip.src Quell-IP-Adresse ip.src == 192.168.1.1
ip.dst Ziel-IP-Adresse ip.dst == 8.8.8.8
tcp.port TCP-Port (Quelle oder Ziel) tcp.port == 80
tcp.srcport Quell-Port (TCP) tcp.srcport > 1024
tcp.dstport Ziel-Port (TCP) tcp.dstport == 443
udp.port UDP-Port (Quelle oder Ziel) udp.port == 53
http.request.uri HTTP-Anfrage-URI http.request.uri contains "login"
http.request.method HTTP-Methode http.request.method == POST
http.response.code HTTP-Statuscode http.response.code == 200
dns.qry.name DNS-Anfrage-Name dns.qry.name == "google.de"
tcp.flags.syn SYN-Flag tcp.flags.syn == 1
tcp.flags.ack ACK-Flag tcp.flags.ack == 1
frame.len Paketlänge in Bytes frame.len > 1500
frame.time Zeitstempel frame.time > "2025-01-01 00:00:00"
Beispiele
tshark -r capture.pcap -Y "ip.src == 192.168.1.100" # Nur von 192.168.1.100
tshark -r capture.pcap -Y "tcp.dstport == 443" # Ziel-Port 443 (HTTPS)
tshark -r capture.pcap -Y "http.request.uri matches \"/api/v[0-9]+\"" # API-Versionen
tshark -r capture.pcap -Y "dns.qry.name contains .de" # DNS-Anfragen für .de-Domains
Tipp: Verwenden Sie tshark -G fields oder tshark -Y "tcp" -T fields -e _ws.col.info, um verfügbare Felder anzuzeigen.

Vergleichsoperatoren – Werte vergleichen

== · != · > · < · >= · <= · contains · matches
tshark -Y "frame.len > 1000 and http.response.code == 200"

Vergleichsoperatoren ermöglichen den Vergleich von Feldwerten mit konkreten Werten oder Mustern. Sie sind die Grundlage für präzise Filter.

Die wichtigsten Vergleichsoperatoren

Operator Beschreibung Beispiel
== Gleich tcp.port == 80
!= Ungleich tcp.port != 22
> Größer als frame.len > 1500
< Kleiner als frame.len < 64
>= Größer oder gleich http.response.code >= 400
<= Kleiner oder gleich tcp.window_size <= 65535
contains Enthält Teilstring http.request.uri contains "login"
matches Regulärer Ausdruck http.request.uri matches "^/api/v[0-9]+"
in Element in Menge tcp.port in {80, 443}
~= Regulärer Ausdruck (Kurzform) dns.qry.name ~= ".*\.de"
Beispiele
tshark -r capture.pcap -Y "frame.len > 1500" # Pakete > 1500 Bytes
tshark -r capture.pcap -Y "http.request.uri contains .pdf" # PDF-Downloads
tshark -r capture.pcap -Y "ip.src == 192.168.1.100 and tcp.port != 22" # Von IP, aber nicht SSH
tshark -r capture.pcap -Y "http.response.code in {200, 304, 404}" # HTTP-Statuscodes
tshark -r capture.pcap -Y "dns.qry.name matches \".*\\.de$\"" # DNS .de-Domains
Tipp: contains ist case-sensitiv. Für case-insensitive Suche verwenden Sie lower(http.request.uri) contains "login" oder reguläre Ausdrücke mit (?i).

Logische Operatoren – Filter kombinieren

and · or · not · xor · ()
tshark -Y "(tcp.port == 80 or tcp.port == 443) and ip.src == 192.168.1.100"

Logische Operatoren kombinieren mehrere Filterbedingungen zu komplexen Ausdrücken. Sie ermöglichen präzise und flexible Filter für nahezu jede Analyseaufgabe.

Die wichtigsten logischen Operatoren

Operator Beschreibung Beispiel
and UND – beide Bedingungen müssen erfüllt sein tcp.port == 80 and ip.src == 192.168.1.1
or ODER – mindestens eine Bedingung muss erfüllt sein tcp.port == 80 or tcp.port == 443
not NICHT – negiert die Bedingung not arp
xor Exklusiv-ODER – genau eine Bedingung muss erfüllt sein tcp.flags.syn xor tcp.flags.ack
() Klammern für Priorität (tcp.port == 80 or tcp.port == 443) and ip.dst == 8.8.8.8
Beispiele
tshark -r capture.pcap -Y "tcp and not dns" # TCP, aber nicht DNS
tshark -r capture.pcap -Y "(ip.src == 192.168.1.100 or ip.dst == 192.168.1.100) and http" # HTTP mit 192.168.1.100
tshark -r capture.pcap -Y "http.response.code >= 400 and http.response.code < 500" # HTTP-Client-Fehler
tshark -r capture.pcap -Y "(tcp.flags.syn == 1 or tcp.flags.reset == 1) and ip.addr == 192.168.1.100" # SYN oder RST von IP
tshark -r capture.pcap -Y "not (tcp.port == 22 or tcp.port == 80)" # Alle außer SSH und HTTP
Tipp: Verwenden Sie Klammern, um die Reihenfolge der Auswertung zu steuern. and hat eine höhere Priorität als or – ohne Klammern könnte das zu unerwarteten Ergebnissen führen.

tshark Filter im Überblick

-f Capture-Filter
libpcap-Syntax
-Y Display-Filter
Wireshark-Syntax
== Vergleich
==, !=, >, <, contains
and/or/not Logische Operatoren
Kombination von Filtern
tcp.port Protokollfelder
ip.src, http.request.uri
matches Reguläre Ausdrücke
Für komplexe Muster

Quick Summary

-f
Capture-Filter
-Y
Display-Filter
http
Protokoll-Filter
ip.src
Feld-Filter
==
Vergleichsoperatoren
and
Logische Operatoren
tshark -r capture.pcap -Y "(http or dns) and ip.src == 192.168.1.100"