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)