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 филтрите използват синтаксиса BPF (Berkeley Packet Filter), а display филтрите — собствения език на Wireshark с автоматично допълване.
BPF филтрите се записват във формат tcpdump и се изпълняват в ядрото, което минимизира загубата на пакети при високо натоварване. Примери за филтри:
| Филтър | Предназначение |
|---|---|
| tcp port 80 | Само HTTP трафик на стандартния порт |
| host 192.168.1.1 | Пакети от конкретен хост |
| not arp | Всички пакети освен ARP заявките |
Display филтрите се прилагат впоследствие и поддържат сложни условия с логически оператори 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 съпоставя двоичните полета с имената от proto файла, което е критично при отстраняване на грешки в микросервизната архитектура.
Мобилното отстраняване на грешки чрез 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, Charles не изисква настройка на 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 филтърът frame contains търси низ или hex последователност в целия пакет. Пример: frame contains "password" ще намери пакетите с подниз password в произволно поле. За точно търсене по поле използвайте http.request.uri contains "api" .
Обобщение
Ще разработим мобилно приложение под ключ
IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също