Как я могу отфильтровать pcap файл определенным протоколом с помощью Python?

У меня есть некоторые pcap файлы, и я хочу отфильтровать протоколом, т.е. если я захочу отфильтровать протоколом HTTP, то что-либо кроме пакетов HTTP останется в pcap файле.

Существует инструмент, названный openDPI, и это идеально подходит для того, в чем я нуждаюсь, но нет никакой обертки для языка Python.

Кто-либо знает какие-либо модули Python, которые могут сделать то, в чем я нуждаюсь?

Спасибо

Редактирование 1:

HTTP-фильтрация была просто примером, существует много протоколов, которые я хочу отфильтровать.

Редактирование 2:

Я попробовал Scapy, но я не изображаю, как отфильтровать правильно. Фильтр только принимает выражение Фильтра пакетов Беркли, т.е. я не могу применить MSN, или HTTP или другой определенный фильтр от верхнего уровня. Кто-либо может помочь мне?

11
задан coelhudo 12 February 2010 в 18:24
поделиться

2 ответа

Что-то вроде

from pcapy import open_offline
from impacket.ImpactDecoder import EthDecoder
from impacket.ImpactPacket import IP, TCP, UDP, ICMP

decoder = EthDecoder()

def callback(jdr, data):
    packet = decoder.decode(data)
    child = packet.child()
    if isinstance(child, IP):
        child = packet.child()
        if isinstance(child, TCP):
            if child.get_th_dport() == 80:
                print 'HTTP'

pcap = open_offline('net.cap')
pcap.loop(0, callback)

с использованием

http://oss.coresecurity.com/projects/impacket.html

4
ответ дан 3 December 2019 в 01:29
поделиться

Попробуйте pylibpcap .

3
ответ дан 3 December 2019 в 01:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: