Python 3 - Scapy嗅探过滤器选项

问题描述 投票:-2回答:1

我正在使用Scapy嗅探功能来跟踪本地接口上的传入流量。我想隔离并打印特定的数据包。为此,我必须匹配TCP / UDP / IP头的特定字段中的值。是否有详细的文件解释Scapy嗅探过滤器的用法?如何设置过滤器以引用某些数据包字段值?

例如,我需要只显示SYN + ACK数据包的过滤器。出于某种原因,这不符合预期:

sniff(iface="Intel(R) Ethernet Connection (4) I219-LM",
      filter="ip src x.x.x.x and tcp-syn !=0 and tcp-rst !=1",
      prn=lambda x: x.summary)
python python-3.x network-programming scapy
1个回答
1
投票

过滤器使用标准BPF语法编写,如https://www.wireshark.org/docs/man-pages/pcap-filter.html所述

对于您的用例(仅限SYN-ACK数据包),我认为它会是这样的:

filter = "host x.x.x.x and (tcp[tcpflags] & (tcp-syn|tcp-ack)) == (tcp-syn|tcp-ack)"

sniff(iface="Intel(R) Ethernet Connection (4) I219-LM",
      filter=filter, prn=lambda x: x.summary)
© www.soinside.com 2019 - 2024. All rights reserved.