Поведение сопоставления пакетов в scapy
Фон:
Я использую scapy для тестирования сетевого устройства, которое может выборочно выполнять обратную передачу пакетов, меняя MAC-адреса источника / адреса, IP-адреса и номера портов уровня 4. Обмен может быть выбран для layer_2_only
, layers_2_and_3
, layers_2_3_and_4
, Я запускаю scapy на сервере, передаю пакеты на устройство и проверяю, что в отправленных пакетах меняются соответствующие поля source / dest в зависимости от настроек.
Проблема:
Scapy srploop()
Метод, который отправляет пакеты и получает совпадения, хорошо работает для типов сообщений, таких как PING и ARP. Я обнаружил, что если я передаю UDP-пакет и порты source / dest не возвращаются устройством обратной петли, то scapy не рассматривает зацикленный пакет как совпадение. Когда номера портов возвращаются устройством обратной связи, пакеты обнаруживаются как совпадающие.
Вопросы:
Есть ли способ переопределить или иным образом повлиять на логику сопоставления пакетов scapy? Например, было бы полезно отключить сопоставление на уровне 4. Я просмотрел документацию и не обнаружил ничего, что бы указывало на то, что это возможно.
Есть ли другой способ добиться этого в scapy. Я экспериментировал с использованием
send()
с последующимsniff()
но мне не удалось собрать ответы, используя этот метод.
1 ответ
Во второй части вопроса вы, возможно, захотите попробовать подход, который я упомянул в Scapy, который не позволяет перехватывать пакеты при использовании нескольких потоков.
По сути, запустите сниффер в отдельном потоке и отфильтруйте ответный трафик в очередь, к которой затем можно получить доступ из основного потока, выполняющего send()
, Таким образом, вы отправляете и получаете одновременно (в двух потоках).
Единственная проблема заключается в том, что в моем конкретном случае я обнаружил странное поведение анализатора, когда он не может применить фильтр при запуске в отдельном потоке. Надеюсь, вам повезет больше.
ОБНОВЛЕНИЕ: Эта проблема с анализатором была решена (см. Мой вопрос, связанный выше).
Надеюсь это поможет!