4
我想知道如何验证我从Scapy中的sr1()
函数收到的数据包是否包含TCP层,以便对TCP标志进行一些处理。如何验证Scapy中的数据包是否有TCP层
我想知道如何验证我从Scapy中的sr1()
函数收到的数据包是否包含TCP层,以便对TCP标志进行一些处理。如何验证Scapy中的数据包是否有TCP层
你有两个选择,in
操作符是一个。
>>> TCP in pkt
True
>>> if TCP in pkt:
... # Handle TCP Flags
Scapy中的数据包对象也有一个叫做haslayer()
的函数。
>>> pkt = IP()/TCP()
>>> pkt.haslayer(TCP)
1
>>> pkt2 = IP()/UDP()
>>> pkt2.haslayer(TCP)
0
>>> Packet.haslayer.__doc__
'true if self has a layer that is an instance of cls. Superseded by "cls in self" syntax.'
非常感谢您RyPeck的回答,问题是,我要检查数据包是Scapy的一个SR1()命令的结果,因此,这些选项并没有为我遗憾的是工作。我得到了这个错误信息:AttributeError:'NoneType'对象没有属性'haslayer' – farfalla
听起来就是这样,因为你实际上并没有从sr1中取回数据包。 – RyPeck