私はntohs(0x0003)
をUbuntuのSOCK_RAWソケットのプロトコル引数として使用すると、PythonからOSErrorを取得します。Ubuntuでsocket.ntohs(0x0003)プロトコルとPython SOCK_RAWをどうやって使用しますか?
File "sniffer_all.py", line 44, in main
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.ntohs(0x0003))
File "/usr/lib/python3.5/socket.py", line 134, in __init__
_socket.socket.__init__(self, family, type, proto, fileno)
OSError: [Errno 22] Invalid argument
私は、/ etc/protocolsファイルをチェックし、それがGGPとして3を示しています
...
ggp 3 GGP # gateway-gateway protocol
このエラーが発生する理由は、プロトコルが設定されているかどうかは知りません。私はsudoでPythonを実行しているので、アクセスの問題はありません。
socket.ntohs(0x0003)
を別のプロトコル(socket.IPPROTO_UDP
など)に置き換えると、エラーは修正されますが、ソケットで処理できるトラフィックは制限されます。
まず同じようにそれを行うことができますいずれか、これは偉大な救済である、働いていました。 –
第2に、ntohs()@ https://docs.python.org/3.4/library/socket.htmlに関する文書を読んでいます。これはあなたがここで言うこととまったく同じです。しかし、どのような目的のntohs()が存在するのだろうか。 –
これは、ネットワーク経由でデータを送信するときに主に使用される、バイト順を変更するために使用できる関数の1つです。詳細については、https://docs.python.org/3.4/library/socket.html#socket.ntohsおよびhttps://en.wikipedia.org/wiki/Endiannessを参照してください。 –