我安装了 python 2.6 的模块 scapy,当我导入此模块时,我收到此警告:
警告:无法导入层 ipsec:“模块”对象没有属性“IPPROTO_AH”
我查看了套接字属性,但没有找到“IPPROTO_AH”属性
此外,我尝试编辑模块 ipsec.py 并找到用其他内容替换 IPPROTO_AH 的方法,但后来我收到 WARNING WITH IPPROTO_ESP !
我尝试在 ipsec.py 中编辑行,例如:
overload_fields = {
IP: {'proto': IPTest},
IPv6: {'nh': IPTest},
IPv6ExtHdrHopByHop: {'nh': socket.IPPROTO_AH},
IPv6ExtHdrDestOpt: {'nh': socket.IPPROTO_AH},
IPv6ExtHdrRouting: {'nh': socket.IPPROTO_AH},}
bind_layers(IP, AH, proto=socket.IPPROTO_AH)
bind_layers(IPv6, AH, nh=socket.IPPROTO_AH)
我怎样才能解决这个问题 ?
我想我已经有了......这不是一个干净的解决方案,但它可以解决问题。我在其他地方看到过ScaPy文件...
您所需要做的就是编辑ipsec.py,寻找线import socket
, and 就在它下面,添加这些条件:
if not hasattr(socket, "IPPROTO_ESP"):
socket.IPPROTO_ESP = 50
if not hasattr(socket, "IPPROTO_AH"):
socket.IPPROTO_AH = 51
参考:[IETF.DataTracker]:(RFC 2292) IPv6 高级套接字 API - IPv6 下一个标头值 https://datatracker.ietf.org/doc/html/rfc2292#section-2.1.1.
In Ubuntu,它们的定义通常可以在/usr/include/netinet/in.h (or /usr/include/linux/in.h).
正如我在评论之一中提到的,我测试了使用Python 2.7.10在各种OSes (Linuxes, Sol, AIX, HP-UX, OSX)并且这些值似乎是一致的。
On Win,它们不存在。似乎MS将它们从WinSock2.h之间 (VStudio) v2005 and v2010, 但他们are back(相同的值)自v2012 (ws2def.h - for XP以上)。
In Python 3(.8),他们似乎存在(检查Nix (Ubuntu) and Win).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)