
tshark के लिए Python रैपर, जो wireshark डिसेक्टरों का उपयोग करके Python पैकेट पार्सिंग की अनुमति देता है (Python2 विरासत संस्करण)
यह रिपॉजिटरी pyshark के पुराने संस्करण के लिए है, जो Python2.7+ पर काम करता है। यह संस्करण 0.3.8 के बाद केवल बग फिक्स प्राप्त करता है। नए संस्करण के लिए जो केवल Python 3.5+ पर समर्थित है, कृपया मुख्य रेपो का उपयोग करें।
tshark के लिए Python रैपर, जो wireshark डिसेक्टर्स का उपयोग करके पायथन पैकेट पार्सिंग की अनुमति देता है।
विस्तृत दस्तावेज़ीकरण: http://kiminewt.github.io/pyshark
काफी कुछ पायथन पैकेट पार्सिंग मॉड्यूल हैं, यह अलग है क्योंकि यह वास्तव में किसी भी पैकेट को पार्स नहीं करता है, यह केवल tshark (wireshark कमांड-लाइन उपयोगिता) की XML निर्यात करने की क्षमता का उपयोग करता है ताकि इसकी पार्सिंग का उपयोग किया जा सके।
यह पैकेज कैप्चर फ़ाइल या लाइव कैप्चर से पार्सिंग की अनुमति देता है, जिसमें आपके द्वारा इंस्टॉल किए गए सभी wireshark डिसेक्टर्स का उपयोग किया जाता है। विंडोज/लिनक्स पर परीक्षण किया गया।
pypi से नवीनतम स्थापित करने के लिए निम्नलिखित चलाएं
pip install pyshark-legacy
या git रिपॉजिटरी से स्थापित करें:
git clone https://github.com/KimiNewt/pyshark-legacy.git
cd pyshark/src
python setup.py install
आपको libxml स्थापित करने की आवश्यकता हो सकती है जो अप्रत्याशित हो सकता है। यदि आपको clang से त्रुटि या libxml के बारे में त्रुटि संदेश प्राप्त होता है, तो निम्नलिखित चलाएं:
xcode-select --install
pip install libxml
आपको संभवतः XCode के लिए एक EULA स्वीकार करना होगा, इसलिए GUI में 'स्वीकार करें' संवाद पर क्लिक करने के लिए तैयार रहें।
>>> 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
डेटा को कई तरीकों से एक्सेस किया जा सकता है। पैकेट को परतों में विभाजित किया जाता है, पहले आपको उपयुक्त परत तक पहुँचना होगा और फिर आप अपना फ़ील्ड चुन सकते हैं।
निम्नलिखित सभी काम करते हैं:
>>> 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)
# And some new attributes as well:
>>> p.ip.addr.int_value
167772170
>>> p.ip.addr.binary_value
'\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')
यह परियोजना MIT लाइसेंस के तहत लाइसेंस प्राप्त है। इस परियोजना में योगदान उसी लाइसेंस के तहत स्वीकार किए जाते हैं।