Назад | Перейти на главную страницу

Как отфильтровать содержимое пакета в Wireshark?

У меня есть приложение, которое обменивается данными с базой данных Oracle, ведение журнала довольно дрянное, поэтому единственный способ узнать, какой SQL он отправляет в нашу базу данных, - это анализировать пакеты для TNS.requests; Я хочу отфильтровать эти пакеты по тем, которые содержат конкретное имя, то есть о существовании определенной строки в пакете. Как я могу это сделать?

Спасибо.

Вы пробовали использовать операторы "содержит" или "соответствует"? Например,

tns.request and tns contains "Marshmallows"

или просто

frame matches "(?i)marshmallows"

Первый пример ищет запросы TNS, которые содержат чувствительную к регистру строку «Marshmallows». Второй пример ищет «зефир» в любом месте любого кадра без учета регистра. («contains» выполняет простое сопоставление строк; «сопоставление» позволяет использовать модификаторы PCRE).


Обновление: в Wireshark 2.6 и более поздних версиях "совпадения" по умолчанию нечувствительны к регистру. Вы можете использовать модификатор PCRE "(? -I)" для принудительного учета регистра.

Есть несколько интерпретаций вашего вопроса:

  1. Вы используете WireShark и хотите использовать более сложную фильтрацию, чтобы лучше анализировать данные. в этом случае прочтите документы. Вы также можете программировать фильтры в Lua, если вам нужна дополнительная выразительная сила.

  2. Вы хотите отфильтровать эти пакеты; т.е. межсетевой экран на уровне приложения или NIDS. Проверьте L7-фильтр для брандмауэра / шейпинга, или Фырканье для NIDS (я думаю, последний также может использовать некоторые сценарии Lua)

  3. Вы хотите захватывать пакеты для регистрации, создания статистики или любой другой автоматизированной задачи. чек tcpdump / libpcap и / или мой собственный Связывание libpcap для Lua.