WireShark фильтрация при захвате / capture. Обзор синтаксиса фильтров.

Фильтрация при захвате. Обзор синтаксиса фильтров.

Wireshark использует язык фильтра libpcap для фильтров захвата. Ниже приведен краткий обзор синтаксиса.

НЕ путайте фильтры захвата (Capture filter) ( пример : tcp port 80 ) и фильтры отображения (display filter) ( пример : tcp.port == 80 ). Фильтры захвата устанавливаются до Старта захвата, а фильрами отображения вы можете оперировать во время захвата.

Фильтр захвата принимает форму серии примитивных выражений, связанных конъюнкциями ( и | или ) и необязательно предшествующих НЕ :

[not] примитив [and | or [not] примитив …]

Фильтр захвата для telnet, который фиксирует трафик на конкретный хост и с него

tcp port 23 and host 10.0.0.5

В этом примере фиксируется трафик telnet с хостом 10.0.0.5 и с него, а также показано, как использовать два примитива и соединение. В другом примере показан «Захват всего трафика telnet не с 10.0.0.5» , и показывает, как захватить весь трафик telnet, кроме 10.0.0.5.

Захват всего трафика telnet не с 10.0.0.5

tcp port 23 and not src host 10.0.0.5

Примитив  [src | dst] host <host>

Этот примитив позволяет вам фильтровать на IP-адрес или имя хоста. Вы можете опционально перед примитивом указать ключевое слово src | dst, чтобы указать, что вас интересуют только исходные или целевые адреса.

ether [src | dst] host <ehost>

Этот примитив позволяет фильтровать адреса Ethernet-хоста. Вы можете дополнительно указать ключевое слово src | dst между ключевыми словами ether и host, чтобы указать, что вас интересуют только исходные или целевые адреса. Если они отсутствуют, будут выбраны пакеты, в которых указан указанный адрес либо на исходном, либо на целевом адресе.

gateway host <host>

Этот примитив позволяет фильтровать пакеты, которые использовали хост в качестве шлюза. То есть, когда источником или адресом Ethernet был хост, но ни исходный, ни целевой IP-адрес не был хостом .

[src | dst] net <net> [{mask <mask>} | {len <len>}]

Этот примитив позволяет вам фильтровать по номерам сети. Вы можете указывать перед этим примитивом  ключевое слово src | dst, чтобы указать, что вас интересует только источник или целевая сеть. Если ни один из них не присутствует, будут выбраны пакеты, которые имеют указанную сеть в исходном или целевом адресе. Кроме того, вы можете указать сетевую маску или префикс CIDR для сети, если они отличаются от ваших собственных.

[tcp | udp] [src | dst] port <port>

Этот примитив позволяет вам фильтровать номера портов TCP и UDP. Вы можете не указывать перед  этим примитивом ключевые слова src | dst и tcp | udp, которые позволяют указать, что вас интересуют только исходные или целевые порты и TCP или UDP-пакеты соответственно. Ключевые слова tcp | udp должны появиться перед src | dst .

Если они не указаны, пакеты будут выбраны как для протоколов TCP, так и для UDP

less|greater <length>

Этот примитив позволяет фильтровать пакеты, длина которых меньше или равна указанной длине, или больше или равна указанной длине, соответственно.

ip|ether proto <protocol>

Этот примитив позволяет вам фильтровать по указанному протоколу либо на уровне Ethernet, либо на уровне IP.

Пример: ether proto 0x0806   —   Захват только ARP

ether|ip broadcast|multicast

Этот примитив позволяет вам фильтровать либо по сетям Ethernet, либо по IP-сетям или многоадресным рассылкам.

<expr> relop <expr>

Этот примитив позволяет создавать сложные выражения фильтра, которые выбирают байты или диапазоны байтов в пакетах.

Автоматическая фильтрация удаленного трафика

Если Wireshark работает удаленно (используя, например, SSH, экспортированное окно X11, сервер терминалов …), удаленный контент должен переноситься по сети, добавляя много (обычно неважных) пакетов к действительно интересному трафику.

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

Анализируются следующие переменные среды:

SSH_CONNECTION (ssh)
<удаленный IP> <удаленный порт> <локальный IP> <локальный порт>

SSH_CLIENT (ssh)
<удаленный IP> <удаленный порт> <локальный порт>

REMOTEHOST (tcsh, другие?)
<удаленное имя>

DISPLAY (x11)
[удаленное имя]: <display num>

SESSIONNAME (сервер терминалов)
<удаленное имя>

В Windows он запрашивает операционную систему, если она запущена в среде служб удаленных рабочих столов.

Остановить захват

Запуск сеанса захвата будет остановлен одним из следующих способов:
Используя кнопку « Стоп » в диалоговом окне «Capture Info».

Диалоговое окно «Capture Info» может быть скрыто, если используется опция «Скрыть информацию о записи».

  • Использование пункта меню Capture → Stop .
  • Использование Стоп кнопки на панели инструментов.
  • Нажатие Ctrl + E .

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

Перезапустить текущий захват

Запуск сеанса захвата можно перезапустить с теми же параметрами захвата, что и в последний раз, это приведет к удалению всех ранее захваченных пакетов. Это может быть полезно, если некоторые неинтересные пакеты захвачены, и нет необходимости их хранить.

Перезапуск — это функция удобства и эквивалент остановки захвата после немедленного запуска захвата. Перезапуск может быть запущен одним из следующих способов:

  • Использование пункта меню Capture → Restart .
  • С помощью кнопки на панели инструментов « Перезапустить» .