在win10环境下,想用scapy写一个通过arp协议扫描局域网的程序,主要是想看看有多少个设备在线。多次尝试未果,显示的错误信息有时为Interface is invalid,有时Interface is invalid (no pcap match found) ,为了让程序能尽快通过,在网上查找了一些大神早就测试通过的代码,同样显示该错误。
后来在网上查找原因,有大神说出现这个问题是Scapy找不到网络接口相关信息,scapy模块是用winpcap来获取网卡相关信息的。用show_interfaces()测试了一下,是可以显示各类所有网络接口的信息的。
查了一下,WinPcap是Windows平台下访问网络数据链路层的开源库,可以捕获与发送原始数据包,并提供数据包过滤、统计和远程捕获等功能。估计是在通讯时,winpcap无法识别这个网络接口,导致数据包无法正常发送和接收。
以前为下载微信公众号的视频,曾经装过WinPcap,查看WinPcap的官网,建议使用npcap,下面附上网址。很奇怪,有些网连不上这个网址,我是换了一个网,才把安装包下载下来的。
npcap.comhttps://npcap.com/#download下载安装后,以前的问题全部解决,可以通过arp对整个局域网进行扫描。
心得:有时出现问题不是因为你的代码有问题,而是开发环境有问题。
有时还是要自信一点,当你跳出自己的小圈子去分析,没准原原的问题一下都能解决了。