Eu tentei criar um sniffer de rede ICMP da seguinte forma:
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" é um endereço local de outro PC conectado ao roteador ao qual minha interface de rede sem fio está conectada. Eu obtive este endereço fazendo uma captura de wireshark.
quando os códigos são executados, recebo o seguinte erro
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
Quando uso o endereço IP local da interface da placa de rede sem fio ("192.168.1.9"), tudo corre bem.
O que posso fazer para evitar esse erro ... Agradecemos antecipadamente!
Tags python