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 и plain text. Среди ключевых протоколов прикладного уровня — 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 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также