Wireshark: co to jest, analiza ruchu i przechwytywanie pakietów

Autor: IT Sectr Opublikowano: 2026-05-08 Czas czytania: 9 min

Wireshark — wiodący analizator ruchu sieciowego o otwartym kodzie źródłowym, służący do przechwytywania i inspekcji pakietów w czasie rzeczywistym. Narzędzie obsługuje ponad dwa tysiące protokołów sieciowych i działa na wszystkich głównych platformach. Według Wireshark User Guide (2026) narzędzie jest wykorzystywane do diagnostyki sieci, debugowania API i analizy bezpieczeństwa w tworzeniu aplikacji mobilnych i internetowych.

Najważniejsze

  • Wireshark — darmowy sniffer pakietów z interfejsem graficznym do analizy ruchu sieciowego.
  • Przechwytywanie ruchu odbywa się przez interfejs sieciowy w trybie promiscuous na poziomie warstwy łącza danych.
  • Filtrowanie pakietów według IP, portu, protokołu i zawartości zrealizowano za pomocą języka BPF i display filters.
  • Analiza HTTPS wymaga skonfigurowania SSLKEYLOGFILE lub pośredniczącego proxy w celu odszyfrowania sesji.
  • Debugowanie mobilne jest możliwe dzięki połączeniu z tcpdump na urządzeniu oraz Remote Packet Capture.

Co to jest Wireshark i jak działa

Wireshark — program o otwartym kodzie źródłowym (GPLv2), który przechwytuje pakiety danych przechodzące przez interfejs sieciowy komputera. Opiera się na bibliotece libpcap (Unix) lub Npcap (Windows) do przechwytywania na poziomie warstwy łącza danych modelu OSI.

Zasada przechwytywania pakietów

Karta sieciowa w trybie normalnym odbiera tylko ramki adresowane do jej adresu MAC. Wireshark przełącza interfejs w tryb promiscuous (nieprzepuszczalny dla adresowania), w którym system przetwarza wszystkie przechodzące ramki niezależnie od odbiorcy. Przechwycone dane przekazywane są do jądra przez surowy gniazdo raw socket, po czym biblioteka libpcap kopiuje je do przestrzeni użytkownika w celu analizy.

Architektura przetwarzania

Wireshark wykorzystuje architekturę modułową: każdy protokół jest zaimplementowany jako osobny dyssektor — wtyczka, która parsuje dane binarne i wyświetla je w uporządkowany sposób. Na stan z roku 2026 w programie zaimplementowano dyssektory dla 2 874 protokołów, w tym HTTP/2, QUIC, gRPC i MQTT. Dyssektory działają przez system drzewa protokołów — każdy pakiet jest analizowany warstwowo: od ramki Ethernet po warstwę aplikacji.

c
// Przykład prostego dyssektora dla niestandardowego protokołu
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;
}

Główne możliwości Wireshark

Interfejs graficzny Wireshark jest podzielony na trzy panele: listę pakietów (packet list), szczegóły protokołów (packet details) i zrzut hex (packet bytes). Każdy panel aktualizuje się w czasie rzeczywistym i obsługuje interaktywną nawigację — kliknięcie w wiersz pakietu otwiera jego pełną strukturę.

Obsługiwane formaty i protokoły

Narzędzie odczytuje pliki przechwytywania w formatach pcap, pcapng, snoop i NetMon. Eksport jest możliwy do JSON, XML, CSV i plain text. Wśród kluczowych protokołów warstwy aplikacji znajdują się: HTTP/HTTPS, DNS, DHCP, TCP, UDP, TLS, QUIC, WebSocket, MQTT, AMQP i Protobuf. Dla tworzenia aplikacji mobilnych szczególnie ważne jest wsparcie gRPC i HTTP/2 z multipleksowaniem strumieni.

Narzędzia analizy

Wbudowane narzędzia obejmują Follow Stream (odtwarzanie pełnego dialogu TCP/UDP/TLS), IO Graph (wykres przepustowości), statystyki rozmów (Conversations) oraz hierarchię protokołów (Protocol Hierarchy). Funkcja Flow Graph wizualizuje sekwencję pakietów między węzłami, co ułatwia znajdowanie przyczyn opóźnień podczas debugowania komunikacji klient-serwer.

Jak przechwytywać ruch przez Wireshark

Uruchomienie przechwytywania zaczyna się od wyboru interfejsu sieciowego — Ethernet, Wi-Fi, Bluetooth PAN lub Loopback. W systemie Windows może być konieczna instalacja Npcap w trybie WinPcap API Compatible Mode. Do przechwytywania na urządzeniach mobilnych wykorzystuje się Remote Packet Capture przez tunel SSH.

Przechwytywanie na urządzeniu zdalnym

Na urządzeniu z Androidem ruch jest przechwytywany przez tcpdump lub PCAPdroid z późniejszym przesłaniem pliku na komputer roboczy. Polecenie do zdalnego przechwytywania przez ADB:

bash
# Przechwytywanie ruchu na Androidzie przez ADB shell
adb shell tcpdump -i wlan0 -s 0 -w /sdcard/capture.pcap
# Kopiowanie na komputer
adb pull /sdcard/capture.pcap .

Przechwytywanie ruchu Loopback

W systemie Windows ruch localhost (127.0.0.1) nie przechodzi przez interfejs fizyczny, dlatego Wireshark nie widzi go bezpośrednio. Rozwiązanie — instalacja Npcap z opcją Loopback Support lub przekierowanie ruchu przez RawCap. W systemach Linux i macOS interfejs loopback (lo) jest przechwytywany bez dodatkowych ustawień.

Filtrowanie pakietów w Wireshark

Wireshark oferuje dwa typy filtrów: capture filters (stosowane przed przechwyceniem, na poziomie libpcap) i display filters (stosowane do już przechwyconych danych). Capture filters używają składni BPF (Berkeley Packet Filter), a display filters — własnego języka Wireshark z autouzupełnianiem.

Capture Filters (BPF)

Filtry BPF zapisuje się w formacie tcpdump i są wykonywane w jądrze, co minimalizuje utratę pakietów przy wysokim obciążeniu. Przykłady filtrów:

Filtr Przeznaczenie
tcp port 80 Tylko ruch HTTP na standardowym porcie
host 192.168.1.1 Pakiety od konkretnego hosta
not arp Wszystkie pakiety z wyjątkiem zapytań ARP

Display Filters

Display filters stosuje się post factum i obsługują złożone warunki z operatorami logicznymi and, or, not. Przykład: http.request.method == "POST" and ip.src == 192.168.0.100 odfiltruje tylko żądania POST z konkretnego IP. Filtry można zapisywać jako ulubione do ponownego użycia.

Analiza ruchu HTTP i HTTPS

Ruch HTTP jest wyświetlany w Wireshark w czytelnej postaci: metoda żądania, URI, nagłówki i treść odpowiedzi. Funkcja Follow TCP Stream zbiera pełny dialog klienta i serwera w jednym oknie. Dla HTTPS wymagane jest odszyfrowanie sesji TLS, ponieważ zawartość jest zaszyfrowana.

Odszyfrowanie HTTPS przez SSLKEYLOGFILE

Przeglądarki Chrome i Firefox obsługują zmienną środowiskową SSLKEYLOGFILE, która zapisuje klucze sesyjne TLS do pliku tekstowego. Wireshark wykorzystuje ten plik do odszyfrowywania rekordów. Konfiguracja odbywa się przez Preferences → Protocols → TLS → (Pre)-Master-Secret log filename.

bash
# Uruchomienie Chrome z zapisem kluczy TLS
export SSLKEYLOGFILE=/tmp/sslkeys.log
google-chrome .

# Po przechwyceniu podać ścieżkę w Wireshark
# Edit → Preferences → Protocols → TLS → Log Filename

Analiza gRPC i Protobuf

gRPC wykorzystuje HTTP/2 jako transport i Protobuf do serializacji danych. Wireshark odszyfrowuje komunikaty gRPC, jeśli podać plik .proto z definicją struktur. Dyssektor Protobuf dopasowuje pola binarne do nazw z pliku proto, co jest kluczowe przy debugowaniu architektury mikroserwisowej.

Debugowanie aplikacji mobilnych za pomocą Wireshark

Debugowanie mobilne przez Wireshark wymaga przekierowania ruchu urządzenia na komputer. Najbardziej niezawodna metoda — utworzenie punktu dostępu Wi-Fi na laptopie i przekierowanie ruchu przez NAT. W systemie Android dostępna jest również metoda VPN z aplikacją PCAPdroid bez uprawnień root.

Konfiguracja na Androidzie bez root

PCAPdroid tworzy lokalną usługę VPN, która przekierowuje ruch aplikacji do Wireshark przez strumień UDP. Aplikacja nie wymaga dostępu root i obsługuje filtrowanie według poszczególnych procesów. Uzyskane pliki pcap otwierane są w Wireshark do pełnej analizy.

bash
# Odbieranie ruchu od PCAPdroid na komputerze
# PCAPdroid → Settings → PCAP dumper → UDP Exporter
nc -l -u 192.168.0.10 12345 > capture.pcap

Porównanie Wireshark z alternatywami

Wireshark — narzędzie uniwersalne, ale dla konkretnych zadań istnieją bardziej wyspecjalizowane rozwiązania. tcpdump jest skuteczniejszy do serwerowego przechwytywania bez grafiki, Charles Proxy jest wygodniejszy do analizy ruchu HTTPS, a Fiddler — do inspekcji ruchu internetowego z możliwością modyfikowania żądań na bieżąco.

Charles Proxy vs Wireshark

Charles Proxy pełni rolę pośredniczącego serwera proxy z możliwością przechwytywania HTTPS przez własną certyfikację SSL. W przeciwieństwie do Wireshark, Charles nie wymaga konfiguracji SSLKEYLOGFILE i potrafi nie tylko wyświetlać, ale także modyfikować ruch — podmieniać odpowiedzi, emulować opóźnienia i powtarzać żądania.

Fiddler Everywhere

Fiddler — kolejne narzędzie proxy, popularne w ekosystemie .NET. Zapewnia wbudowany edytor żądań, wsparcie AutoResponder do mocków oraz kompozytor do tworzenia niestandardowych żądań. Fiddler lepiej nadaje się do analizy ruchu przeglądarki, a Wireshark — do analizy sieci niskiego poziomu.

Narzędzie Typ HTTPS bez kluczy Modyfikacja ruchu
Wireshark Sniffer Nie (wymagany SSLKEYLOGFILE) Tylko podgląd
Charles Proxy Tak (niestandardowy certyfikat) Tak
Fiddler Proxy Tak (niestandardowy certyfikat) Tak
tcpdump Sniffer Nie Tylko podgląd

Praktyczne wskazówki dotyczące pracy z Wireshark

Wireshark wymaga zrozumienia podstawowych zasad przechwytywania ruchu. Jednym z częstych scenariuszy jest poszukiwanie źródła opóźnień w aplikacji mobilnej przez filtr tcp.analysis.ack_rtt. Do znajdowania wolnych żądań HTTP użyj warunku http.time większe niż 1.

Znajdowanie wolnych żądań

Do znalezienia wolnych żądań HTTP przefiltruj http.time większe niż 1 — Wireshark pokaże żądania z czasem odpowiedzi powyżej 1 sekundy. Łącz z ip.addr do analizy konkretnego serwera. IO Graph z interwałem 1 sekundy wyraźnie pokaże piki obciążenia.

Eksport i raportowanie

Wireshark obsługuje eksport do CSV, JSON i XML przez menu File. Do automatycznej analizy używaj tshark — wersji konsolowej działającej w pipelineach CI/CD. Tshark obsługuje te same filtry i formaty wyjścia co wersja graficzna.

Praktyczne wskazówki dotyczące pracy z Wireshark

Wireshark wymaga zrozumienia podstawowych zasad przechwytywania ruchu. Jednym z częstych scenariuszy jest poszukiwanie źródła opóźnień w aplikacji mobilnej przez filtr tcp.analysis.ack_rtt. Do znajdowania wolnych żądań HTTP użyj warunku http.time większe niż 1.

Znajdowanie wolnych żądań

Do znalezienia wolnych żądań HTTP przefiltruj http.time większe niż 1 — Wireshark pokaże żądania z czasem odpowiedzi powyżej 1 sekundy. Łącz z ip.addr do analizy konkretnego serwera. IO Graph z interwałem 1 sekundy wyraźnie pokaże piki obciążenia.

Eksport i raportowanie

Wireshark obsługuje eksport do CSV, JSON i XML przez menu File. Do automatycznej analizy używaj tshark — wersji konsolowej działającej w pipelineach CI/CD. Tshark obsługuje te same filtry i formaty wyjścia co wersja graficzna.

Często zadawane pytania

Czym Wireshark różni się od tcpdump?

Wireshark zapewnia interfejs graficzny z wizualizacją pakietów, wbudowanymi filtrami i statystyką. tcpdump — narzędzie konsolowe bez GUI, wygodne do serwerowego przechwytywania przez SSH. Wireshark potrafi czytać pliki tcpdump i odwrotnie.

Jak przechwycić ruch HTTPS w Wireshark?

Do odszyfrowania wymagany jest plik kluczy sesyjnych TLS (SSLKEYLOGFILE). Chrome i Firefox eksportują klucze przy uruchomieniu ze zmienną środowiskową. Ścieżka do pliku podawana jest w ustawieniach Protocols → TLS w Wireshark.

Dlaczego Wireshark nie widzi ruchu localhost w systemie Windows?

Ruch loopback w systemie Windows nie przechodzi domyślnie przez sterownik Npcap. Rozwiązanie — instalacja Npcap z włączoną opcją Loopback Support lub użycie narzędzia RawCap do przechwytywania ruchu lokalnego.

Czy Wireshark można używać do aplikacji mobilnych?

Tak, przez przekierowanie ruchu na komputer. Android obsługuje przechwytywanie przez PCAPdroid (bez root) lub tcpdump (z root). iOS wymaga RVI (Remote Virtual Interface) przez macOS lub jailbreak do przechwytywania.

Jak filtrować pakiety według zawartości w Wireshark?

Display filter frame contains szuka ciągu znaków lub sekwencji hex w całym pakiecie. Przykład: frame contains "password" znajdzie pakiety z podciągiem password w dowolnym polu. Do dokładnego wyszukiwania według pola użyj http.request.uri contains "api" .

Podsumowanie

  • Wireshark — główne narzędzie do analizy ruchu sieciowego w tworzeniu oprogramowania, obsługujące ponad 2800 protokołów.
  • Przechwytywanie pakietów odbywa się w trybie promiscuous przez bibliotekę libpcap lub Npcap na poziomie warstwy łącza.
  • Filtrowanie dzieli się na capture filters (BPF, na poziomie jądra) i display filters (język Wireshark, z autouzupełnianiem).
  • Odszyfrowanie HTTPS jest dostępne przez SSLKEYLOGFILE dla przeglądarek Chrome i Firefox.
  • Debugowanie mobilne realizuje się przez PCAPdroid (Android) lub Remote Virtual Interface (iOS) bez konieczności root.
  • gRPC i Protobuf są obsługiwane przez ładowanie plików .proto do deserializacji danych binarnych.
  • Flow Graph i IO Graph pomagają wizualizować opóźnienia i znajdować wąskie gardła w komunikacji klient-serwer.

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również