pyshark
Python-Wrapper für tshark, der Python-Paketanalyse mit Wireshark-Dissectoren ermöglicht.
Erweiterte Dokumentation: http://kiminewt.github.io/pyshark
Suche Mitwirkende – aus verschiedenen Gründen habe ich derzeit Schwierigkeiten, Zeit für die Wartung und Verbesserung des Pakets zu finden. Alle Pull-Requests werden überprüft, und wenn jemand interessiert und geeignet ist, werde ich ihn gerne in das Projekt einbeziehen. Sie können mich gerne unter dorgreen1 at gmail kontaktieren.
Es gibt einige Python-Paketanalyse-Module, dieses unterscheidet sich dadurch, dass es eigentlich keine Pakete analysiert, sondern lediglich die Fähigkeit von tshark (Wireshark-Befehlszeilentool) nutzt, XMLs zu exportieren, um dessen Analyse zu verwenden.
Dieses Paket ermöglicht das Parsen aus einer Capture-Datei oder einem Live-Capture unter Verwendung aller installierten Wireshark-Dissectoren.
Getestet unter Windows/Linux.
Installation
Versionsunterstützung
Python 3.7+ wird unterstützt. Eine nicht unterstützte Python-2-Version existiert als pyshark-legacy.
Unterstützt alle modernen Versionen von tshark / wireshark, aber bestimmte Funktionen können in älteren Versionen nicht verfügbar sein.
Führen Sie einfach den folgenden Befehl aus, um die neueste Version von pypi zu installieren:
pip install pyshark
Oder aus dem Git-Repository installieren:
git clone https://github.com/KimiNewt/pyshark.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 über libxml erhalten, führen Sie Folgendes aus:
xcode-select --install
pip install libxml
Sie müssen wahrscheinlich eine EULA für XCode akzeptieren, seien Sie also bereit, im GUI auf einen „Akzeptieren“-Dialog 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: Gibt an, ob Pakete nach dem Lesen via next() behalten werden sollen. Wird verwendet, um Speicher beim Lesen großer Captures 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 Anzeigefilter (Wireshark), der auf das Capture angewendet wird, bevor es gelesen wird.
- param only_summaries: Nur Paketzusammenfassungen erstellen, viel schneller, enthält aber sehr wenig Informationen.
- param disable_protocol: Erkennung eines Protokolls deaktivieren (tshark > Version 2).
- param decryption_key: Schlüssel, der zur Verschlüsselung und Entschlüsselung des erfassten Datenverkehrs verwendet wird.
- param encryption_type: Verschlüsselungsstandard, der im erfassten 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 Schnittstelle, die belauscht werden soll. Wenn nicht angegeben, wird die erste verfügbare genommen.
- param bpf_filter: BPF-Filter, der auf Pakete angewendet werden soll.
- param display_filter: Anzeigefilter (Wireshark) zum Anwenden.
- param only_summaries: Nur Paketzusammenfassungen erstellen, viel schneller, enthält aber sehr wenig Informationen.
- param disable_protocol: Erkennung eines Protokolls deaktivieren (tshark > Version 2).
- param decryption_key: Schlüssel, der zur Verschlüsselung und Entschlüsselung des erfassten Datenverkehrs verwendet wird.
- param encryption_type: Verschlüsselungsstandard, der im erfassten 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 erfasste 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 Schnittstelle, die belauscht werden soll. Wenn nicht angegeben, wird die erste verfügbare genommen.
- param bpf_filter: BPF-Filter, der auf Pakete angewendet werden soll.
- param display_filter: Anzeigefilter (Wireshark) zum Anwenden.
- param only_summaries: Nur Paketzusammenfassungen erstellen, viel schneller, enthält aber sehr wenig Informationen.
- param disable_protocol: Erkennung eines Protokolls deaktivieren (tshark > Version 2).
- param decryption_key: Schlüssel, der zur Verschlüsselung und Entschlüsselung des erfassten Datenverkehrs verwendet wird.
- param encryption_type: Verschlüsselungsstandard, der im erfassten 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 erfasste Pakete in dieser Datei speichern.
Lesen von einer Live-Remote-Schnittstelle:
>>> capture = pyshark.RemoteCapture('192.168.1.101', 'eth0')
>>> capture.sniff(timeout=50)
>>> capture
Weitere Optionen
- param remote_host: Der entfernte Host, auf dem erfasst werden soll (IP oder Hostname). Sollte rpcapd ausführen.
- param remote_interface: Die entfernte Schnittstelle auf dem entfernten Rechner, die erfasst werden soll. Beachten Sie, dass es unter Windows nicht der Geräte-Anzeigename 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 (tcpdump)-Filter, der vor dem Lesen auf das Capture angewendet wird.
- param only_summaries: Nur Paketzusammenfassungen erstellen, viel schneller, enthält aber sehr wenig Informationen.
- param disable_protocol: Erkennung eines Protokolls deaktivieren (tshark > Version 2).
- param decryption_key: Schlüssel, der zur Verschlüsselung und Entschlüsselung des erfassten Datenverkehrs verwendet wird.
- param encryption_type: Verschlüsselungsstandard, der im erfassten Datenverkehr verwendet wird (muss entweder 'WEP', 'WPA-PWD' oder 'WPA-PWK' sein. Standard ist WPA-PWK).
- param tshark_path: Pfad zur tshark-Binärdatei.
Zugreifen auf Paketdaten: