web-dev-qa-db-ja.com

ipsec.py属性IPPROTO_ESPおよびsocket.IPPROTO_AHを見つけることができません

python 2.6のモジュールscapyをインストールすると、このモジュールをインポートすると、次の警告が表示されます。

警告:レイヤーipsecをインポートできません: 'モジュール'オブジェクトに属性 '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)

どうすればこれを修正できますか?

5
yosi doran

私はそれを持っていると思います...それはきれいな解決策ではありませんが、それはトリックを行います...私は他の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
_

コメントの1つで述べたように、私はPython 2.7.10をさまざまな[〜#〜] os [〜#〜] es(LnxSol[〜#〜] aix [〜#〜][〜#〜] hpux [〜#〜][〜#〜 ] osx [〜#〜])と値は一貫しているようですが、Winでは存在しません。[〜#〜] ms [〜#〜]のように削除されましたWinSock2.hからVStudio20052010の間。

6
CristiFati