pyshark
Dieses Repository ist für die Legacy-Version von pyshark, die auf Python2.7+ läuft. Sie erhält nach Version 0.3.8 nur noch Fehlerkorrekturen.
Für die neue Version, die nur auf Python 3.5+ unterstützt wird, verwenden Sie bitte das Haupt-Repository

Python-Wrapper für tshark, der die Analyse von Python-Paketen mithilfe von Wireshark-Dissectors ermöglicht.
Erweiterte Dokumentation: http://kiminewt.github.io/pyshark
Es gibt einige Python-Module zur Paketanalyse; dieses unterscheidet sich dadurch, dass es Pakete nicht selbst analysiert, sondern lediglich die Fähigkeit von tshark (Wireshark-Befehlszeilenprogramm) nutzt, XMLs zu exportieren, um dessen Analysefunktionen zu verwenden.
Dieses Paket ermöglicht die Analyse aus einer Capture-Datei oder einem Live-Capture unter Verwendung aller installierten Wireshark-Dissectors.
Getestet unter Windows/Linux.
Installation
Führen Sie einfach Folgendes aus, um die neueste Version von pypi zu installieren:
pip install pyshark-legacy
Oder installieren Sie aus dem Git-Repository:
git clone https://github.com/KimiNewt/pyshark-legacy.git
cd pyshark/src
python setup.py install
Mac OS X
Möglicherweise müssen Sie libxml installieren, was unerwartet sein kann. Wenn Sie einen Fehler von clang oder eine Fehlermeldung zu libxml erhalten, führen Sie Folgendes aus:
xcode-select --install
pip install libxml
Sie müssen wahrscheinlich eine EULA von XCode akzeptieren, seien Sie also bereit, im GUI auf "Akzeptieren" zu klicken.
Verwendung
Lesen aus einer Capture-Datei:
>>> import pyshark
>>> cap = pyshark.FileCapture('/tmp/mycapture.cap')
>>> cap
<FileCapture /tmp/mycapture.cap (589 packets)>
>>> print cap[0]
Packet (Length: 698)
Layer ETH:
Destination: BLANKED
Source: BLANKED
Type: IP (0x0800)
Layer IP:
Version: 4
Header Length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))
Total Length: 684
Identification: 0x254f (9551)
Flags: 0x00
Fragment offset: 0
Time to live: 1
Protocol: UDP (17)
Header checksum: 0xe148 [correct]
Source: BLANKED
Destination: BLANKED
...
Weitere Optionen
- param keep_packets: Ob Pakete nach dem Lesen mittels next() behalten werden sollen.
Wird verwendet, um bei großen Captures Speicher zu sparen.
- param input_file: Entweder ein Pfad oder ein dateiähnliches Objekt, das entweder eine
Paket-Capture-Datei (PCAP, PCAP-NG..) oder ein TShark-XML enthält.
- param display_filter: Ein (Wireshark-)Display-Filter, der vor dem Lesen auf das Capture angewendet werden soll.
- param only_summaries: Nur Paketzusammenfassungen erstellen, deutlich schneller, aber mit sehr wenig Information.
- param disable_protocol: Erkennung eines Protokolls deaktivieren (tshark > Version 2).
- param decryption_key: Schlüssel zum Ver- und Entschlüsseln des abgefangenen Datenverkehrs.
- param encryption_type: Verschlüsselungsstandard, der im abgefangenen Datenverkehr verwendet wird (muss entweder 'WEP', 'WPA-PWD' oder 'WPA-PWK' sein. Standard ist WPA-PWK).
- param tshark_path: Pfad zur tshark-Binärdatei.
Lesen von einer Live-Schnittstelle:
>>> capture = pyshark.LiveCapture(interface='eth0')
>>> capture.sniff(timeout=50)
>>> capture
<LiveCapture (5 packets)>
>>> capture[3]
<UDP/HTTP Packet>
for packet in capture.sniff_continuously(packet_count=5):
print 'Just arrived:', packet
Weitere Optionen
- param interface: Name der abzuhörenden Schnittstelle. Falls nicht angegeben, wird die erste verfügbare verwendet.
- param bpf_filter: BPF-Filter, der auf Pakete angewendet werden soll.
- param display_filter: (Wireshark-)Display-Filter, der verwendet werden soll.
- param only_summaries: Nur Paketzusammenfassungen erstellen, deutlich schneller, aber mit sehr wenig Information.
- param disable_protocol: Erkennung eines Protokolls deaktivieren (tshark > Version 2).
- param decryption_key: Schlüssel zum Ver- und Entschlüsseln des abgefangenen Datenverkehrs.
- param encryption_type: Verschlüsselungsstandard, der im abgefangenen Datenverkehr verwendet wird (muss entweder 'WEP', 'WPA-PWD' oder 'WPA-PWK' sein. Standard ist WPA-PWK).
- param tshark_path: Pfad zur tshark-Binärdatei.
- param output_file: Zusätzlich die erfassten Pakete in dieser Datei speichern.
Lesen von einer Live-Schnittstelle mit einem Ringpuffer
>>> capture = pyshark.LiveRingCapture(interface='eth0')
>>> capture.sniff(timeout=50)
>>> capture
<LiveCapture (5 packets)>
>>> capture[3]
<UDP/HTTP Packet>
for packet in capture.sniff_continuously(packet_count=5):
print 'Just arrived:', packet
Weitere Optionen
- param ring_file_size: Größe der Ringdatei in kB, Standard ist 1024.
- param num_ring_files: Anzahl der zu behaltenden Ringdateien, Standard ist 1.
- param ring_file_name: Name der Ringdatei, Standard ist /tmp/pyshark.pcap.
- param interface: Name der abzuhörenden Schnittstelle. Falls nicht angegeben, wird die erste verfügbare verwendet.
- param bpf_filter: BPF-Filter, der auf Pakete angewendet werden soll.
- param display_filter: (Wireshark-)Display-Filter, der verwendet werden soll.
- param only_summaries: Nur Paketzusammenfassungen erstellen, deutlich schneller, aber mit sehr wenig Information.
- param disable_protocol: Erkennung eines Protokolls deaktivieren (tshark > Version 2).
- param decryption_key: Schlüssel zum Ver- und Entschlüsseln des abgefangenen Datenverkehrs.
- param encryption_type: Verschlüsselungsstandard, der im abgefangenen Datenverkehr verwendet wird (muss entweder 'WEP', 'WPA-PWD' oder 'WPA-PWK' sein. Standard ist WPA-PWK).
- param tshark_path: Pfad zur tshark-Binärdatei.
- param output_file: Zusätzlich die erfassten Pakete in dieser Datei speichern.
Lesen von einer entfernten Live-Schnittstelle:
>>> capture = pyshark.RemoteCapture('192.168.1.101', 'eth0')
>>> capture.sniff(timeout=50)
>>> capture
Weitere Optionen
- param remote_host: Der entfernte Host, auf dem das Capture durchgeführt werden soll (IP oder Hostname). Auf ihm sollte rpcapd laufen.
- param remote_interface: Die entfernte Schnittstelle auf dem entfernten Rechner, die abgehört werden soll. Beachten Sie, dass es unter Windows nicht der Anzeigename des Geräts ist, sondern der tatsächliche Schnittstellenname (z. B. \Device\NPF_..).
- param remote_port: Der entfernte Port, auf dem der rpcapd-Dienst lauscht.
- param bpf_filter: Ein BPF-Filter (tcpdump), der vor dem Lesen auf das Capture angewendet werden soll.
- param only_summaries: Nur Paketzusammenfassungen erstellen, deutlich schneller, aber mit sehr wenig Information.
- param disable_protocol: Erkennung eines Protokolls deaktivieren (tshark > Version 2).
- param decryption_key: Schlüssel zum Ver- und Entschlüsseln des abgefangenen Datenverkehrs.
- param encryption_type: Verschlüsselungsstandard, der im abgefangenen Datenverkehr verwendet wird (muss entweder 'WEP', 'WPA-PWD' oder 'WPA-PWK' sein. Standard ist WPA-PWK).
- param tshark_path: Pfad zur tshark-Binärdatei.
Zugriff auf Paketdaten:
Auf Daten kann auf verschiedene Weise zugegriffen werden.
Pakete sind in Schichten unterteilt; zuerst müssen Sie die entsprechende Schicht erreichen und dann können Sie Ihr Feld auswählen.
Alle folgenden Möglichkeiten funktionieren: