次のようにICMPネットワークスニファを作成しました。
import socket,os
host="192.168.1.7"
#create a socket protocol
socket_protocol=socket.IPPROTO_ICMP
sniffer = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket_protocol)
sniffer.bind((host, 6677))
sniffer.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
print(sniffer.recvfrom(65565))
「192.168.1.7」は、私の無線ネットワークインターフェイスが接続されているルータに接続された他のPCのローカルアドレスです。 Wiresharkキャプチャを通じてこのアドレスを取得しました。
コードを実行すると、次のエラーが発生します。
Traceback (most recent call last):
File "/root/test.py", line 18, in <module>
sniffer.bind((host, 6677))
socket.error: [Errno 99] Cannot assign requested address
ワイヤレスカードインターフェイスローカルIPアドレス(「192.168.1.9」)を使用すると、すべてがうまく機能します。
このエラーを回避するにはどうすればよいですか?よろしくお願いします!