Scapy сниффер пакетов инициирующее действие на каждого обнюхал пакет

я использую scapy С python нюхать живой трафик.

capture=sniff(iface="<My Interface>", filter="tcp")

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

Я хочу обработать пакет и отобразить несколько полей пакета, как только он будет обнюхан. т. е. при обнюхивании пакета он вызовет функцию, где я могу проанализировать этот пакет. И это продолжалось бы в течение нескольких пакетов.

у меня есть функция, которую я использую с захваченным список пакетов. Но я не могу использовать его для каждого live-пакета.

как этого добиться? Возможно ли это с scapy или мне нужно установить любой другой пакет?

2 ответов


параметры функции sniff должны быть похожи на приведенный ниже код.:

from scapy.all import *

def pkt_callback(pkt):
    pkt.show() # debug statement

sniff(iface="<My Interface>", prn=pkt_callback, filter="tcp", store=0)

store=0 говорит не хранить любой полученный пакет и prn говорит отправить pkt до pkt_callback.

источник.

как отметил Йоэль, если требуется только одна действие, lambda может использоваться с prn вместо новой функции, как в этом случае:

sniff(iface="<My Interface>", prn = lambda x: x.show(), filter="tcp", store=0)

это можно сделать с помощью тега на