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

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

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

Основни положения

  • Wireshark — безплатен снифер на пакети с графичен интерфейс за анализ на мрежов трафик.
  • Улавяне на трафика се извършва през мрежовия интерфейс в promiscuous режим на нивото на каналния слой.
  • Филтрирането на пакети по IP, порт, протокол и съдържание е реализирано чрез езика BPF и display филтри.
  • Анализът на 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 филтрите използват синтаксиса BPF (Berkeley Packet Filter), а display филтрите — собствения език на Wireshark с автоматично допълване.

Capture Filters (BPF)

BPF филтрите се записват във формат tcpdump и се изпълняват в ядрото, което минимизира загубата на пакети при високо натоварване. Примери за филтри:

Филтър Предназначение
tcp port 80 Само HTTP трафик на стандартния порт
host 192.168.1.1 Пакети от конкретен хост
not arp Всички пакети освен ARP заявките

Display Filters

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

Отстраняване на грешки в мобилни приложения с 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 срещу Wireshark

Charles Proxy действа като междинен прокси сървър с възможност за прихващане на HTTPS чрез собствена SSL сертификация. За разлика от Wireshark, Charles не изисква настройка на 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 филтърът frame contains търси низ или hex последователност в целия пакет. Пример: frame contains "password" ще намери пакетите с подниз password в произволно поле. За точно търсене по поле използвайте http.request.uri contains "api" .

Обобщение

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

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

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също