Scapy sniff filter работает в scapy shell, но не в коде - PullRequest
0 голосов
/ 23 января 2020

Я использую этот фильтр для прослушивания ICMP-ответов:

sniff(iface=iface,filter="ip proto \\icmp", prn=printp, count=0)

Он отлично работает в оболочке scapy, но если я запускаю его в сценарии python, ничего не происходит. Даже ошибки не возникает.

Код пакета, который я отправляю, выглядит примерно так:

    s = conf.L2socket(iface='enp0s3')
    packet = Ether()/IP(id=3000, ttl=1, src=srcip, dst=dstip)/UDP(sport=sport, dport=dport) 
    s.send(packet)

Я даже вижу отвечающий пакет в wireshark.

Python версия: 3.9.6

ОС: Ubuntu 18.04.3

Версия Scapy: 2.4.3

Если я использую функцию lfilter, она отлично работает.

sniff(iface=iface,lfilter=lambda pkt: ICMP in pkt, prn=printp, count=0)

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

...