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 .
- С помощью кнопки на панели инструментов « Перезапустить» .