Linux で Python を使用して raw ソケットを開こうとしています。
私の簡単なコード:
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
s.bind((HOST, 5454))
そして、私はこのエラーを受け取りました:
[ERROR] Protocol not supported
ところで、私は Linux 12.04 で python 2.7.3 を使用しており、root を使用してコードを実行しました。
誰も手がかりを持っていますか?
更新: dstrombergが提供する解決策は正しいです。パケット全体が必要な場合は、彼のソリューションを使用してください。ただし、別の組み合わせがあります。
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)
それも機能します。
この場合、IP ヘッダーと TCP ヘッダーを含む TCP パケット全体を受信します。dstrombergのソリューションを使用すると、イーサネット ヘッダーも表示されます。したがって、パケットをどの程度「生」にしたいかによって異なります。