tshark Grundlagen

6 Kernkonzepte
Die wichtigsten Grundlagen von tshark – dem Kommandozeilen-Paketanalysator: tshark · -i · -r · -w · -c · -Y · -T tshark ist die Kommandozeilen-Version von Wireshark und ermöglicht das Erfassen, Analysieren und Filtern von Netzwerkverkehr – ideal für Skripte, Remote-Server und automatisierte Analysen.

Grundlagen – tshark Übersicht

tshark [Optionen] [Filter]
tshark -i eth0 -c 10

tshark (Terminal Wireshark) ist ein Kommandozeilenwerkzeug zur Paketanalyse. Es kann Live-Traffic erfassen, Capture-Dateien lesen und analysieren sowie Filter und Ausgabeformate flexibel konfigurieren.

Die wichtigsten Optionen

Option Beschreibung
-i <interface> Netzwerkschnittstelle für Live-Capture
-r <datei> Capture-Datei lesen (.pcap, .pcapng)
-w <datei> Capture in Datei schreiben
-c <n> Nur n Pakete erfassen
-Y <filter> Display-Filter anwenden (Wireshark-Syntax)
-f <filter> Capture-Filter (libpcap-Syntax)
-T <format> Ausgabeformat (z.B. fields, json, ek)
-e <feld> Feld für Ausgabe (mit -T fields)
-V Detaillierte Paket-Informationen
-D Verfügbare Schnittstellen auflisten
-h Hilfe anzeigen
Beispiele
tshark -D # Verfügbare Interfaces anzeigen
tshark -i eth0 -c 5 # 5 Pakete auf eth0 erfassen
tshark -r capture.pcap -Y "http" # HTTP-Pakete aus Datei anzeigen
Typische Ausgabe von tshark -D:
1. eth0 (Ethernet)
2. wlan0 (IEEE 802.11)
3. lo (Loopback)
Tipp: tshark benötigt in der Regel sudo oder Administrator-Rechte für Live-Captures auf den meisten Systemen. Verwenden Sie sudo tshark -i eth0.

Live-Capture – Traffic in Echtzeit erfassen

-i <interface> -c <n> -Y <filter>
tshark -i wlan0 -Y "tcp.port == 443" -c 20

Live-Capture ermöglicht die Erfassung von Netzwerkverkehr in Echtzeit. Sie können die Anzahl der Pakete begrenzen, Filter anwenden und die Ausgabe formatieren.

Beispiele
tshark -i eth0 # Endlos erfassen (Ctrl+C zum Stoppen)
tshark -i eth0 -c 50 # 50 Pakete erfassen
tshark -i any -Y "http.request.method == GET" # Nur HTTP-GET-Anfragen
tshark -i eth0 -f "port 80" -c 10 # Capture-Filter (nur Port 80)
# Zeitbegrenzung (mit timeout)
timeout 10 tshark -i eth0 # 10 Sekunden erfassen
Tipp: -f verwendet die libpcap-Filtersyntax (wie bei tcpdump) und ist effizienter für die Erfassung. -Y verwendet Wireshark-Display-Filter (nach der Erfassung).

Dateien lesen – Capture-Dateien analysieren

-r <datei> -Y <filter> -V
tshark -r capture.pcapng -Y "dns" -V

Dateien lesen ermöglicht die Analyse von gespeicherten Captures (.pcap, .pcapng). Sie können Filter anwenden, detaillierte Informationen anzeigen und die Ausgabe formatieren.

Beispiele
tshark -r capture.pcap # Alle Pakete anzeigen
tshark -r capture.pcap -Y "tcp.port == 443" # Nur HTTPS-Traffic
tshark -r capture.pcap -V # Detaillierte Paket-Info
tshark -r capture.pcap -Y "ip.src == 192.168.1.1" # Pakete von einer IP
tshark -r capture.pcap -T fields -e frame.time -e ip.src -e ip.dst # Spezifische Felder ausgeben
Typische Ausgabe von tshark -r capture.pcap -Y "http" -T fields -e ip.src -e http.request.uri:
192.168.1.100 /index.html
192.168.1.100 /style.css
192.168.1.101 /api/data
Tipp: Kombinieren Sie -r mit -T fields und -e, um gezielt Informationen aus großen Capture-Dateien zu extrahieren – ideal für Skripte.

Dateien schreiben – Captures speichern

-w <datei> -c <n> -b
tshark -i eth0 -w capture.pcapng -c 100

Dateien schreiben ermöglicht das Speichern von Captures für die spätere Analyse. Unterstützt werden Formate wie pcap, pcapng und andere.

Beispiele
tshark -i eth0 -w capture.pcapng # Endlos speichern (Ctrl+C stoppt)
tshark -i eth0 -w capture.pcapng -c 100 # 100 Pakete speichern
tshark -i eth0 -w capture.pcapng -F pcap # Im pcap-Format (statt pcapng)
# Ringbuffer (mehrere Dateien)
tshark -i eth0 -w capture.pcapng -b filesize:1000000 # 1 MB pro Datei
tshark -i eth0 -w capture.pcapng -b files:5 # Maximal 5 Dateien
Tipp: Der Ringbuffer (-b filesize oder -b files) ist nützlich für langfristige Captures – alte Dateien werden automatisch überschrieben.

Filter – Traffic gezielt filtern

-f <capture> · -Y <display>
tshark -i eth0 -f "port 443" -Y "tcp.flags.syn == 1"

Filter sind das Herzstück von tshark. Capture-Filter (-f) werden vor der Erfassung angewendet (effizienter). Display-Filter (-Y) werden nach der Erfassung angewendet (flexibler).

Häufige Filter

Filter Beschreibung Typ
port 80 HTTP-Traffic Capture
port 443 HTTPS-Traffic Capture
host 192.168.1.1 Verkehr zu/von einer IP Capture
tcp.port == 443 HTTPS-Traffic (Display) Display
http.request.method == GET HTTP-GET-Anfragen Display
dns DNS-Anfragen und -Antworten Display
ip.src == 192.168.1.100 Pakete von einer IP Display
tcp.flags.syn == 1 SYN-Pakete (Verbindungsaufbau) Display
frame contains "password" Pakete mit dem String "password" Display
Beispiele
tshark -i eth0 -f "port 80" -Y "http contains index.html" # HTTP mit index.html
tshark -r capture.pcap -Y "ip.addr == 8.8.8.8" # Alle Pakete mit 8.8.8.8
tshark -i eth0 -f "host 192.168.1.1 and port 22" # SSH zu 192.168.1.1
tshark -r capture.pcap -Y "tcp.analysis.retransmission" # TCP-Retransmissionen
Tipp: Capture-Filter (-f) reduzieren die Datenmenge bereits vor der Erfassung – das spart Speicher und CPU. Display-Filter (-Y) sind flexibler für die Analyse.

Ausgabe-Formate – Daten exportieren

-T fields -e <feld> -E <option>
tshark -r capture.pcap -T fields -e ip.src -e ip.dst -E separator=,

Ausgabe-Formate ermöglichen die flexible Darstellung von Paketdaten – als CSV, JSON, ek (Elastic Common Schema) oder benutzerdefinierte Felder. Ideal für die Weiterverarbeitung in Skripten und Tools.

Häufige Ausgabe-Formate

Format Beschreibung
-T fields Benutzerdefinierte Felder ausgeben
-T json JSON-Format
-T jsonraw JSON mit Raw-Feldern
-T ek Elastic Common Schema (für Elasticsearch)
-T psml PSML (Packet Summary Markup Language)
-T pdml PDML (Packet Details Markup Language)

Optionen für -T fields

Option Beschreibung
-e <feld> Feld auswählen (mehrfach möglich)
-E separator=<char> Trennzeichen (z.B. , oder ;)
-E header=y Kopfzeile mit Feldnamen anzeigen
-E quote=d Felder in doppelte Anführungszeichen setzen
-E occurrence=f Nur erstes Vorkommen eines Feldes
Beispiele
tshark -r capture.pcap -T fields -e frame.time -e ip.src -e ip.dst # Zeit + Quell- + Ziel-IP
tshark -r capture.pcap -T json # JSON-Ausgabe
tshark -r capture.pcap -Y "http" -T fields -e http.request.uri -E separator=, # CSV mit URIs
tshark -r capture.pcap -T fields -e frame.number -e frame.len -E header=y -E separator=; # CSV mit Header
Beispiel-CSV-Ausgabe mit Header:
frame.number;frame.len
1;1514
2;66
3;1514
Tipp: -T fields mit -E header=y und -E separator=, erzeugt CSV-Dateien, die direkt in Excel, Python (pandas) oder anderen Tools importiert werden können.

tshark im Überblick

-i Interface
Live-Capture starten
-r Read
Datei analysieren
-w Write
Capture speichern
-Y Display-Filter
Wireshark-Syntax
-f Capture-Filter
libpcap-Syntax
-T Output-Format
fields, json, ek

Quick Summary

tshark
Paketanalyse
-i
Live-Capture
-r
Datei lesen
-w
Datei schreiben
-Y
Display-Filter
-T
Ausgabe-Format
tshark -i eth0 -c 10 · tshark -r capture.pcap -Y http · tshark -r capture.pcap -T fields -e ip.src