다음과 같이 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")를 사용하면 모든 것이 잘 작동합니다.
이 오류를 방지하려면 어떻게 해야 합니까? 미리 감사드립니다!