ipsec.py 找不到属性 IPPROTO_ESP 和 socket.IPPROTO_AH
ipsec.py CANT FIND THE attribute IPPROTO_ESP and socket.IPPROTO_AH
我为 python 2.6 安装了模块 scapy,当我导入这个模块时,我收到了这个警告:
WARNING: can't import layer ipsec: 'module' object has no attribute 'IPPROTO_AH'
我查看了套接字属性,但没有找到 'IPPROTO_AH' 属性
此外,我尝试编辑模块 ipsec.py 并找到用其他东西替换 IPPROTO_AH 的方法,但后来我收到 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
就在它下面 ,添加这些条件:
if not hasattr(socket, "IPPROTO_ESP"):
socket.IPPROTO_ESP = 50
if not hasattr(socket, "IPPROTO_AH"):
socket.IPPROTO_AH = 51
正如我在其中一条评论中提到的,我使用 Python 2.7.10 在各种 OS[ 上进行了测试=33=]es (Lnx, Sol, AIX, HPUX, OSX) 和值似乎是一致的,而在 Win 上它们不存在。似乎 MS 在 (VStudio) 之间从 WinSock2.h 中删除了它们2005 和 2010.
我为 python 2.6 安装了模块 scapy,当我导入这个模块时,我收到了这个警告:
WARNING: can't import layer ipsec: 'module' object has no attribute 'IPPROTO_AH'
我查看了套接字属性,但没有找到 'IPPROTO_AH' 属性 此外,我尝试编辑模块 ipsec.py 并找到用其他东西替换 IPPROTO_AH 的方法,但后来我收到 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
就在它下面 ,添加这些条件:
if not hasattr(socket, "IPPROTO_ESP"):
socket.IPPROTO_ESP = 50
if not hasattr(socket, "IPPROTO_AH"):
socket.IPPROTO_AH = 51
正如我在其中一条评论中提到的,我使用 Python 2.7.10 在各种 OS[ 上进行了测试=33=]es (Lnx, Sol, AIX, HPUX, OSX) 和值似乎是一致的,而在 Win 上它们不存在。似乎 MS 在 (VStudio) 之间从 WinSock2.h 中删除了它们2005 和 2010.