-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 (-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.
| 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 |
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.
| 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 |
tcp.flags.syn, http.response.code).
Protokoll-Filter ermöglichen es, gezielt nach bestimmten Netzwerkprotokollen zu filtern – sowohl in Capture- als auch in Display-Filtern.
| 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) |
http, dns, tcp. Für spezifischere Filter (z.B. HTTPS) verwenden Sie tls oder Port-Filter.
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.
| 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" |
tshark -G fields oder tshark -Y "tcp" -T fields -e _ws.col.info, um verfügbare Felder anzuzeigen.
Vergleichsoperatoren ermöglichen den Vergleich von Feldwerten mit konkreten Werten oder Mustern. Sie sind die Grundlage für präzise Filter.
| 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" |
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 kombinieren mehrere Filterbedingungen zu komplexen Ausdrücken. Sie ermöglichen präzise und flexible Filter für nahezu jede Analyseaufgabe.
| 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 |
and hat eine höhere Priorität als or – ohne Klammern könnte das zu unerwarteten Ergebnissen führen.
-f
-Y
http
ip.src
==
and
tshark -r capture.pcap -Y "(http or dns) and ip.src == 192.168.1.100"