У меня возникла проблема с параметром тайм-аута scapy при перехвате пакетов. Насколько я понимаю, если вы используете что-то вроде этого:
Код: Выделить всё
test = sniff(filter="ip and icmp ", timeout = 2)
print(test)
Ваше обнюхивание должно прекратиться через 2 секунды. Однако это 100% не работает. Насколько я понял, одна из самых больших проблем заключается в том, что если вы установите тайм-аут = 5 и запустите сниффер, а затем запустите ping google.com в параллельной командной строке, он захватит 4 пакета, не отображаемых пока прослушивание не будет завершено, затем сидите там бесконечно, пока вы не отправите или не получите еще 1 icmp-пакет, только один, затем он уничтожит прослушивание и распечатает (тест) с общим количеством 5 icmp 4 с первого ping установлен, 1 из второго ping.
Я использую Windows, в чем может быть проблема, о которой я не знаю. У меня питон 2.7. Весь мой сценарий, для тестирования этой одной вещи, которую пришлось изолировать от гораздо большего сценария, таков:
Код: Выделить всё
from scapy.all import *
test = sniff(filter="ip and icmp ", timeout = 5)
print(test)
вот и все — если таймаут = 1, он не остановится, пока не будет получен пакет.
Это код из sendrecv.py scapy для тайм-аута прослушивания
Код: Выделить всё
if timeout is not None:
stoptime = time.time()+timeout
remain = None
while 1:
try:
if timeout is not None:
remain = stoptime-time.time()
if remain
Подробнее здесь: [url]https://stackoverflow.com/questions/33882638/python-scapy-timeout-option-not-working-at-all[/url]