Дуже поширеною проблемою є наступна. Ви запускаєте Wireshark
з налаштуваннями за замовчуванням, потім ви отримаєте багато
різноманітної інформації на екрані та не зможете, на жаль, знайти потрібної. Запам’ятайте! Надмірна кількість інформації вбиває інформацію!.
Тому користування фільтрами є дуже важливим моментом, вони можуть допомагати відбирати
тільки ті дані, що вам потрібні, відсіваючи зайве. Wireshark містить два типи фільтрів:
-
-
Фільтри захвату використовуються для відбирання даних, що мають
зберегатися в логах. Ці фільтри оголошуються перед початком захвату даних;
Фільтри відображення використовуються для пошуків у захоплених логах.
Ці фільтри можуть бути змінені під час захоплення даних.
Отже, який фільтр я маю використовувати?
Цілі цих двох фільтрів – різні.
Фільтр захвату використовується як попередній фільтр для
встановлення межи розміру захоплених даних, щоб уникнути створення надто великого логу.
Фільтр відображення є більш потужним та комплексним –
він дозволяє шукати потрібні дані вже у захоплених логах.
Синтакс цих двох типів фільтрів відрізняються.
Ми покажемо, як треба працювати з фільтрами, на наступних сторінках:
Синтакс фільтру захвату є стандартним для програм,
які використовують бібліотеки Lipcap (у Linux) або Winpcap
(у Windows), як знаменита TCPdump. Фільтр захвату мають
бути визначені перед тим, як буде запущений механізм
захвату у Wireshark,на відміну від фільтрів відображення,
які можна визначать незалежно від того, як довго працює механізм захвату.
Щоб використати фільтр захвату, виконайте наступне:
- оберіть команду Capture -> Options (Захват -> Опції);
- заповніть поле «Capture filter» (Фільтр захвату) або натисніть на кнопку біля цього
поля, щоб використати ім’я фільтру, яке вже було додано раніше для попередніх фільтрів.
- натисніть кнопку Start (Старт), щоб почати захоплювати дані.
Синтакс:
Протокол
Напрямок
Хост(и)
Значення
Логічний оператор
Інший вираз
Приклад:
tcp
dst
10.1.1.1
80
and
tcp dst 10.2.2.2 3128
Протокол::
Значення: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp.
Якщо протокол не зазначений, то використовуються усі протоколи.
Напрямок:
Значення: src, dst, src and dst, src or dst
Якщо джерело або призначення не зазначені, то використовуються ключові слова «src or dst».
Наприклад, вираз "host 10.2.2.2" є еквівалентним до «src or dst host 10.2.2.2».
Хост(и):
Значення: net, port, host, portrange.
Якщо хост або хости не зазначені, то використовується ключове слово «host».
Наприклад, вираз «src 10.1.1.1» є еквівалентним до «src host 10.1.1.1».
Логічний оператор::
Значення: not, and, or.
Заперечення («not») має найбільшу перевагу. Диз’юнкція («or») та кон’юнкція
(«and») мають рівні переваги та читаються зліва направо.
Наприклад,
«not tcp port 3128 and tcp port 23» еквівалентне «(not tcp port 3128) and tcp port 23».
«not tcp port 3128 and tcp port 23» НЕ є еквівалентним "not (tcp port 3128 and tcp port 23)».
Приклади:
tcp dst port 3128
Виводить пакети з призначенням: протокол TCP, порт 3128.
ip src host 10.1.1.1
Виводить пакети з IP-адресою джерела 10.1.1.1.
host 10.1.2.3
Виводить пакети з IP-адресою джерела або призначення 10.1.1.1.
src portrange 2000-2500
Виводить пакети з джерелом в портах UDP або TCP у діапазоні 2000-2500.
not imcp
Виводить усі пакети, окрім пакетів ICMP (ICMP у багатьох випадках використовується програмою ping).
src host 10.7.2.12 and not dst net 10.200.0.0/16
Виводить пакети з IP-адресою джерела 10.7.2.12, відокремлюючи у той же час пакети з
IP-адресою призначення у мережі 10.200.0.0/16.
(src host 10.4.1.12 or src net 10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8
Виводить пакети з IP-адресою джерела 10.4.1.12 або джерела у мережі 10.6.0.0/16, результат
є зв’язаним з пакетами, які мають призначення у портах TCP у діапазоні 200-10000
та IP-адресою призначення у мережі 10.0.0.0/8.
Примітка:
Зворотний слеш («\») використовується, коли ключове слово є значенням.
«ether proto \ip» (це еквівалентне «ip»).
Цей вираз вибере IP-протоколи.
«ip proto \icmp» (це еквівалентне «icmp»).
Цей вираз вибере ICMP-пакети, які у багатьох випадках використовує програма ping.
Ключові слова «multicast» та «broadcast» можуть також використовуватися після «ip» або «ether».
«no broadcast» може допомогти, якщо вам потрібно відсіяти broadcast-запити.
Фільтри відображення використовуються для пошуку у захоплених даних, які
були відфільтровані за допомогою фільтрів захвату.
Їх пошукові можливості є більш потужними, ніж можливості фільтрів захвату; вам не
потрібно перезапускати механізм захвату, щоб змінити фільтр відображення.
Синтакс:
Протокол
.
Рядок 1
.
Рядок 2
Оператор порівняння
Значення
Логічний оператор
Інші вирази
Приклад:
ftp
passive
ip
==
10.2.3.4
xor
icmp.type
Протокол:
У Wireshark доступна величезна кількість протоколів, які
містяться між другим та сьомим рівнями моделі OSI. Ви можете знайти їх,
клацнувши на кнопку «Expression...» (Вираз), яка розташована у головному вікні.
Приклади: IP, TCP, DNS, SSH.
Протоколи, які підтримуються програмою, а також їх характеристику ви можете знайти за допомогою команди
«Help -> Supported Protocols» (Допомога -> Протоколи, які підтримуються):
Щоб знайти властивості протоколу, знайдіть потрібний протокол та клацніть на кнопку «+».
Оператор порівняння: :
Доступні шість операторів порівняння:
Формат англійської мови:
Формат мови С:
Значення:
eq
==
Рівний
ne
!=
Нерівний
gt
>
Більше ніж
lt
<
Менше ніж
ge
>=
Більше або рівний
le
<=
Менше або рівний
Логічний оператор:
Формат англійської мови:
Формат мови С:
Значення:
and
&&
Логічне «І»
or
||
Логічне «АБО»
xor
^^
Логічне «виключне АБО»
not
!
Логічне «НІ»
Логічний вираз XOR (виключне АБО), який добре знайомий кожному програмістові,
може бути використаний як зручна альтернатива іншим операторам. Якщо ви
використовуєте дві умови у фільтрі з оператором XOR, то на екран будуть
виведені тільки ті пакети,
які відповідають ОДНІЄЙ умові, але не обом (як це робить оператор OR).
Ось приклад оператора XOR у фільтрі відображення:
tcp.dstport 80 xor tcp.dstport 1025"
Тільки пакети з призначенням TCP, порт 80 або джерелом TCP, порт 1025
(але не ОБИДВА!) будуть відображені у якості результату.
Приклади::
snmp || dns || icmp
Виводить трафік SNMP або DNS, або ICMP.
ip.addr == 10.1.1.1
Виводить пакети з IP-адресою джерела та призначення 10.1.1.1.
ip.src != 10.1.2.3 or ip.dst != 10.4.5.6
Виводить пакети з IP-адресою джерела, яка відрізняється від 10.1.2.3 або з
IP-адресою призначення, яка відрізняється від 10.4.5.6.
Іншими словами, відображені пакети матимуть:
IP-адресу джерела: усі, крім 10.1.2.3; IP-адресу призначення: усі
та
IP-адресу джерела: усі; IP-адресу призначення: усі, крім 10.4.5.6.
ip.src != 10.1.2.3 and ip.dst != 10.4.5.6
Виводить пакети з IP-адресою джерела, яка відрізняється від 10.1.2.3 та у
той же час з IP-адресою призначення, яка відрізняється від 10.4.5.6.
Іншими словами, відображені пакети матимуть:
IP-адресу джерела: усі, крім 10.1.2.3; IP-адресу призначення: усі, крім 10.4.5.6.
tcp.port == 25
Виводить пакети з джерелом або призначенням TCP, порт 25.
tcp.dstport == 25
Виводить пакети з призначенням TCP, порт 25.
tcp.flags
Виводить пакета з TCP-прапорцями.
tcp.flags.syn == 0x02
Виводить пакети з TCP-прапорцем SYN.
Якщо фільтр вказаний правильно, то його текст буде підсвічений зеленим кольором. В іншому випадку, якщо ви
допустили помилку, Wireshark підсвітить текст червоним кольором.