Python scapy:发送数据包时出错
我是scapy的新手,我正在学习一些在线教程,但我被这个问题困住了。我可以通过有线连接发送数据包,但当我尝试使用无线连接时,我会遇到这个错误。我试着搜索谷歌,但毫无帮助。我希望找到解决办法。提前谢谢 我使用的是Windows8.1、Python2.7Python 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 (
>>> 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
像这样:
如果其他人在解决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