带有SYN ACK的Scapy sniff过滤器tcp

时间:2016-08-06 10:44:44

标签: python-2.7 scapy

pkts=sniff(offline='1.pcap',filter='tcp and tcp.flags.syn==1 and tcp.flags.ack==1')
pkts.summary()

没有过滤,输出包含所有数据包,如何过滤?

2 个答案:

答案 0 :(得分:0)

查看scappy filter usage,检查语法是否为:

pkts=sniff(offline='1.pcap',filter='tcp and tcp.flags.syn 1 and tcp.flags.ack 1')

您可能还需要添加lambda函数

pkts=sniff(offline='1.pcap',filter='tcp and tcp.flags.syn 1 and tcp.flags.ack 1',prn=lambda x:x.summary(), count=10)

但是,请注意issue 5146

  

当指定pcap文件来嗅探函数的离线参数时,如果过滤器参数提供了正确的BPF过滤器,则嗅探器不会应用任何过滤器。

该错误仍然悬而未决(使用possible pull request)。

答案 1 :(得分:0)

您可以将lfilter与lambda x:x.haslayer(TCP)

一起使用
# TCP-Flags
FIN = 0x01
SYN = 0x02
RST = 0x04
PSH = 0x08
ACK = 0x10
URG = 0x20
ECE = 0x40
CWR = 0x80

pkts=sniff(offline='1.pcap',lfilter = lambda x: x.haslayer(TCP) and x[TCP].flags & SYN and x[TCP].flags & ACK, prn=lambda x:x.summary(), count=10)