我和朋友正在使用Scapy库在Python中制作一个嗅探应用程序。我们有一个GUI界面,我们可以选择过滤器和协议。我们想使用一个或多个过滤器来嗅探网络但不知道该怎么做。现在我们尝试了以下代码:
capture=scapy.sniff(filter="tcp and udp",timeout=5)
print(capture)
它运行良好,但只使用第一个过滤器(在本例中为tcp过滤器)。我们还尝试使用以下代码,但相同:
capture1=scapy.sniff(filter="tcp",timeout=5)
capture2=scapy.sniff(filter="udp",timeout=5)
print(capture1)
print(capture2)
那么,是否可以使用多个过滤器进行嗅探,如果有,您有什么想法吗?
由于
答案 0 :(得分:1)
你告诉Scapy要嗅探TCP和UDP的数据包。
当我尝试这个(Linux,当前的Scapy开发版本)时,我收到一条警告消息tcpdump: expression rejects all packets
并且未应用过滤器。
您可能希望使用or
代替and
:capture=scapy.sniff(filter="tcp or udp",timeout=5)
。