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)