2011-02-09 12 views
23

Chciałbym poprosić o rekomendację biblioteki pcap dla Pythona. Robię projekt na parsowaniu pliku .pcap. Szukałem google i znalazłem pylibpcap. Czy jest tam coś jeszcze? Którą wolisz i dlaczego?biblioteka pcap python?

dziękuję.

+0

Witam PSS, więc w jaki sposób ukończyłeś projekt? który się do ciebie zbliżył? –

Odpowiedz

16

Spróbuj scapy. Jest to bardzo potężny program do kontroli pakietów, manipulacji i tworzenia. Można używać go do build your own tools.

+0

Zobacz nową wersję scapy na http://github.com/phaethon/scapy. Jest kompatybilny z python3 i zawiera nowe funkcje. –

+4

Należy pamiętać, że wyjątkowa funkcja dla bibliotek Pythona to GPLv2 - zauważ, że nie są to wyjątki biblioteczne, więc wpisanie importu scapy zmusza twój kod do GPLv2 - Jeśli masz z tym dobrze, poszukaj go. – Hal

14

Próbowałem tego, a następnie próbowałem pcapy. Wybieram PCapy, ponieważ moje użycie było podobne do przykładu, który znalazłem w Google.

http://snipplr.com/view/3579/live-packet-capture-in-python-with-pcapy/ (lub zobaczyć ten sam kod skopiowany poniżej)

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

Polecam używać Pysharka. to jest opakowanie dla tshark. obsługuje również wszystkie filtry tshark, dekoder lib ... i łatwe w użyciu! Jest to świetny pakiet dla parsowania pliku .pcap a także livecapturing

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

przykładowy kod (z linkiem):

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>] 
.... 
Powiązane problemy