Этапы создания выражений фильтра отображения в Wireshark

Опубликовано: 22 Февраля, 2023

Вы можете точно управлять тем, какие пакеты будут отображаться с помощью языка фильтра отображения Wireshark. Их можно использовать для определения наличия протокола или поля, его значения или даже для сравнения двух полей друг с другом. Сложные выражения можно создавать, комбинируя эти сравнения с логическими операторами, такими как «и», «или», и скобками.

Фильтр отображения Wireshark:

Каждое поле в панели информации о пакете можно использовать в качестве строки фильтра для отображения только тех пакетов, которые содержат это поле. Строка фильтра: tcp, например, будет отображать все пакеты, содержащие протокол tcp.

Прямо над частью отображения столбцов Wireshark находится панель, которая фильтрует отображение. Чтобы отфильтровать кадры, IP-пакеты или сегменты TCP, которые Wireshark показывает из pcap, введите здесь выражения. В ответ на текст, который вы ввели в фильтр отображения, Wireshark предоставляет список предложений. Выражение еще не принято, а полоса фильтра показа по-прежнему красная. Выражение было одобрено и должно работать правильно, если полоса фильтров отображения становится зеленой. Выражение принимается, если полоса фильтра отображения становится желтой, но, вероятно, оно не будет работать должным образом.

Любой протокол, который предоставляет Wireshark, может быть отфильтрован. Если диссектор добавляет аббревиатуру для поля и добавляет поле в древовидное представление, вы также можете фильтровать это поле. Пункт меню ViewInternalsSupported Protocols обеспечивает доступ к полному списку поддерживаемых протоколов и полей.

Сравнение значений:

Для создания фильтров отображения, сравнивающих значения, можно использовать различные операторы сравнения. Используйте ip.addr==192.168.0.1, например, чтобы отображались только пакеты, поступающие или исходящие с этого IP-адреса. В следующей таблице содержится полный список операторов сравнения:

Старший Нет. Английский C-подобное описание Описание и пример

1.

экв.

==

Равные (любые, если их несколько)

Например, ip.src == 12.0.1.7

2.

пе

знак равно

Не равно (все, если их несколько)

Например, ip.src != 12.0.1.7

3.

гт

>

Лучше чем

Например, frame.len > 15

4.

л

<

Меньше, чем

Например, frame.len < 64

5.

гэ

>=

Больше или равно

Например, frame.lenge 0x100

6.

ле

<=

Меньше или равно

Например, frame.len <= 0x20

Типы полей фильтра отображения:

Старший Нет. Тип Пример

1.

Беззнаковое целое (8-битное, 16-битное, 24-битное, 32-битное)

Целые числа могут быть выражены в десятичной, восьмеричной или шестнадцатеричной системе счисления. Эти фильтры отображения сопоставимы:

ip.len ле 1500
ip.len ле 02734
ip.len файл 0x436

2.

Целое число со знаком (8-битное, 16-битное, 24-битное, 32-битное)

__

3.

логический

Только когда значение логического поля истинно, включается в декодирование протокола. Например, флаг SYN должен присутствовать в заголовке сегмента TCP, чтобы tcp.flags.syn присутствовал и был истинным.

В результате выражение фильтра tcp.flags.syn будет выбирать только те пакеты, для которых существует этот флаг, т. е. сегменты TCP, для которых в заголовке сегмента присутствует флаг SYN.

4.

Ethernet-адрес (6 байт)

Двоеточие (:), точка (.) или тире (-) являются допустимыми разделителями, и между разделителями может быть один или два байта:

eth.addr == ff:ff:ff:ff:ff:ff
eth.addr == ff-ff-ff-ff-ff-ff
eth.addr == ffff.ffff.ffff

5.

IPv4-адрес

ip.адрес == 192.168.0.1

Принадлежность IPv4-адреса к подсети можно проверить с помощью нотации бесклассовой междоменной маршрутизации (CIDR). В качестве иллюстрации следующий фильтр отображения найдет каждый пакет в сети 129.111 Class-B:

ip.адрес == 129.111.0.0/16

6.

IPv6-адрес

ipv6.addr == ::1

7.

IPX-адрес

ipx.addr == 00000000.ffffffffffff

8.

Строка (текст)

http.request.uri == "http://www.wireshark.org/"

Объединение выражений:

Показать логические операции фильтра:

В следующей таблице содержится полный список логических операторов:

Старший Нет.

Английский

C-подобный

Описание и пример

1.

а также

&&

Логическое И

Например, ip.src==20.0.0.7 и tcp.flags.fin

2.

или же

||

Логическое ИЛИ

Например, ip.src==20.0.0.7 или ip.src==192.1.8.1

3.

xor

^^

Логическое исключающее ИЛИ

Например, tr.dst[0:3] == 0.6.29 xor tr.src[0:3] == 0.6.29

4.

нет

!

Логическое НЕ

например, не ООО

5.

[…]

Последовательность

6.

в

Установить членство

Например, http.request.method в {"HEAD", "GET"}.

Разные операторы:

В следующей таблице содержится список различных операторов:

Старший Нет. Оператор Описание с примером

1.

Оператор среза

Вы можете выбрать подпоследовательность последовательности в Wireshark множеством сложных способов. Набор квадратных скобок [], содержащих список спецификаторов диапазона, разделенных запятыми, может быть помещен после метки.

Например, eth.src[0:3] == 00:00:83

В вышеупомянутом примере указывается один диапазон с использованием формата n:m. В этом случае n обозначает начальное смещение, а m обозначает длину заданного диапазона.

2.

Оператор слоя

Оператор уровня (#), за которым следует десятичное число, можно использовать для ограничения поля определенным уровнем в стеке протоколов:

Например, ip.addr#2 == 192.168.40.60

Совпадает только внутренний (второй) слой пакета.

Для более сложных диапазонов применяется тот же синтаксис, что и для срезов:

Например, tcp.port#[2-4] обозначает уровни 2, 3 или 4 включительно. Чтобы отличить диапазон слоев от среза, требуется символ решетки.

Арифметические операторы:

Арифметические операции фильтра отображения:

В следующей таблице содержится полный список арифметических операторов:

Старший Нет. Имя Синтаксис Описание
1. Унарный минус Отрицание А
2. Добавление А + Б Добавить Б к А
3. вычитание А – Б Вычесть Б из А
4. Умножение А * Б Умножить А на В
5. Разделение А/Б Разделить А на В
6. Модуль А % Б Остаток от деления А на В
7. Побитовое И А и Б Побитовое И для A и B

Фигурные скобки — распространенный способ организации математических выражений.

Функции:

Существует несколько функций для преобразования полей в язык фильтра отображения.

Старший Нет.

Функция

Описание и пример

1.

верхний

Данное строковое поле преобразуется в верхний регистр.

Например, верхний (http.server)

2.

ниже

Данное строковое поле преобразуется в нижний регистр.

Например, нижний (http.server) содержит «apache».

3.

Лен

Он возвращает длину строки в байтах в качестве вывода.

Например, len(http.request.uri) > 100

Функция len выводит значение длины строки в байтах вместо многобайтовых символов.

4.

считать

Он возвращает количество (количество) вхождений поля в кадре.

Например, count(ip.addr) > 2 в случае ICMP, в котором один пакет может содержать большее количество адресов.

5.

нить

Данное нестроковое поле преобразуется в строку.

Например, чтобы сопоставить нечетные номера кадров:

строка(frame.number) соответствует «[13579]$»

6.

Максимум

Он возвращает максимальное значение для аргументов. Он принимает любое количество аргументов одного типа и возвращает максимальное (наибольшее) значение.

Например, max(tcp.srcport, tcp.dstport) <= 1024

7.

мин

Он возвращает минимальное значение для аргументов. Он принимает любое количество аргументов одного типа и возвращает минимальное (наименьшее) значение.

Например, мин(tcp.srcport, tcp.dstport) <= 1024

8.

пресс

Он возвращает абсолютное значение аргумента.

Например, абс(tcp.srcport)