Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python scapy:发送数据包时出错_Python_Scapy - Fatal编程技术网

Python scapy:发送数据包时出错

Python scapy:发送数据包时出错,python,scapy,Python,Scapy,我是scapy的新手,我正在学习一些在线教程,但我被这个问题困住了。我可以通过有线连接发送数据包,但当我尝试使用无线连接时,我会遇到这个错误。我试着搜索谷歌,但毫无帮助。我希望找到解决办法。提前谢谢 我使用的是Windows8.1、Python2.7 >>> p=IP(dst="192.168.1.1")/ICMP() >>> sr1(p) Begin emission: ERROR: --- Error sending packets Traceback (

我是scapy的新手,我正在学习一些在线教程,但我被这个问题困住了。我可以通过有线连接发送数据包,但当我尝试使用无线连接时,我会遇到这个错误。我试着搜索谷歌,但毫无帮助。我希望找到解决办法。提前谢谢

我使用的是Windows8.1、Python2.7

>>> p=IP(dst="192.168.1.1")/ICMP()
>>> sr1(p)
Begin emission:
ERROR: --- Error sending packets
Traceback (most recent call last):
  File "c:\Python27\lib\site-packages\scapy\arch\windows\__init__.py", line 374,
 in sndrcv
    pks.send(p)
  File "c:\Python27\lib\site-packages\scapy\arch\pcapdnet.py", line 257, in send

    sx = str(cls()/x)
  File "c:\Python27\lib\site-packages\scapy\packet.py", line 268, in __str__
    return self.build()
  File "c:\Python27\lib\site-packages\scapy\packet.py", line 330, in build
    p = self.do_build()
  File "c:\Python27\lib\site-packages\scapy\packet.py", line 319, in do_build
    pkt = self.self_build()
  File "c:\Python27\lib\site-packages\scapy\packet.py", line 310, in self_build
    p = f.addfield(self, p, val)
  File "c:\Python27\lib\site-packages\scapy\fields.py", line 70, in addfield
    return s+struct.pack(self.fmt, self.i2m(pkt,val))
  File "c:\Python27\lib\site-packages\scapy\layers\l2.py", line 95, in i2m
    return MACField.i2m(self, pkt, self.i2h(pkt, x))
  File "c:\Python27\lib\site-packages\scapy\layers\l2.py", line 89, in i2h
    x = conf.neighbor.resolve(pkt,pkt.payload)
  File "c:\Python27\lib\site-packages\scapy\layers\l2.py", line 38, in resolve
    return self.resolvers[k](l2inst,l3inst)
  File "c:\Python27\lib\site-packages\scapy\layers\inet.py", line 732, in <lambd
a>
    conf.neighbor.register_l3(Ether, IP, lambda l2,l3: getmacbyip(l3.dst))
  File "c:\Python27\lib\site-packages\scapy\arch\windows\__init__.py", line 292,
 in getmacbyip
    ifip = str(pcapdnet.dnet.intf().get(iff)['addr'])
KeyError: 'addr'
INFO: --- Error sending packets
.........................
Received 25 packets, got 0 answers, remaining 1 packets
WARNING: __del__: don't know how to close the file descriptor. Bugs ahead ! Plea
se report this bug.
p=IP(dst=“192.168.1.1”)/ICMP() >>>sr1(p) 开始排放: 错误:---发送数据包时出错 回溯(最近一次呼叫最后一次): 文件“c:\Python27\lib\site packages\scapy\arch\windows\\uuuu init\uuuu.py”,第374行, 在sndrcv中 发送程序包(p) 文件“c:\Python27\lib\site packages\scapy\arch\pcapdnet.py”,第257行,在send中 sx=str(cls()/x) 文件“c:\Python27\lib\site packages\scapy\packet.py”,第268行,在__ 返回self.build() 文件“c:\Python27\lib\site packages\scapy\packet.py”,第330行,内部版本 p=self.do_build() 文件“c:\Python27\lib\site packages\scapy\packet.py”,第319行,在do_build中 pkt=self.self\u build() 文件“c:\Python27\lib\site packages\scapy\packet.py”,第310行,在自构建中 p=f.addfield(self,p,val) 文件“c:\Python27\lib\site packages\scapy\fields.py”,第70行,在addfield中 返回s+结构包(self.fmt,self.i2m(pkt,val)) i2m中第95行的文件“c:\Python27\lib\site packages\scapy\layers\l2.py” 返回MACField.i2m(self,pkt,self.i2h(pkt,x)) i2h中的第89行文件“c:\Python27\lib\site packages\scapy\layers\l2.py” x=conf.neighbor.resolve(pkt,pkt.payload) 文件“c:\Python27\lib\site packages\scapy\layers\l2.py”,第38行,解析 返回自解析程序[k](l2inst,l3inst) 文件“c:\Python27\lib\site packages\scapy\layers\inet.py”,第732行,在 conf.neighby.register_l3(以太,IP,lambda l2,l3:getmacbyip(l3.dst)) 文件“c:\Python27\lib\site packages\scapy\arch\windows\\uuuu init\uuuu.py”,第292行, 在getmacbyip中 ifip=str(pcapdnet.dnet.intf().get(iff)['addr'] KeyError:'地址' 信息:---发送数据包时出错 ......................... 收到25个数据包,得到0个答案,剩余1个数据包 警告:不知道如何关闭文件描述符。虫子在前面!恳求 请报告此错误。 稍晚,但:

几个月前,我遇到了同样的问题,最终对我起作用的是通过另一个网络接口将WiFi接入隧道。问题似乎出在IP获取过程中;也许您应该尝试以管理员身份运行,并设置Python和Scapy文件的特性,以便它们具有完全控制权(右键单击->属性->安全性)

使用其他方法(如send/sr/srp)时是否会遇到相同的问题?

我找到了解决方案;}

只需编辑c:\Python27\lib\site packages\scapy\arch\windows\uuuuu init\uuuuuu.py 像这样:

  • 删除c:\Python27\lib\site packages\scapy\arch\windows\uuuu init\uuuuu.pyc
  • 将行get(iff)['addr'])更改为get(iff)['link\u addr'])

  • 如果其他人在解决MAC问题之前都有GETMACYBIP()超时问题,那么这里有一个能帮助工作的辅助工具:

    mac = None
    while not mac:
        mac = getmacbyip(ipaddr)
    

    如果无法解析,getmacbyip()将返回None。这是可行的,但仍需要几秒钟。我希望这不是使它工作的必要条件。

    我已经将scapy更新到dev版本(),然后它就可以正常工作了

    我之前试过了,但我得到了另一个错误,即scapy无法解析评论目的地银行的mac地址。我尝试将权限更改为完全控制,但没有帮助。问题在于函数getmacbyip()。我稍微改变了这个函数,之后它开始发送数据包,但mac地址没有解析,数据包也没有发送。srp有效吗?这是一个谜。。。您使用srp时是否将其构建为乙醚/IP?因为就我而言,srp不适用于第3层协议。我发送此数据包是为了解析网络上系统的mac地址:>>>srp1(以太(dst=Ether_广播)/ARP(op=“who has”,pdst=“192.168.1.38”),type=ETH_P_ARP,iface=“eth0”,timeout=2,chainCC=0,nofilter=1)。真奇怪,数据包被发送了,但在超时期间没有得到回复。这就是为什么getmacbyip()函数也失败的原因,只是为了弄清楚:您可以发送ARP但没有响应,但您根本无法发送IP?是的。如果有帮助的话,还有一条信息:我尝试发送此数据包20-30次,但得到了2次响应。请尝试以管理员身份运行cmd