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, A​​IX, HPUX, OSX) 和值似乎是一致的,而在 Win 上它们不存在。似乎 MS 在 (VStudio) 之间从 WinSock2.h 中删除了它们20052010.