Как отправлять пакет снова и снова до получения ответа (Scapy)

#python #scapy #packet

#python #scapy #пакет

Вопрос:

Я создал ARP-пакет в Scapy (используя Python), и я пытаюсь отправлять этот пакет снова и снова, без остановки, до получения и ответа от получателя, сохраняя ответ и выходя из цикла. Я безуспешно пытался найти его в Google. Поэтому я испытываю свою удачу здесь и буду рад получить идею, как сделать это эффективным способом. Спасибо!

Ответ №1:

sr1 Функция Scapy отправляет пакет и ожидает ответа не более timeout нескольких секунд. Если ответ получен, sr1 возвращает полученный пакет, если таковой имеется, или None иным образом. Таким образом, вы можете в принципе делать то, что хотите, используя этот цикл:

 from scapy.all import ARP, sr1

loop = True
request = ARP(pdst="10.0.0.1")
while loop:
   response = sr1(request, timeout=5)
   if response is None:
      print('no response after 5 seconds. retrying ...')
   else:
      loop = False
print('I got an answer:')
response.show()
  

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

1. Вы также можете попробовать srflood : scapy.readthedocs.io/en/latest/api/scapy.sendrecv.html