@gd1xza

Не приходит icmp oтвет?

У меня есть код на питоне который принимает icmp пинги и отсылает ответ. Пинги приходят а ответ нет.

import socket
r = socket
s = socket.socket(r.AF_INET, r.SOCK_RAW, r.IPPROTO_ICMP)
#s.setsockopt(socket.SOL_IP, socket.IP_HDRINCL,0)
while True:
 data,addr = s.recvfrom(4096)
 d = data.split(b"\x08\x00")[1]
 chk = bytes([d[0]]),bytes([d[1]])
 id = bytes([d[2]]),bytes([d[3]])
 seq = bytes([d[4]]),bytes([d[5]])
 payload = b''
 for x in d:
  if x == d[0]:
   continue
  elif x == d[1]:
   continue
  elif x == d[2]:
   continue
  elif x == d[3]:
   continue
  elif x == d[4]:
   continue
  elif x == d[5]:
   continue
  else:
   payload += bytes([x])

 print("Checksum: ",chk)
 print("Id: ",id)
 print("Seq num: ",seq)
 print("Payload: ",payload.decode("utf-8"))
 rsp = b"\x00\x00\x00\x00"+id[0]+id[1]+seq[0]+seq[1]+payload
 print(rsp)
 s.sendto(rsp,addr)

На выходе с сервера тоже ничего не видно тоесть ядро не пропускает пакет.
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ответы на вопрос 1
flapflapjack
@flapflapjack
Нажимательщик кнопков
ядро не пропускает пакет.


Ну icmp type 8 - это запрос, а type 0 - ответ. У вас в iptables может заблокирован пакет правилом типа
iptables -A OUTPUT -p icmp -m icmp --icmp-type 8 -j DROP


Сделайте для начала
iptables -F
и попробуйте еще раз.

P.S. в питоне не шарю так что может ошибка и в коде.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы