
غلاف بايثون لـ tshark، يسمح بتحليل حزم بايثون باستخدام محللات wireshark (إصدار Python2 القديم)
هذا المستودع مخصص للإصدار القديم من pyshark، الذي يعمل على Python2.7+. يتلقى إصلاحات الأخطاء فقط بعد الإصدار 0.3.8. للإصدار الجديد الذي يُدعم فقط Python 3.5+، يُرجى استخدام المستودع الرئيسي
غلاف بايثون لـ tshark، يسمح بتحليل حزم بايثون باستخدام أدوات فك تشفير 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
سترغب على الأرجح في قبول اتفاقية ترخيص المستخدم النهائي (EULA) لـ XCode لذا كن مستعدًا للنقر على مربع حوار "قبول" في واجهة المستخدم الرسومية.
>>> 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)
# وبعض السمات الجديدة أيضًا:
>>> 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. المساهمات في هذا المشروع مقبولة بموجب نفس الترخيص.