Wireshark — провідний аналізатор мережевого трафіку з відкритим кодом, що використовується для перехоплення та інспекції пакетів у реальному часі. Інструмент підтримує понад дві тисячі мережевих протоколів і працює на всіх основних платформах. Згідно з Wireshark User Guide (2026), утиліта застосовується для діагностики мереж, налагодження API та аналізу безпеки в мобільній і веб-розробці.
Головне
Wireshark — програма з відкритим кодом (GPLv2), яка перехоплює пакети даних, що проходять через мережевий інтерфейс компʼютера. Заснована на бібліотеці libpcap (Unix) або Npcap (Windows) для захоплення на рівні канального рівня моделі OSI.
Мережева карта у звичайному режимі отримує лише кадри, адресовані її MAC-адресі. Wireshark перемикає інтерфейс у режим promiscuous (нерозбірливий), за якого система обробляє всі кадри незалежно від адресата. Захоплені дані передаються в ядро через сокет raw socket, після чого бібліотека libpcap копіює їх у простір користувача для аналізу.
Wireshark використовує модульну архітектуру: кожен протокол реалізований як окремий диссектор — плагін, який парсить бінарні дані та відображає їх у структурованому вигляді. Станом на 2026 рік у програмі реалізовано диссектори для 2 874 протоколів, зокрема HTTP/2, QUIC, gRPC та MQTT. Диссектори працюють через систему дерева протоколів — кожен пакет розбирається пошарово: від Ethernet-кадру до прикладного рівня.
// Приклад простого диссектора для кастомного протоколу
static int dissect_custom(tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree, void *data) {
proto_item *ti = proto_tree_add_item(tree, hf_custom_field,
tvb, 0, tvb_captured_length(tvb), ENC_NA);
return 0;
}
Графічний інтерфейс Wireshark розділений на три панелі: список пакетів (packet list), деталі протоколів (packet details) та hex-дамп (packet bytes). Кожна панель оновлюється в реальному часі та підтримує інтерактивну навігацію — клік по рядку пакета відкриває його повну структуру.
Інструмент читає файли захоплення у форматах pcap, pcapng, snoop та NetMon. Експорт можливий у JSON, XML, CSV та звичайний текст. Серед ключових протоколів прикладного рівня — HTTP/HTTPS, DNS, DHCP, TCP, UDP, TLS, QUIC, WebSocket, MQTT, AMQP та Protobuf. Для мобільної розробки особливо важлива підтримка gRPC та HTTP/2 із мультиплексуванням потоків.
Вбудовані утиліти включають Follow Stream (відновлення повного діалогу TCP/UDP/TLS), IO Graph (графік пропускної здатності), статистику розмов (Conversations) та ієрархію протоколів (Protocol Hierarchy). Функція Flow Graph візуалізує послідовність пакетів між вузлами, що спрощує пошук причин затримок під час налагодження клієнт-серверної взаємодії.
Запуск захоплення починається з вибору мережевого інтерфейсу — Ethernet, Wi-Fi, Bluetooth PAN або Loopback. На Windows може знадобитися встановлення Npcap у режимі WinPcap API Compatible Mode. Для захоплення на мобільних пристроях використовується Remote Packet Capture через SSH-тунель.
На Android-пристрої трафік перехоплюється через tcpdump або PCAPdroid із подальшою передачею файлу на робочий компʼютер. Команда для віддаленого захоплення через ADB:
# Захоплення трафіку на Android через ADB shell
adb shell tcpdump -i wlan0 -s 0 -w /sdcard/capture.pcap
# Копіювання на компʼютер
adb pull /sdcard/capture.pcap .
На Windows трафік localhost (127.0.0.1) не проходить через фізичний інтерфейс, тому Wireshark не бачить його напряму. Рішення — встановлення Npcap з опцією Loopback Support або перенаправлення трафіку через RawCap. На Linux та macOS loopback-інтерфейс (lo) захоплюється без додаткових налаштувань.
Wireshark пропонує два типи фільтрів: capture filters (застосовуються до захоплення, на рівні libpcap) та display filters (застосовуються до вже захоплених даних). Capture filters використовують синтаксис BPF (Berkeley Packet Filter), display filters — власну мову Wireshark з автодоповненням.
BPF-фільтри записуються у форматі tcpdump і виконуються в ядрі, що мінімізує втрату пакетів за високого навантаження. Приклади фільтрів:
| Фільтр | Призначення |
|---|---|
| tcp port 80 | Лише HTTP-трафік на стандартному порту |
| host 192.168.1.1 | Пакети від конкретного хоста |
| not arp | Усі пакети, крім ARP-запитів |
Display filters застосовуються постфактум і підтримують складні умови з логічними операторами and, or, not. Приклад: http.request.method == "POST" and ip.src == 192.168.0.100 відфільтрує лише POST-запити з конкретного IP. Фільтри можна зберігати як обрані для повторного використання.
HTTP-трафік відображається у Wireshark у читабельному вигляді: метод запиту, URI, заголовки та тіло відповіді. Функція Follow TCP Stream збирає повний діалог клієнта та сервера в одному вікні. Для HTTPS потрібне розшифрування TLS-сесій, оскільки вміст зашифрований.
Браузери Chrome та Firefox підтримують змінну середовища SSLKEYLOGFILE, яка записує сесійні ключі TLS у текстовий файл. Wireshark використовує цей файл для розшифрування записів. Налаштування виконується через Preferences → Protocols → TLS → (Pre)-Master-Secret log filename.
# Запуск Chrome із записом ключів TLS
export SSLKEYLOGFILE=/tmp/sslkeys.log
google-chrome .
# Після захоплення вказати шлях у Wireshark
# Edit → Preferences → Protocols → TLS → Log Filename
gRPC використовує HTTP/2 як транспорт і Protobuf для серіалізації даних. Wireshark розшифровує gRPC-повідомлення, якщо надати файл .proto з визначенням структур. Диссектор Protobuf зіставляє бінарні поля з іменами з прото-файлу, що критично важливо під час налагодження мікросервісної архітектури.
Мобільне налагодження через Wireshark вимагає проксіювання трафіку пристрою на компʼютер. Найнадійніший метод — створення точки доступу Wi-Fi на ноутбуці та перенаправлення трафіку через NAT. На Android також доступний VPN-метод із застосунком PCAPdroid без прав root.
PCAPdroid створює локальний VPN-сервіс, який перенаправляє трафік застосунків на Wireshark через UDP-потік. Застосунок не вимагає root-доступу та підтримує фільтрацію за окремими процесами. Отримані pcap-файли відкриваються у Wireshark для повного аналізу.
# Прийом трафіку від PCAPdroid на компʼютері
# PCAPdroid → Settings → PCAP dumper → UDP Exporter
nc -l -u 192.168.0.10 12345 > capture.pcap
Wireshark — універсальний інструмент, але для конкретних завдань існують більш спеціалізовані рішення. tcpdump ефективніший для серверного захоплення без графіки, Charles Proxy зручніший для аналізу HTTPS трафіку, а Fiddler — для інспекції веб-трафіку з можливістю модифікації запитів на льоту.
Charles Proxy виступає як проміжний проксі-сервер із можливістю перехоплення HTTPS через власну SSL-сертифікацію. На відміну від Wireshark, Чарльз не вимагає налаштування SSLKEYLOGFILE і може не лише переглядати, а й змінювати трафік — підміняти відповіді, емулювати затримки та повторювати запити.
Fiddler — ще один проксі-інструмент, популярний у .NET екосистемі. Він надає вбудований редактор запитів, підтримку AutoResponder для моків і композер для створення кастомних запитів. Fiddler краще підходить для аналізу веб-трафіку браузера, Wireshark — для низькорівневого мережевого аналізу.
| Інструмент | Тип | HTTPS без ключів | Зміна трафіку |
|---|---|---|---|
| Wireshark | Сниффер | Ні (потрібен SSLKEYLOGFILE) | Лише перегляд |
| Charles | Проксі | Так (кастомний сертифікат) | Так |
| Fiddler | Проксі | Так (кастомний сертифікат) | Так |
| tcpdump | Сниффер | Ні | Лише перегляд |
Wireshark вимагає розуміння основних принципів захоплення трафіку. Один із частих сценаріїв — пошук джерела затримок у мобільному застосунку через фільтр tcp.analysis.ack_rtt. Для пошуку повільних HTTP-запитів використовуйте умову http.time більше 1.
Для пошуку повільних HTTP-запитів відфільтруйте http.time більше 1 — Wireshark покаже запити з часом відповіді понад 1 секунду. Комбінуйте з ip.addr для аналізу конкретного сервера. IO Graph з інтервалом 1 секунда наочно покаже піки навантаження.
Wireshark підтримує експорт у CSV, JSON та XML через меню File. Для автоматичного аналізу використовуйте tshark — консольну версію, що працює в CI/CD пайплайнах. Tshark підтримує ті самі фільтри та формати виводу, що й графічна версія.
Wireshark вимагає розуміння основних принципів захоплення трафіку. Один із частих сценаріїв — пошук джерела затримок у мобільному застосунку через фільтр tcp.analysis.ack_rtt. Для пошуку повільних HTTP-запитів використовуйте умову http.time більше 1.
Для пошуку повільних HTTP-запитів відфільтруйте http.time більше 1 — Wireshark покаже запити з часом відповіді понад 1 секунду. Комбінуйте з ip.addr для аналізу конкретного сервера. IO Graph з інтервалом 1 секунда наочно покаже піки навантаження.
Wireshark підтримує експорт у CSV, JSON та XML через меню File. Для автоматичного аналізу використовуйте tshark — консольну версію, що працює в CI/CD пайплайнах. Tshark підтримує ті самі фільтри та формати виводу, що й графічна версія.
Часті запитання
Wireshark надає графічний інтерфейс із візуалізацією пакетів, вбудованими фільтрами та статистикою. tcpdump — консольна утиліта без GUI, зручна для серверного захоплення через SSH. Wireshark вміє читати файли tcpdump і навпаки.
Для розшифрування потрібен файл сесійних ключів TLS (SSLKEYLOGFILE). Chrome та Firefox експортують ключі під час запуску зі змінною середовища. Шлях до файлу вказується в налаштуваннях Protocols → TLS у Wireshark.
Loopback-трафік на Windows не проходить через драйвер Npcap за замовчуванням. Рішення — встановлення Npcap із ввімкненою опцією Loopback Support або використання утиліти RawCap для захоплення локального трафіку.
Так, через проксіювання трафіку на компʼютер. Android підтримує захоплення через PCAPdroid (без root) або tcpdump (з root). iOS вимагає RVI (Remote Virtual Interface) через macOS або jailbreak для захоплення.
Display filter frame contains шукає рядок або hex-послідовність у всьому пакеті. Приклад: frame contains "password" знайде пакети з підрядком password у будь-якому полі. Для точного пошуку за полем використовуйте http.request.uri contains "api".
Підсумки
Ми розробимо мобільний застосунок під ключ
IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.
Читайте також