Wireshark: что это, анализ трафика и перехват пакетов

Автор: IT Sectr Опубликовано: 2026-05-08 Время чтения: 9 мин

Wireshark — ведущий анализатор сетевого трафика с открытым исходным кодом, используемый для перехвата и инспекции пакетов в реальном времени. Инструмент поддерживает более двух тысяч сетевых протоколов и работает на всех основных платформах. По данным Wireshark User Guide (2026), утилита применяется для диагностики сетей, отладки API и анализа безопасности в мобильной и веб-разработке.

Главное

  • Wireshark — бесплатный сниффер пакетов с графическим интерфейсом для анализа сетевого трафика.
  • Захват трафика выполняется через сетевой интерфейс в режиме promiscuous на уровне канального уровня.
  • Фильтрация пакетов по IP, порту, протоколу и содержимому реализована через язык BPF и display filters.
  • Анализ HTTPS требует настройки SSLKEYLOGFILE или промежуточного прокси для расшифровки сессий.
  • Мобильная отладка возможна через связку с tcpdump на устройстве и Remote Packet Capture.

Что такое Wireshark и как он работает

Wireshark — программа с открытым исходным кодом (GPLv2), которая перехватывает пакеты данных, проходящие через сетевой интерфейс компьютера. Основана на библиотеке libpcap (Unix) или Npcap (Windows) для захвата на уровне канального уровня модели OSI.

Принцип захвата пакетов

Сетевая карта в обычном режиме получает только кадры, адресованные её MAC-адресу. Wireshark переключает интерфейс в режим promiscuous (неразборчивый), при котором система обрабатывает все проходящие кадры независимо от адресата. Захваченные данные передаются в ядро через сокет raw socket, после чего библиотека libpcap копирует их в пользовательское пространство для анализа.

Архитектура обработки

Wireshark использует модульную архитектуру: каждый протокол реализован как отдельный диссектор — плагин, который парсит бинарные данные и отображает их в структурированном виде. По состоянию на 2026 год в программе реализованы диссекторы для 2 874 протоколов, включая HTTP/2, QUIC, gRPC и MQTT. Диссекторы работают через систему дерева протоколов — каждый пакет разбирается послойно: от Ethernet-кадра до прикладного уровня.

c
// Пример простого диссектора для кастомного протокола
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

Графический интерфейс 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 визуализирует последовательность пакетов между узлами, что упрощает поиск причин задержек при отладке клиент-серверного взаимодействия.

Как перехватывать трафик через Wireshark

Запуск захвата начинается с выбора сетевого интерфейса — Ethernet, Wi-Fi, Bluetooth PAN или Loopback. На Windows может потребоваться установка Npcap в режиме WinPcap API Compatible Mode. Для захвата на мобильных устройствах используется Remote Packet Capture через SSH-туннель.

Захват на удалённом устройстве

На Android-устройстве трафик перехватывается через tcpdump или PCAPdroid с последующей передачей файла на рабочий компьютер. Команда для удалённого захвата через ADB:

bash
# Захват трафика на Android через ADB shell
adb shell tcpdump -i wlan0 -s 0 -w /sdcard/capture.pcap
# Копирование на компьютер
adb pull /sdcard/capture.pcap .

Захват Loopback трафика

На Windows трафик localhost (127.0.0.1) не проходит через физический интерфейс, поэтому Wireshark не видит его напрямую. Решение — установка Npcap с опцией Loopback Support или перенаправление трафика через RawCap. На Linux и macOS loopback-интерфейс (lo) захватывается без дополнительных настроек.

Фильтрация пакетов в Wireshark

Wireshark предлагает два типа фильтров: capture filters (применяются до захвата, на уровне libpcap) и display filters (применяются к уже захваченным данным). Capture filters используют синтаксис BPF (Berkeley Packet Filter), display filters — собственный язык Wireshark с автодополнением.

Capture Filters (BPF)

BPF-фильтры записываются в формате tcpdump и выполняются в ядре, что минимизирует потерю пакетов при высокой нагрузке. Примеры фильтров:

ФильтрНазначение
tcp port 80Только HTTP-трафик на стандартном порту
host 192.168.1.1Пакеты от конкретного хоста
not arpВсе пакеты кроме ARP-запросов

Display Filters

Display filters применяются постфактум и поддерживают сложные условия с логическими операторами and, or, not. Пример: http.request.method == "POST" and ip.src == 192.168.0.100 отфильтрует только POST-запросы с конкретного IP. Фильтры можно сохранять как избранные для повторного использования.

Анализ HTTP и HTTPS трафика

HTTP-трафик отображается в Wireshark в читаемом виде: метод запроса, URI, заголовки и тело ответа. Функция Follow TCP Stream собирает полный диалог клиента и сервера в одном окне. Для HTTPS требуется расшифровка TLS-сессий, так как содержимое зашифровано.

Расшифровка HTTPS через SSLKEYLOGFILE

Браузеры Chrome и Firefox поддерживают переменную окружения SSLKEYLOGFILE, которая записывает сессионные ключи TLS в текстовый файл. Wireshark использует этот файл для расшифровки записей. Настройка выполняется через Preferences → Protocols → TLS → (Pre)-Master-Secret log filename.

bash
# Запуск Chrome с записью ключей TLS
export SSLKEYLOGFILE=/tmp/sslkeys.log
google-chrome .

# После захвата указать путь в Wireshark
# Edit → Preferences → Protocols → TLS → Log Filename

Анализ gRPC и Protobuf

gRPC использует HTTP/2 как транспорт и Protobuf для сериализации данных. Wireshark расшифровывает gRPC-сообщения, если предоставить файл .proto с определением структур. Диссектор Protobuf сопоставляет бинарные поля с именами из прото-файла, что критически важно при отладке микросервисной архитектуры.

Отладка мобильных приложений с Wireshark

Мобильная отладка через Wireshark требует проксирования трафика устройства на компьютер. Самый надёжный метод — создание точки доступа Wi-Fi на ноутбуке и перенаправление трафика через NAT. На Android также доступен VPN-метод с приложением PCAPdroid без прав root.

Настройка на Android без root

PCAPdroid создаёт локальный VPN-сервис, который перенаправляет трафик приложений на Wireshark через UDP-поток. Приложение не требует root-доступа и поддерживает фильтрацию по отдельным процессам. Полученные pcap-файлы открываются в Wireshark для полного анализа.

bash
# Приём трафика от PCAPdroid на компьютере
# PCAPdroid → Settings → PCAP dumper → UDP Exporter
nc -l -u 192.168.0.10 12345 > capture.pcap

Сравнение Wireshark с альтернативами

Wireshark — универсальный инструмент, но для конкретных задач существуют более специализированные решения. tcpdump эффективнее для серверного захвата без графики, Charles Proxy удобнее для анализа HTTPS трафика, а Fiddler — для инспекции веб-трафика с возможностью модификации запросов на лету.

Charles Proxy vs Wireshark

Charles Proxy выступает как промежуточный прокси-сервер с возможностью перехвата HTTPS через собственную SSL-сертификацию. В отличие от Wireshark, Чарльз не требует настройки SSLKEYLOGFILE и может не только просматривать, но и изменять трафик — подменять ответы, эмулировать задержки и повторять запросы.

Fiddler Everywhere

Fiddler — ещё один прокси-инструмент, популярный в .NET экосистеме. Он предоставляет встроенный редактор запросов, поддержку AutoResponder для моков и композер для создания кастомных запросов. Fiddler лучше подходит для анализа веб-трафика браузера, Wireshark — для низкоуровневого сетевого анализа.

ИнструментТипHTTPS без ключейИзменение трафика
WiresharkСнифферНет (нужен SSLKEYLOGFILE)Только просмотр
CharlesПроксиДа (кастомный сертификат)Да
FiddlerПроксиДа (кастомный сертификат)Да
tcpdumpСнифферНетТолько просмотр

Практические советы по работе с Wireshark

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

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?

Wireshark предоставляет графический интерфейс с визуализацией пакетов, встроенными фильтрами и статистикой. tcpdump — консольная утилита без GUI, удобная для серверного захвата по SSH. Wireshark умеет читать файлы tcpdump и наоборот.

Как перехватить HTTPS трафик в Wireshark?

Для расшифровки требуется файл сессионных ключей TLS (SSLKEYLOGFILE). Chrome и Firefox экспортируют ключи при запуске с переменной окружения. Путь к файлу указывается в настройках Protocols → TLS в Wireshark.

Почему Wireshark не видит трафик localhost на Windows?

Loopback-трафик на Windows не проходит через драйвер Npcap по умолчанию. Решение — установка Npcap с включённой опцией Loopback Support или использование утилиты RawCap для захвата локального трафика.

Можно ли использовать Wireshark для мобильных приложений?

Да, через проксирование трафика на компьютер. Android поддерживает захват через PCAPdroid (без root) или tcpdump (с root). iOS требует RVI (Remote Virtual Interface) через macOS или jailbreak для захвата.

Как фильтровать пакеты по содержимому в Wireshark?

Display filter frame contains ищет строку или hex-последовательность во всём пакете. Пример: frame contains "password" найдёт пакеты с подстрокой password в любом поле. Для точного поиска по полю используйте http.request.uri contains "api".

Итоги

  • Wireshark — основной инструмент для анализа сетевого трафика в разработке, поддерживающий более 2800 протоколов.
  • Захват пакетов выполняется в режиме promiscuous через библиотеку libpcap или Npcap на уровне канального доступа.
  • Фильтрация делится на capture filters (BPF, на уровне ядра) и display filters (язык Wireshark, с автодополнением).
  • HTTPS расшифровка доступна через SSLKEYLOGFILE для браузеров Chrome и Firefox.
  • Мобильная отладка реализуется через PCAPdroid (Android) или Remote Virtual Interface (iOS) без необходимости root.
  • gRPC и Protobuf поддерживаются через загрузку .proto файлов для десериализации бинарных данных.
  • Flow Graph и IO Graph помогают визуализировать задержки и находить узкие места в клиент-серверном взаимодействии.

Мы разработаем мобильное приложение под ключ

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

Читайте также