
Python-Wrapper für tshark, der Python-Paketparsing mittels Wireshark-Dissectoren ermöglicht (Python2-Legacy-Version)
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.
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
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.
>>> 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
...
>>> 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
>>> 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
>>> capture = pyshark.RemoteCapture('192.168.1.101', 'eth0')
>>> capture.sniff(timeout=50)
>>> capture
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:
>>> packet['ip'].dst
192.168.0.1
>>> packet.ip.src
192.168.0.100
>>> packet[2].src
192.168.0.100
Um zu testen, ob eine Schicht in einem Paket vorhanden ist, können Sie ihren Namen verwenden:
>>> 'IP' in packet
True
Um alle möglichen Feldnamen zu sehen, verwenden Sie das Attribut packet.layer.field_names (z.B. packet.ip.field_names) oder die Autovervollständigungsfunktion Ihres Interpreters.
Sie können auch die ursprünglichen Binärdaten eines Feldes oder eine hübsche Beschreibung davon erhalten:
>>> p.ip.addr.showname
Source or Destination Address: 10.0.0.10 (10.0.0.10)
# Und auch einige neue Attribute:
>>> p.ip.addr.int_value
167772170
>>> p.ip.addr.binary_value
'\n\x00\x00\n'
Pyshark unterstützt die automatische Entschlüsselung von Spuren mittels der Standards WEP, WPA-PWD und WPA-PSK (WPA-PWD ist der Standard).
>>> cap1 = pyshark.FileCapture('/tmp/capture1.cap', decryption_key='password')
>>> cap2 = pyshark.LiveCapture(interface='wi0', decryption_key='password', encryption_type='wpa-psk')
Ein Tupel der unterstützten Verschlüsselungsstandards, SUPPORTED_ENCRYPTION_STANDARDS, existiert in jeder Capture-Klasse.
>>> pyshark.FileCapture.SUPPORTED_ENCRYPTION_STANDARDS
('wep', 'wpa-pwd', 'wpa-psk')
>>> pyshark.LiveCapture.SUPPORTED_ENCRYPTION_STANDARDS
('wep', 'wpa-pwd', 'wpa-psk')
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Beiträge zu diesem Projekt werden unter derselben Lizenz akzeptiert.