pyshark
यह रिपॉजिटरी 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
Mac OS X
आपको 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
...
अन्य विकल्प
- param keep_packets: क्या next() के माध्यम से पैकेट पढ़ने के बाद उन्हें रखना है। बड़े कैप पढ़ते समय मेमोरी बचाने के लिए उपयोग किया जाता है।
- param input_file: या तो एक पथ या एक फ़ाइल-जैसी वस्तु जिसमें पैकेट कैप्चर फ़ाइल (PCAP, PCAP-NG..) या TShark xml है।
- param display_filter: इसे पढ़ने से पहले कैप पर लागू करने के लिए एक डिस्प्ले (wireshark) फिल्टर।
- param only_summaries: केवल पैकेट सारांश उत्पन्न करें, बहुत तेज़ लेकिन बहुत कम जानकारी शामिल करता है।
- param disable_protocol: एक प्रोटोकॉल का पता लगाना अक्षम करें (tshark > संस्करण 2)
- param decryption_key: कैप्चर किए गए ट्रैफ़िक को एन्क्रिप्ट और डिक्रिप्ट करने के लिए उपयोग की जाने वाली कुंजी।
- param encryption_type: कैप्चर किए गए ट्रैफ़िक में उपयोग किए जाने वाले एन्क्रिप्शन का मानक (या तो 'WEP', 'WPA-PWD', या 'WPA-PWK' होना चाहिए। डिफ़ॉल्ट WPA-PWK है)।
- param tshark_path: tshark बाइनरी का पथ।
लाइव इंटरफ़ेस से पढ़ना:
>>> 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
अन्य विकल्प
- param interface: सूंघने के लिए इंटरफ़ेस का नाम। यदि नहीं दिया गया, तो पहला उपलब्ध लेता है।
- param bpf_filter: पैकेट पर उपयोग करने के लिए BPF फिल्टर।
- param display_filter: उपयोग करने के लिए डिस्प्ले (wireshark) फिल्टर।
- param only_summaries: केवल पैकेट सारांश उत्पन्न करें, बहुत तेज़ लेकिन बहुत कम जानकारी शामिल करता है।
- param disable_protocol: एक प्रोटोकॉल का पता लगाना अक्षम करें (tshark > संस्करण 2)
- param decryption_key: कैप्चर किए गए ट्रैफ़िक को एन्क्रिप्ट और डिक्रिप्ट करने के लिए उपयोग की जाने वाली कुंजी।
- param encryption_type: कैप्चर किए गए ट्रैफ़िक में उपयोग किए जाने वाले एन्क्रिप्शन का मानक (या तो 'WEP', 'WPA-PWD', या 'WPA-PWK' होना चाहिए। डिफ़ॉल्ट WPA-PWK है)।
- param tshark_path: tshark बाइनरी का पथ।
- param output_file: कैप्चर किए गए पैकेट को इस फ़ाइल में अतिरिक्त रूप से सहेजें।
रिंग बफ़र का उपयोग करके लाइव इंटरफ़ेस से पढ़ना
>>> 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
अन्य विकल्प
- param ring_file_size: रिंग फ़ाइल का आकार kB में, डिफ़ॉल्ट 1024 है
- param num_ring_files: रखने के लिए रिंग फ़ाइलों की संख्या, डिफ़ॉल्ट 1 है
- param ring_file_name: रिंग फ़ाइल का नाम, डिफ़ॉल्ट /tmp/pyshark.pcap है
- param interface: सूंघने के लिए इंटरफ़ेस का नाम। यदि नहीं दिया गया, तो पहला उपलब्ध लेता है।
- param bpf_filter: पैकेट पर उपयोग करने के लिए BPF फिल्टर।
- param display_filter: उपयोग करने के लिए डिस्प्ले (wireshark) फिल्टर।
- param only_summaries: केवल पैकेट सारांश उत्पन्न करें, बहुत तेज़ लेकिन बहुत कम जानकारी शामिल करता है।
- param disable_protocol: एक प्रोटोकॉल का पता लगाना अक्षम करें (tshark > संस्करण 2)
- param decryption_key: कैप्चर किए गए ट्रैफ़िक को एन्क्रिप्ट और डिक्रिप्ट करने के लिए उपयोग की जाने वाली कुंजी।
- param encryption_type: कैप्चर किए गए ट्रैफ़िक में उपयोग किए जाने वाले एन्क्रिप्शन का मानक (या तो 'WEP', 'WPA-PWD', या 'WPA-PWK' होना चाहिए। डिफ़ॉल्ट WPA-PWK है)।
- param tshark_path: tshark बाइनरी का पथ।
- param output_file: कैप्चर किए गए पैकेट को इस फ़ाइल में अतिरिक्त रूप से सहेजें।
लाइव रिमोट इंटरफ़ेस से पढ़ना:
>>> capture = pyshark.RemoteCapture('192.168.1.101', 'eth0')
>>> capture.sniff(timeout=50)
>>> capture
अन्य विकल्प
- param remote_host: कैप्चर करने के लिए रिमोट होस्ट (IP या होस्टनाम)। rpcapd चल रहा होना चाहिए।
- param remote_interface: रिमोट मशीन पर कैप्चर करने के लिए रिमोट इंटरफ़ेस। ध्यान दें कि विंडोज पर यह डिवाइस डिस्प्ले नाम नहीं है बल्कि वास्तविक इंटरफ़ेस नाम है (जैसे \Device\NPF_..)।
- param remote_port: वह रिमोट पोर्ट जिस पर rpcapd सेवा सुन रही है।
- param bpf_filter: इसे पढ़ने से पहले कैप पर लागू करने के लिए BPF (tcpdump) फिल्टर।
- param only_summaries: केवल पैकेट सारांश उत्पन्न करें, बहुत तेज़ लेकिन बहुत कम जानकारी शामिल करता है।
- param disable_protocol: एक प्रोटोकॉल का पता लगाना अक्षम करें (tshark > संस्करण 2)
- param decryption_key: कैप्चर किए गए ट्रैफ़िक को एन्क्रिप्ट और डिक्रिप्ट करने के लिए उपयोग की जाने वाली कुंजी।
- param encryption_type: कैप्चर किए गए ट्रैफ़िक में उपयोग किए जाने वाले एन्क्रिप्शन का मानक (या तो 'WEP', 'WPA-PWD', या 'WPA-PWK' होना चाहिए। डिफ़ॉल्ट WPA-PWK है)।
- param tshark_path: tshark बाइनरी का पथ।
पैकेट डेटा तक पहुँचना:
डेटा को कई तरीकों से एक्सेस किया जा सकता है।
पैकेट को परतों में विभाजित किया जाता है, पहले आपको उपयुक्त परत तक पहुँचना होगा और फिर आप अपना फ़ील्ड चुन सकते हैं।
निम्नलिखित सभी काम करते हैं:
>>> 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) या अपने इंटरप्रेटर पर ऑटोकम्प्लीट फ़ंक्शन का उपयोग करें।
आप किसी फ़ील्ड का मूल बाइनरी डेटा, या उसका सुंदर विवरण भी प्राप्त कर सकते हैं: