Предисловие
Приведенное здесь описание не является переводом пользовательской документации для программы Ethereal, хотя в нем используются фрагменты такого перевода. Документ описывает возможности программы на уровне версии 0.9.16. данный документ является частью курса "Системы безопасности на открытых платформах", подготовленного автором
Фильтры сбора пакетов
Фильтры, используемые при сборе пакетов, работают точно так же, как фильтры tcpdump и используют аналогичный синтаксис.
Фильтры отображения
Программы Ethereal и Tethereal поддерживают мощный язык фильтров отображения, позволяющий выводить для просмотра и анализа только интересующие пакеты из числа собранных этой или другой программой захвата. Полное описание системы фильтров отображения можно получить по команде man ethereal-filter.
Фильтры отображения позволяют выбирать пакеты на основе сравнения полей с заданными значениями, одного поля с другим или проверки существования указанных полей или протоколов.
Фильтры могут также использоваться для подготовки статистических отчетов или цветовой маркировки пакетов в списке пакетов Ethereal. В последующих параграфах описывается синтаксис фильтров отображения.
Синтаксис фильтров
Простейший фильтр позволяет проверить для кадра присутствие протокола или поля. Если вы хотите получить в списке все кадры, содержащие пакеты IPX, фильтр будет состоять лишь из идентификатора этого протокола - ipx. Для просмотра кадров Token Ring, содержащих поле RIF можно использовать выражение tr.rif.
Фильтры могут также использовать операции сравнения, перечисленные в таблице 5. Для записи операторов сравнения может использоваться синтаксис, подобный принятому в языке C, или сокращенная запись соответствующих терминов английского языка.
Таблица 5 Операции в фильтрах отображения
C
|
Английский термин
|
Операция
|
==
|
eq
|
равно
|
!=
|
ne
|
Не равно
|
>
|
gt
|
больше
|
<
|
lt
|
меньше
|
>=
|
ge
|
больше или равно
|
<=
|
le
|
меньше или равно
|
|
contains
|
содержит протокол, строку или последовательность байтов
|
Каждое поле протокола, используемое в фильтрах отображения, имеет определенных тип. Поддерживаемый набор типов полей перечислен в таблице .
Таблица 6 Типы полей в фильтрах отображения
Обозначение
|
Тип поля
|
Unsigned integer
|
Беззнаковое целое число размером 6, 16, 24 или 32 бита.
|
Signed integer
|
Целое число со знаком размером 6, 16, 24 или 32 бита.
|
Boolean
|
Логическое значение.
|
Ethernet
|
MAC-адрес Ethernet (6 байтов).
|
Byte string
|
Строка байтов.
|
IPv4
|
Адрес IPv4 (4 байта).
|
IPv6
|
Адрес IPv6 (16 байтов).
|
IPX
|
Номер сети IPX.
|
String
|
Строка символов.
|
Double-precision floating point
|
Действительное число с плавающей запятой.
|
Целые числа могут задаваться в десятичном, восьмеричном или шестнадцатеричном формате. Например, три приведенных ниже выражения эквивалентны одно другому:
frame.pkt_len > 10
frame.pkt_len > 012
frame.pkt_len > 0xa
Логические поля могут принимать значения true (1) или false (0). В фильтрах отображения применяются только числовые эквиваленты логических значений. Например, для выбора кадров Token Ring с установленным полем source-routed может использоваться выражение:
tr.sr == 1
Адреса Ethernet и строки байтов представляются в шестнадцатеричной записи с разделением байтов двоеточием, точкой или дефисом:
fddi.dst eq ff:ff:ff:ff:ff:ff
ipx.srcnode == 0.0.0.0.0.1
eth.src == aa-aa-aa-aa-aa-aa
Если строка байтов содержит единственный байт, он представляется как целое число без знака. Т.е., если вы хотите проверить наличие в однобайтовом поле значения ff, вы должны сравнивать поле с 0xff (а не с ff).
Адреса IPv4 представляются в десятичном формате с разделением байтов точками или задаются именами хостов:
ip.dst eq www.mit.edu
ip.src == 192.168.1.1
Адреса IPv4 можно сравнивать как числовые значения с использованием операций eq, ne, gt, ge, lt и le. При проверке адресов IPv4 может использоваться CIDR-нотация (Classless InterDomain Routing – бесклассовая междоменная маршрутизация. Спецификации CIDR приведены в RFC 1518 и RFC 1519, которые можно загрузить с сайта http://rfc-editor.org/rfc/), если проверяемые адреса относятся к одной подсети. Например, для вывода списка всех адресов из сети класса B 129.111 можно воспользоваться выражением:
ip.addr == 129.111.0.0/16
Помните, что число справа от дробной черты указывает количество битов, используемых для представления номера сети. Нотацию CIDR можно использовать даже с именами хостов. Например, для выбора всех пакетов из сети класса C, к которой относится хост sneezy можно использовать выражение:
ip.addr eq sneezy/24
Нотацию CIDR можно использовать только с константами (адресами IP или именами хостов), но не с переменными. В частности, выражения типа
ip.src/24 == ip.dst/24
являются некорректными.
Сети IPX указываются 32-битовыми целыми числами без знака. Обычно для задания этих номеров используют шестнадцатиричное представление:
ipx.srcnet == 0xc0a82c00
текстовые строки указываются в двойных кавычках:
http.request.method == "POST"
Если строка содержит двойные кавычки, следует использовать символ обратной дробной черты перед знаком кавычек внутри строки или указывать взамен символа кавычек его шестнадцатеричный или восьмеричный код. Ниже приведены примеры использования этих вариантов:
browser.comment == "An embedded " double-quote"
browser.comment == "An embedded
|