scapy
这个库真的🐄 🍺,有时间一定要撸下来,拆轮子看看!!
import scapy.all as sy
sy.conf.iface = "wifi0"
报了这个warning:
WARNING: This interface is not specified in any provider ! See conf.ifaces output
开始我也没在意,tmd后来发送ARP请求:
responses, unanswer = sy.srp(
sy.Ether(dst="ff:ff:ff:ff:ff:ff")/sy.ARP(pdst=ip_address),
timeout=2,
retry=10
)
报了这个错:
[*] Setting up wifi0
Traceback (most recent call last):
File "x\x.py", line 90, in <module>
gateway_mac = get_mac(gateway_ip)
File "x\x.py", line 37, in get_mac
responses, unanswer = sy.srp(
File "x\site-packages\scapy\sendrecv.py", line 675, in srp
s = iface.l2socket()(promisc=promisc, iface=iface,
File "x\site-packages\scapy\arch\libpcap.py", line 406, in __init__
self.ins = open_pcap(iface, MTU, self.promisc, 100,
File "x\site-packages\scapy\arch\windows\__init__.py", line 704, in open_pcap
return _orig_open_pcap(iface_network_name, *args, **kargs)
File "x\site-packages\scapy\arch\libpcap.py", line 254, in __init__
raise OSError(error)
OSError: b'Error opening adapter: \xcf\xb5\xcd\xb3\xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xx\\xe8\xb1\xb8\xa1\xa3 (20)'
网上资料好少:
参考了这个:
https://stackoverflow.com/questions/71355130/how-to-fix-oserror-berror-opening-adapter-cannot-find-specified-device-20
感觉像是网卡那里的warning问题
这时,刷另一篇博客,看到了他是 scapy 安装的有问题,但是他用了这样一个函数:
sy.conf.iface.is_valid()
就是检查一下,当前程序配置的这个网卡是否能用
>>> sy.conf.iface.is_valid()
False
果然,原来是网卡的问题啊!
import scapy.all as sy
sy.conf.iface = "wifi0" # <---------- 也就是这里的名字有问题
哦,原来我昨天是脱了裤子放屁啊…
我昨天一看这一堆都是中文,连个英语网卡名字都没有 (实际上是那个 WLAN 2)
于是我用 WSl 运行 ifconfig
看见了吗,这里有个 wifi0
我以为网卡的名字配置为 他就行了hhhh
再试一下:
import scapy.all as sy
sy.conf.iface = "WLAN 2"
验证一下:
>>> sy.conf.iface
<NetworkInterface_Win Intel(R) Wireless-AC XXXX #X []>
>>> sy.conf.iface.is_valid()
True
诶,这就可以啦
推测一下,如果在 WSL 的windows 内置 ubuntu系统里,运行这个程序,估计网卡的名字就得配置为wifi0
,我猜的啊,hxdm自己验证一下