我一直在关注Seitz的黑帽蟒蛇书,他举了一个使用scapy库捕获网络流量的例子。
import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import *
def packet_callback(packet):
print packet.show()
sniff(filter="",iface="any",prn=packet_callback, count = 1)
我按以下方式运行上述功能:sudo python sniffer.py
并将google chrome打开到页面。没有数据包被捕获。我对域执行ping请求,但没有捕获任何内容。我期待print packet.show()
行打印发送的第一个数据包。
所有这些都是在无线互联网连接上的Macbook Pro上运行的。
有人可以帮我解决问题吗?
答案 0 :(得分:2)
如果你想让scapy嗅到所有界面,只需删除iface =" any"参数。因为"任何"不是一个界面因此scapy无法嗅探。
同时删除filter参数,因为它没有应用任何过滤器。 正确的命令就像这样。
sniff(prn=packet_callback, count = 1)
答案 1 :(得分:1)
iface参数需要接口的确切名称。您很可能没有名为ANY的界面。您可以省略参数,这很可能是您在这种情况下必须执行的操作,或使用实际的接口名称(例如" eth0")。
当我尝试你的代码时,我实际上得到了一个异常"没有这样的设备"这是您运行的实际代码吗?
另外,请写scapy版本。我使用的是python3版本,您可以从http://github.com/phaethon/scapy或scapy-python3获取。