Отправить эхо-запрос ICMP

#python

#python

Вопрос:

Код:

 ICMP_HEADER = b'x08x00xF7x00x00x00x00'
sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.getprotobyname("icmp"))
  

Теперь, что мне сделать, чтобы отправить этот эхо-запрос? Я пытаюсь выяснить, на какой порт я отправляю, но ресурсы говорят, что я не отправляю на определенный порт. А для методов bind / connect требуется номер порта.

Редактировать: я попробовал его предложение как таковое:

 ICMP_HEADER = b'x08x00xF7x00x00x00x00'
ipadd = socket.gethostbyname('www.google.com')
sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.getprotobyname("icmp"))
sock.sendto(ICMP_HEADER, (ipadd, 0))
reply = sock.recv(1024)
print(reply)
  

Может быть, я сделал это неправильно? Время ожидания сокета истекает.

Комментарии:

1. Я полагаю, что вы просто передаете что-либо в sendto для номера порта, и это игнорируется для RAW.

2. для sendto требуется параметр address, а параметр address представляет собой кортеж из адреса ipv4 и номера порта… Редактировать: О, извините, позвольте мне попробовать это.

3. Взгляните на этот репозиторий GitHub: gist.github.com/pklaus/856268