Python - опция scapy timeout вообще не работает

У меня проблема с опцией тайм-аута scapy при прослушивании пакетов. Из того, что я понимаю, если вы используете что-то вроде этого:

test = sniff(filter="ip and icmp ", timeout = 2)
print(test)

Ваш нюхает время ожидания через 2 секунды. Тем не менее, это 100% не работает. Из того, что я понял, одна из самых больших проблем также состоит в том, что если вы установите timeout = 5 и запустите сниффер, а затем запустите ping google.com в параллельной командной строке, он будет захватывать 4 не отображаемых пакета, пока сниффер не будет готово, то сидите там до бесконечности, пока вы не отправите или не получите еще 1 пакет icmp, только один, затем он убьет снифф и напечатает (тест) с 5 полными icmp 4 из первого набора пинга, 1 со второго пинга.

Я использую Windows, что может быть проблемой, которую я не знаю. У меня есть Python 2.7. весь мой сценарий, для тестирования этого 1 предмет должен был изолировать его от гораздо большего сценария как такового:

from scapy.all import *



test = sniff(filter="ip and icmp ", timeout = 5)
print(test)

вот и все - если timeout = 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 <= 0:
                break

После извлечения функции из scapy sendrecv.py и реализации этой функции возникла та же проблема, я сузил ее. Появляется, когда вы передаете фильтр в функцию сниффинга, он изменяет способ работы тайм-аута. Если вы запускаете:

из scapy.all импорт *

test = sniff(timeout = 5)
print(test)

у вас все будет в порядке, он автоматически отключится через 5 секунд, в противном случае он зависнет и не завершит цикл ожидания правильно.

1 ответ

Я попробовал точно такой же код, и он отлично работает для меня. Попробуйте переустановить scapy или вернуться к более старым версиям. Я обнаружил, что для меня 2.2.0dev является одной из наиболее стабильных сборок.

Другие вопросы по тегам