2011-02-09 2 views
23

Я хотел бы попросить рекомендации библиотеки pcap для python. Я выполняю проект по разбору файла .pcap. Я искал google и нашел pylibpcap. Есть ли что-нибудь еще? Какой lib вы предпочитаете и почему?pcap python library?

спасибо.

+0

Привет, PSS, так как вы завершили свой проект? к которому подошел ты? –

ответ

16

scapy Try. Это очень мощная программа для пакетной проверки, манипуляции и создания.

Вы можете использовать его для build your own tools.

+0

См. Новую версию scapy по адресу http://github.com/phaethon/scapy. Он совместим с python3 и включает в себя новые функции. –

+4

Имейте в виду, что scapy, необычно для библиотек python, является GPLv2 - обратите внимание на исключения в библиотеке, поэтому при вводе import scapy ваш код будет GPLv2. Если вы в порядке с этим, подойдите к нему. – Hal

14

Я попробовал это, а затем попробовал pcapy. Я выбираю pcapy, потому что мое использование было похоже на пример, который я нашел googling.

http://snipplr.com/view/3579/live-packet-capture-in-python-with-pcapy/ (или увидеть один и тот же код, скопированный ниже)

import pcapy 
from impacket.ImpactDecoder import * 

# list all the network devices 
pcapy.findalldevs() 

max_bytes = 1024 
promiscuous = False 
read_timeout = 100 # in milliseconds 
pc = pcapy.open_live("name of network device to capture from", max_bytes, 
    promiscuous, read_timeout) 

pc.setfilter('tcp') 

# callback for received packets 
def recv_pkts(hdr, data): 
    packet = EthDecoder().decode(data) 
    print packet 

packet_limit = -1 # infinite 
pc.loop(packet_limit, recv_pkts) # capture packets 
5

Я рекомендую использовать Pyshark. это оболочка для tshark. он также поддерживает весь фильтр tshark, декодер lib, ... и прост в использовании! Это большой пакет для разбора файла .pcap, а также livecapturing

https://pypi.python.org/pypi/pyshark

образца коды (по ссылке):

import pyshark 
cap = pyshark.FileCapture('/root/log.cap') 
cap 
>>> <FileCapture /root/log.cap> 
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: 684s 
     Identification: 0x254f (9551) 
     Flags: 0x00 
     Fragment offset: 0 
     Time to live: 1 
     Protocol: UDP (17) 
     Header checksum: 0xe148 [correct] 
     Source: BLANKED 
     Destination: BLANKED 
    ... 
dir(cap[0]) 
['__class__', '__contains__', '__delattr__', '__dict__', '__dir__', '__doc__', '__format__', '__getattr__', '__getattribute__', '__getitem__', '__getstate__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_packet_string', 'bssgp', 'captured_length', 'eth', 'frame_info', 'gprs-ns', 'highest_layer', 'interface_captured', 'ip', 'layers', 'length', 'number', 'pretty_print', 'sniff_time', 'sniff_timestamp', 'transport_layer', 'udp'] 
cap[0].layers 
[<ETH Layer>, <IP Layer>, <UDP Layer>, <GPRS-NS Layer>, <BSSGP Layer>] 
....