ipsec.py找不到属性IPPROTO_ESP和socket.IPPROTO_AH

2024-05-18 14:21:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我为Python2.6安装了scapy模块,当我导入此模块时,会收到以下警告:

WARNING: can't import layer ipsec: 'module' object has no attribute 'IPPROTO_AH'

我查看了socket属性,但没有找到'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)

我该怎么解决?


Tags: 模块pyip编辑警告属性bindsocket
1条回答
网友
1楼 · 发布于 2024-05-18 14:21:22

我想我有…这不是一个干净的解决方案,但它会做的诀窍。。。我在其他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在各种OSes(LnxSolAIXHPUXOSX)上进行了测试,这些值似乎是一致的,而在Win上则不存在。似乎MS将它们从WinSock2.h中删除(VStudio20052010

相关问题 更多 >

    热门问题