У меня есть приложение, которое обменивается данными с базой данных Oracle, ведение журнала довольно дрянное, поэтому единственный способ узнать, какой SQL он отправляет в нашу базу данных, - это анализировать пакеты для TNS.requests; Я хочу отфильтровать эти пакеты по тем, которые содержат конкретное имя, то есть о существовании определенной строки в пакете. Как я могу это сделать?
Спасибо.
Вы пробовали использовать операторы "содержит" или "соответствует"? Например,
tns.request and tns contains "Marshmallows"
или просто
frame matches "(?i)marshmallows"
Первый пример ищет запросы TNS, которые содержат чувствительную к регистру строку «Marshmallows». Второй пример ищет «зефир» в любом месте любого кадра без учета регистра. («contains» выполняет простое сопоставление строк; «сопоставление» позволяет использовать модификаторы PCRE).
Обновление: в Wireshark 2.6 и более поздних версиях "совпадения" по умолчанию нечувствительны к регистру. Вы можете использовать модификатор PCRE "(? -I)" для принудительного учета регистра.
Есть несколько интерпретаций вашего вопроса:
Вы используете WireShark и хотите использовать более сложную фильтрацию, чтобы лучше анализировать данные. в этом случае прочтите документы. Вы также можете программировать фильтры в Lua, если вам нужна дополнительная выразительная сила.
Вы хотите отфильтровать эти пакеты; т.е. межсетевой экран на уровне приложения или NIDS. Проверьте L7-фильтр для брандмауэра / шейпинга, или Фырканье для NIDS (я думаю, последний также может использовать некоторые сценарии Lua)
Вы хотите захватывать пакеты для регистрации, создания статистики или любой другой автоматизированной задачи. чек tcpdump / libpcap и / или мой собственный Связывание libpcap для Lua.