#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