
tshark के लिए Python रैपर, जो wireshark dissectors का उपयोग करके python पैकेट पार्सिंग की अनुमति देता है
tshark के लिए Python रैपर, जो wireshark dissectors का उपयोग करके python पैकेट पार्सिंग की अनुमति देता है।
विस्तृत दस्तावेज़ीकरण: http://kiminewt.github.io/pyshark
योगदानकर्ताओं की तलाश है - विभिन्न कारणों से मुझे इस समय पैकेज को बनाए रखने और बढ़ाने के लिए समय निकालने में कठिनाई हो रही है। किसी भी पुल-अनुरोध की समीक्षा की जाएगी और यदि कोई रुचि रखता है और उपयुक्त है, तो मुझे उन्हें परियोजना में शामिल करने में खुशी होगी। बेझिझक मुझे dorgreen1 at gmail पर मेल करें।
काफी कुछ python पैकेट पार्सिंग मॉड्यूल हैं, यह इस मायने में अलग है कि यह वास्तव में किसी भी पैकेट को पार्स नहीं करता है, यह केवल अपने पार्सिंग का उपयोग करने के लिए tshark (wireshark कमांड-लाइन उपयोगिता) की XML निर्यात करने की क्षमता का उपयोग करता है।
यह पैकेज एक कैप्चर फ़ाइल या लाइव कैप्चर से पार्सिंग की अनुमति देता है, जिसमें आपके द्वारा स्थापित सभी wireshark dissectors का उपयोग किया जाता है। Windows/Linux पर परीक्षण किया गया।
Python 3.7+ समर्थित है। एक असमर्थित Python 2 संस्करण pyshark-legacy के रूप में मौजूद है।
tshark / wireshark के सभी आधुनिक संस्करणों का समर्थन करता है, लेकिन कुछ सुविधाएँ पुराने संस्करणों पर अनुपलब्ध हो सकती हैं।
pypi से नवीनतम स्थापित करने के लिए बस निम्नलिखित चलाएँ:
pip install pyshark
या git रिपॉजिटरी से स्थापित करें:
git clone https://github.com/KimiNewt/pyshark.git
cd pyshark/src
python setup.py install
आपको libxml स्थापित करने की आवश्यकता हो सकती है जो अप्रत्याशित हो सकता है। यदि आपको clang से कोई त्रुटि या libxml के बारे में कोई त्रुटि संदेश प्राप्त होता है, तो निम्नलिखित चलाएँ:
xcode-select --install
pip install libxml
आपको संभवतः XCode के लिए एक EULA स्वीकार करना होगा, इसलिए GUI में "Accept" डायलॉग पर क्लिक करने के लिए तैयार रहें।
>>> import pyshark
>>> cap = pyshark.FileCapture('/tmp/mycapture.cap')
>>> cap
<FileCapture /tmp/mycapture.cap (589 पैकेट)>
>>> print cap[0]
Packet (लंबाई: 698)
Layer ETH:
Destination: BLANKED
Source: BLANKED
Type: IP (0x0800)
Layer IP:
Version: 4
Header Length: 20 बाइट्स
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 पैकेट)>
>>> capture[3]
<UDP/HTTP Packet>
for packet in capture.sniff_continuously(packet_count=5):
print('अभी आया:', packet)
>>> capture = pyshark.LiveRingCapture(interface='eth0')
>>> capture.sniff(timeout=50)
>>> capture
<LiveCapture (5 पैकेट)>
>>> capture[3]
<UDP/HTTP Packet>
for packet in capture.sniff_continuously(packet_count=5):
print('अभी आया:', packet)
>>> capture = pyshark.RemoteCapture('192.168.1.101', 'eth0')
>>> capture.sniff(timeout=50)
>>> capture
डेटा तक कई तरीकों से पहुँचा जा सकता है। पैकेट को परतों में विभाजित किया गया है, पहले आपको उपयुक्त परत तक पहुँचना होगा और फिर आप अपना फ़ील्ड चुन सकते हैं।
निम्नलिखित सभी काम करते हैं:
>>> packet['ip'].dst
192.168.0.1
>>> packet.ip.src
192.168.0.100
>>> packet[2].src
192.168.0.100
यह जाँचने के लिए कि क्या कोई परत किसी पैकेट में है, आप उसका नाम उपयोग कर सकते हैं:
>>> 'IP' in packet
True
सभी संभावित फ़ील्ड नाम देखने के लिए, packet.layer.field_names विशेषता (जैसे packet.ip.field_names) या अपने इंटरप्रेटर पर ऑटोकम्प्लीट फ़ंक्शन का उपयोग करें।
आप किसी फ़ील्ड का मूल बाइनरी डेटा या उसका सुंदर विवरण भी प्राप्त कर सकते हैं:
>>> p.ip.addr.showname
Source or Destination Address: 10.0.0.10 (10.0.0.10)
# और कुछ नई विशेषताएँ भी:
>>> p.ip.addr.int_value
167772170
>>> p.ip.addr.binary_value
b'\n\x00\x00\n'
Pyshark WEP, WPA-PWD, और WPA-PSK मानकों (WPA-PWD डिफ़ॉल्ट है) का उपयोग करके ट्रेस के स्वचालित डिक्रिप्शन का समर्थन करता है।
>>> cap1 = pyshark.FileCapture('/tmp/capture1.cap', decryption_key='password')
>>> cap2 = pyshark.LiveCapture(interface='wi0', decryption_key='password', encryption_type='wpa-psk')
समर्थित एन्क्रिप्शन मानकों का एक टूपल, SUPPORTED_ENCRYPTION_STANDARDS, प्रत्येक कैप्चर वर्ग में मौजूद है।
>>> pyshark.FileCapture.SUPPORTED_ENCRYPTION_STANDARDS
('wep', 'wpa-pwd', 'wpa-psk')
>>> pyshark.LiveCapture.SUPPORTED_ENCRYPTION_STANDARDS
('wep', 'wpa-pwd', 'wpa-psk')
Pyshark डिस्प्ले फ़िल्टर एप्लिकेशन-केंद्रित ट्रैफ़िक के विश्लेषण में सहायक हो सकते हैं। BPF फ़िल्टर Wireshark के डिस्प्ले फ़िल्टर जितना लचीलापन प्रदान नहीं करते हैं।
>>> cap1 = pyshark.FileCapture('/tmp/capture1.cap', display_filter="dns")
>>> cap2 = pyshark.LiveCapture(interface='en0', display_filter="tcp.analysis.retransmission")
यह परियोजना MIT के तहत लाइसेंस प्राप्त है। इस परियोजना में योगदान उसी लाइसेंस के तहत स्वीकार किए जाते हैं।