Поведение сопоставления пакетов в 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 не рассматривает зацикленный пакет как совпадение. Когда номера портов возвращаются устройством обратной связи, пакеты обнаруживаются как совпадающие.

Вопросы:

  1. Есть ли способ переопределить или иным образом повлиять на логику сопоставления пакетов scapy? Например, было бы полезно отключить сопоставление на уровне 4. Я просмотрел документацию и не обнаружил ничего, что бы указывало на то, что это возможно.

  2. Есть ли другой способ добиться этого в scapy. Я экспериментировал с использованием send() с последующим sniff() но мне не удалось собрать ответы, используя этот метод.

1 ответ

Решение

Во второй части вопроса вы, возможно, захотите попробовать подход, который я упомянул в Scapy, который не позволяет перехватывать пакеты при использовании нескольких потоков.

По сути, запустите сниффер в отдельном потоке и отфильтруйте ответный трафик в очередь, к которой затем можно получить доступ из основного потока, выполняющего send(), Таким образом, вы отправляете и получаете одновременно (в двух потоках).

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

ОБНОВЛЕНИЕ: Эта проблема с анализатором была решена (см. Мой вопрос, связанный выше).

Надеюсь это поможет!

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