Я знаю, что это очень старый вопрос, но я просто наткнулся на него и подумал, что дам мой ответ. С этой проблемой я сталкивался несколько раз на протяжении многих лет, и я продолжаю возвращаться к dpkt . Первоначально из очень способной dugsong , dpkt - это, прежде всего, библиотека создания / анализа пакетов. Я понимаю, что разбор pcap был запоздалой мыслью, но он оказался очень полезным, потому что разбор заголовков pcaps, IP, TCP и TCP не вызывает затруднений. Он анализирует все протоколы более высокого уровня, которые становятся временным поглотителем! (Я написал свою собственную библиотеку разбора pyap pcap, прежде чем нашел dpkt)
Документация по использованию функции синтаксического анализа pcap немного тонкая. Вот пример из моих файлов:
import socket
import dpkt
import sys
pcapReader = dpkt.pcap.Reader(file(sys.argv[1], "rb"))
for ts, data in pcapReader:
ether = dpkt.ethernet.Ethernet(data)
if ether.type != dpkt.ethernet.ETH_TYPE_IP: raise
ip = ether.data
src = socket.inet_ntoa(ip.src)
dst = socket.inet_ntoa(ip.dst)
print "%s -> %s" % (src, dst)
Надеюсь, это поможет следующему парню пересечь этот пост!