1/62
Format pcap/pcapng i narzędzia do analizy plików

Prezentacja opisuje formaty plików pcap i pcapng służące do przechowywania przechwyconych pakietów sieciowych. Omówiono strukturę obu formatów, w tym bloki pcapng (SHB, IDB, EPB) oraz narzędzia do ich przetwarzania: capinfos, editcap, mergecap i text2pcap. Przedstawiono również wykorzystanie języków Python (scapy, pyshark, dpkt) do automatyzacji analizy plików pcap.

Grafika tytułowa: ikony plików pcap, analizator sieciowy, struktura danych binarnych, zegar

Prezentacja dziesiąta koncentruje się na formatach przechowywania przechwyconych pakietów sieciowych, które stanowią fundament każdej zaawansowanej analizy ruchu. Omówione zostaną zarówno tradycyjny format pcap, jak i jego nowoczesna ewolucja pcapng, wraz z praktycznymi narzędziami do ich przetwarzania. Materiał został przygotowany w oparciu o rzeczywiste scenariusze diagnostyczne spotykane w pracy administratora sieci oraz analityka bezpieczeństwa IT.

2/62
Plan części 10

Plan części 10

  • Historia i podstawy formatów pcap/pcapng
  • Struktura pliku pcap – Global Header, Packet Record
  • Struktura pliku pcapng – bloki (SHB, IDB, EPB, SPB, NRB, ISB, DSB)
  • Porównanie pcap vs pcapng
  • capinfos – informacje o plikach
  • editcap – edycja i przycinanie
  • mergecap, reordercap – łączenie i sortowanie
  • text2pcap – konwersja hex → pcap
  • rawshark, tshark -r, tcpdump -r
  • Python + biblioteki (scapy, pyshark, dpkt)
  • Automatyzacja i przykłady
  • Podsumowanie, pytania kontrolne
Mapa myśli - plan części 10

Plan prezentacji obejmuje dwanaście głównych obszarów tematycznych, począwszy od historii i struktury formatów pcap i pcapng, przez szczegółową charakterystykę poszczególnych typów bloków, aż po praktyczne narzędzia takie jak capinfos, editcap, mergecap, text2pcap i tshark. Osobna część poświęcona została programistycznej obróbce plików pcap z wykorzystaniem języka Python i bibliotek scapy, pyshark oraz dpkt.

3/62
Pliki przechwyconych pakietów

Pliki przechwyconych pakietów

pcap (packet capture) – binarny format pliku do przechowywania przechwyconych pakietów sieciowych.

Plik pcap zawiera:

  • Nagłówek globalny (Global Header) – opisuje format pliku
  • Sekwencję rekordów pakietów (Packet Records) – każdy z timestampem i danymi

To najpopularniejszy format wymiany danych między narzędziami analitycznymi – Wireshark, tcpdump, Snort, Suricata i setki innych.

Ikona pliku pcap + lista narzędzi

Format pcap jest binarnym kontenerem zaprojektowanym do przechowywania danych pakietów przechwyconych z interfejsu sieciowego. Jego prosta struktura składa się z nagłówka globalnego i sekwencji rekordów pakietów, co czyni go łatwym do implementacji i szeroko wspieranym. Mimo swoich ograniczeń pozostaje on standardem wymiany danych między narzędziami analitycznymi w środowiskach produkcyjnych i laboratoryjnych.

4/62
Ewolucja formatu

Ewolucja formatu

  • 1994: libpcap (Lawrence Berkeley National Lab) – prosty format do przechowywania pakietów
  • 1994–2010: pcap – standard, jeden interfejs, brak metadanych
  • 2010+: pcapng (pcap Next Generation) – rozszerzony format opracowany przez tcpdump.org i Wireshark
  • 2015: Wireshark 2.x domyślnie zapisuje w pcapng
  • 2020+: pcapng wspiera wiele interfejsów, komentarze, klucze TLS, niestandardowe bloki

Oba formaty są wciąż używane – pcap dla prostoty i kompatybilności, pcapng dla zaawansowanych zastosowań.

Oś czasu 1994-dziś - ewolucja formatu

Ewolucja formatu pcap do pcapng trwała ponad piętnaście lat i wynikała z rosnących wymagań stawianych przed narzędziami do analizy ruchu. Wprowadzenie struktury blokowej umożliwiło przechowywanie metadanych, wielu interfejsów w jednym pliku oraz dołączanie kluczy deszyfrujących. Mimo że pcapng jest obecnie standardem, starszy format pcap wciąż pozostaje w użyciu ze względu na kompatybilność wsteczną i prostotę.

5/62
Global Header + Packet Records

Global Header + Packet Records

Plik pcap składa się z dwóch części:

  • Global Header (24 bajty): magic number, wersja, strefa czasowa, snaplen, link type
  • Packet Records (jeden na pakiet): timestamp (16 bajtów), captured length, original length, dane pakietu
# Struktura pliku pcap
+-----------------------+
|  Global Header (24B)  |
+-----------------------+
|  Packet Record 1      |
|  - Timestamp (16B)    |
|  - Captured len (4B)  |
|  - Original len  (4B) |
|  - Packet data        |
+-----------------------+
|  Packet Record 2      |
|  ...                  |
+-----------------------+
Schemat blokowy pliku pcap

Struktura pliku pcap jest przykładem minimalistycznego projektu kontenera danych sieciowych. Global Header o długości 24 bajtów określa podstawowe parametry formatu, po którym następują kolejne Packet Records przechowujące timestamp i surowe dane każdego pakietu. Taka konstrukcja sprawia, że pliki pcap są łatwe do parsowania nawet przy minimalnych zasobach obliczeniowych.

6/62
24 bajty nagłówka globalnego

24 bajty nagłówka globalnego

Global Header – 24 bajty na początku pliku:

# Struktura Global Header
Bajty 0-3:  Magic number  (0xa1b2c3d4 lub 0xd4c3b2a1)
Bajty 4-5:  Version major (2)
Bajty 6-7:  Version minor (4)
Bajty 8-11: Timezone offset (0 = UTC)
Bajty 12-15:Timestamp accuracy (0)
Bajty 16-19:Snaplen (maks. długość pakietu)
Bajty 20-23:Link type (DLT)

Magic number – 0xa1b2c3d4 (big-endian) lub 0xd4c3b2a1 (little-endian). Służy do wykrywania kolejności bajtów (endianness) pliku.

Magic number to podstawa – jeśli plik nie zaczyna się od 0xa1b2c3d4 lub 0xd4c3b2a1, to nie jest poprawnym plikiem pcap.
Hex dump pierwszych 24 bajtów pliku pcap

Nagłówek globalny pliku pcap rozpoczyna się od magic number, który pełni rolę sygnatury formatu i jednocześnie informuje o kolejności bajtów (endianness) zastosowanej w pliku. Pole snaplen określa maksymalną liczbę bajtów zapisywanych z każdego pakietu, co ma bezpośredni wpływ na rozmiar pliku. Pole Link Type wskazuje typ enkapsulacji warstwy łącza danych, kluczowy dla poprawnej interpretacji przechwyconych ramek.

7/62
Snaplen i DLT

Snaplen i DLT

Snaplen (snapshot length) – maksymalna liczba bajtów zapisanych z każdego pakietu (domyślnie 262144). Jeśli pakiet jest dłuższy, reszta jest ucinana.

Link type (DLT) – typ łącza danych. Określa, jak interpretować dane pakietu.

Najczęstsze DLT:

  • DLT_EN10MB (1): Ethernet (10/100/1000 Mb/s)
  • DLT_IEEE802_11 (105): WLAN 802.11
  • DLT_LINUX_SLL (113): Linux cooked (raw socket)
  • DLT_RAW (12): surowy IP (bez nagłówka warstwy 2)
  • DLT_NULL (0): BSD loopback
Zły DLT = błędna interpretacja pakietów – Wireshark pokaże śmieci.
Tabela DLT

Parametr snaplen jest często pomijany w analizie, a ma kluczowe znaczenie dla kompletności przechwyconych danych - zbyt mała wartość powoduje ucięcie payloadu pakietu, uniemożliwiając analizę zawartości protokołów wyższych warstw. DLT (Data Link Type) to liczba całkowita identyfikująca typ nagłówka warstwy łącza, zdefiniowana w rejestrze prowadzonym przez tcpdump.org. Nieprawidłowe ustawienie DLT prowadzi do błędnej interpretacji całego pliku.

8/62
Rekord pakietu w pcap

Rekord pakietu w pcap

Każdy zapisany pakiet ma 16-bajtowy nagłówek rekordu + dane:

# Packet Record Header (16 bajtów)
Bajty 0-3:  Timestamp seconds (Unix time)
Bajty 4-7:  Timestamp microseconds
Bajty 8-11: Captured length (bajty zapisane w pliku)
Bajty 12-15:Original length (rzeczywista długość pakietu)
Bajty 16+:  Packet data (captured length bajtów)

Timestamp – czas przechwycenia w Unix timestamp (sekundy od 1970-01-01). Część mikrosekundowa daje precyzję do mikrosekundy.

Captured lengthOriginal length (gdy snaplen jest mniejszy niż pakiet).

Hex dump rekordu pakietu

Rekord pakietu w formacie pcap składa się z szesnastobajtowego nagłówka zawierającego timestamp i długości, po którym następują surowe dane przechwyconego pakietu. Timestamp jest zapisany jako 32-bitowa liczba sekund od epoki Unix oraz 32-bitowa liczba mikrosekund, co daje precyzję wystarczającą dla większości zastosowań. Warto zwrócić uwagę na pole Original Length, które informuje o rzeczywistej długości pakietu przed ewentualnym przycięciem przez snaplen.

9/62
DLT – jak pcap wie, co przechwycił?

DLT – jak pcap wie, co przechwycił?

Link type w Global Header określa, jaki nagłówek warstwy 2 zawiera każdy pakiet:

DLTNazwaNagłówekZastosowanie
1DLT_EN10MBEthernet II (14 B)Sieci przewodowe
105DLT_IEEE802_11802.11 (24+ B)Wi-Fi
113DLT_LINUX_SLLLinux cooked (16 B)Raw socket (tcpdump)
12DLT_RAWBrakSurowy IP
101LINKTYPE_RAWBrak (nagłówek IP)Surowy IP (wartość 101 w pliku pcap)
0DLT_NULL4 B (address family)BSD loopback

Wireshark automatycznie rozpoznaje DLT i stosuje odpowiedni parser.

Ramki Ethernet, 802.11 i Linux SLL

Wartości DLT są rejestrowane i zarządzane przez organizację tcpdump.org, a ich aktualna lista obejmuje kilkaset zdefiniowanych typów łącza danych. DLT_EN10MB o wartości 1 jest najczęściej spotykany i odpowiada standardowym ramkom Ethernet II z nagłówkiem o długości 14 bajtów. W praktyce analitycznej błędne rozpoznanie DLT jest jednym z częstszych powodów problemów z interpretacją przechwyconego ruchu.

10/62
Co nie działa w pcap?

Co nie działa w pcap?

  • Jeden interfejs – plik pcap opisuje tylko jeden interfejs sieciowy
  • Brak komentarzy – nie można dodać adnotacji do pakietów
  • Brak metadanych – brak informacji o aplikacji, systemie, konfiguracji
  • Brak statystyk – brak danych o utraconych pakietach, obciążeniu
  • Brak kluczy deszyfrujących – nie można dołączyć kluczy TLS do pliku
  • Stały snaplen – wszystkie pakiety w pliku mają ten sam snaplen
  • Brak rozszerzeń – każdy program musi zgadywać kontekst

Te ograniczenia były motywacją do stworzenia pcapng.

Jeśli widzisz plik .pcap, możesz go skonwertować do .pcapng bez straty danych – Wireshark: File → Export Specified Packets → pcapng.
Ograniczenia pcap

Ograniczenia formatu pcap stały się widoczne wraz z rozwojem zaawansowanych technik analizy sieciowej i rosnącą złożonością środowisk produkcyjnych. Brak możliwości przechowywania komentarzy, statystyk interfejsu czy kluczy deszyfrujących wymuszał przechowywanie tych informacji w osobnych plikach, co komplikowało zarządzanie danymi. Format pcapng został zaprojektowany specjalnie w celu rozwiązania tych niedogodności przy zachowaniu maksymalnej kompatybilności wstecznej.

11/62
pcapng – Next Generation

pcapng – Next Generation

pcapng (PCAP Next Generation) – nowy format przechowywania przechwyconych pakietów. Rozszerza możliwości pcap o elastyczną strukturę blokową.

Cechy pcapng:

  • Struktura blokowa – każdy blok ma swój typ i długość
  • Wiele interfejsów w jednym pliku
  • Zmienne snaplen dla różnych interfejsów
  • Komentarze i metadane
  • Statystyki interfejsów (utracone pakiety, przepustowość)
  • Klucze deszyfrujące (TLS)
  • Bloki niestandardowe (własne rozszerzenia)
Od Wireshark 3.x pcapng jest domyślnym formatem zapisu. tcpdump wciąż domyślnie zapisuje pcap.
Schemat pliku pcapng – kolorowe bloki

Struktura blokowa formatu pcapng stanowi jego największą zaletę i jednocześnie fundamentalną różnicę w stosunku do liniowego formatu pcap. Każdy blok rozpoczyna się od wspólnego nagłówka identyfikującego typ i długość, co pozwala na pomijanie nierozpoznanych bloków bez utraty danych. Taka architektura umożliwia rozszerzanie formatu o nowe typy bloków bez naruszania kompatybilności z istniejącymi narzędziami.

12/62
Block – uniwersalna jednostka

Block – uniwersalna jednostka

Każdy blok w pcapng ma wspólny nagłówek:

# Nagłówek bloku pcapng (8 bajtów)
Bajty 0-3: Block Type (4 bajty)
Bajty 4-7: Block Total Length (4 bajty) – długość całego bloku
...
Bajty N-4..N-1: Block Total Length (powtórzony)

Block Type identyfikuje rodzaj bloku:

  • 0x0A0D0D0A – Section Header Block (SHB)
  • 0x00000001 – Interface Description Block (IDB)
  • 0x00000006 – Enhanced Packet Block (EPB)
  • 0x00000003 – Simple Packet Block (SPB)
  • 0x00000004 – Name Resolution Block (NRB)
  • 0x00000005 – Interface Statistics Block (ISB)
  • 0x0000000A – Decryption Secrets Block (DSB)
Schemat bloku pcapng

Uniwersalny nagłówek bloku w pcapng składa się z czterobajtowego pola Block Type oraz czterobajtowego pola Block Total Length, które pojawia się ponownie na końcu bloku, co ułatwia nawigację. Block Type o wartości 0x0A0D0D0A identyfikuje Section Header Block i pełni funkcję magic number dla całego formatu. Pozostałe typy bloków, takie jak IDB, EPB czy ISB, są już specyficzne dla poszczególnych kategorii danych przechowywanych w pliku.

13/62
Nagłówek sekcji pcapng

Nagłówek sekcji pcapng

Section Header Block (SHB) – pierwszy blok w pliku pcapng. Określa wersję formatu i metadane sekcji.

Struktura:

# SHB (minimum 28 bajtów)
Block Type: 0x0A0D0D0A (magic pcapng)
Block Total Length
Byte Order Magic: 0x1A2B3C4D (wykrycie endianness)
Major Version: 1
Minor Version: 0
Section Length: -1 (nieznana) lub długość
Opcje (zmienna): komentarz, nazwa aplikacji, SHA256
Block Total Length (powtórzony)

Plik może zawierać wiele sekcji – każda zaczyna się od SHB.

Hex dump SHB

Section Header Block (SHB) jest zawsze pierwszym blokiem w pliku pcapng i może występować wielokrotnie, jeśli plik zawiera wiele niezależnych sekcji. Wewnątrz SHB znajduje się pole Byte Order Magic o wartości 0x1A2B3C4D, które służy do automatycznego wykrywania endianness pliku. Opcjonalne pola w SHB mogą zawierać komentarz, nazwę aplikacji, która wygenerowała plik, oraz sumę kontrolną SHA256 całej sekcji.

14/62
Opis interfejsu

Opis interfejsu

Interface Description Block (IDB) – opisuje interfejs, z którego pochodzą pakiety.

# IDB
Block Type: 0x00000001
Block Total Length
Link Type: DLT (jak w pcap)
Reserved: 0
Snaplen: maks. długość pakietu dla tego interfejsu
Opcje (zmienna):
  - if_name: nazwa interfejsu (np. eth0, \Device\NPF_{...})
  - if_description: opis
  - if_MAC: adres MAC
  - if_speed: prędkość (bps)
  - if_tsresol: rozdzielczość timestampu (domyślnie 10^-6)
Block Total Length (powtórzony)
IDB pozwala przechowywać pakiety z wielu interfejsów w jednym pliku – każdy pakiet ma identyfikator interfejsu (interface_id).
Schemat IDB

Interface Description Block (IDB) dostarcza szczegółowych informacji o każdym interfejsie sieciowym, z którego pochodzą przechwycone pakiety. Dzięki IDB możliwe jest przechowywanie w jednym pliku pcapng pakietów z wielu różnych interfejsów, co jest szczególnie przydatne przy przechwytywaniu z użyciem mostków sieciowych lub w środowiskach z wieloma VLAN-ami. Opcjonalne pola IDB mogą zawierać nazwę interfejsu, adres MAC, prędkość oraz rozdzielczość timestampu.

15/62
Rozszerzony blok pakietu

Rozszerzony blok pakietu

Enhanced Packet Block (EPB) – główny blok do przechowywania pakietów w pcapng. Rozszerza Packet Record z pcap o dodatkowe informacje.

# EPB
Block Type: 0x00000006
Block Total Length
Interface ID: który interfejs (indeks IDB)
Timestamp (High + Low): 64-bitowa wartość
Captured Packet Length: długość zapisana
Original Packet Length: oryginalna długość
Packet Data: dane pakietu
Opcje (zmienna):
  - komentarz (opt_comment)
  - flagi (np. direction: inbound/outbound)
  - hash (SHA1, MD5)
  - pakiet został przycięty (dropcount)
Block Total Length (powtórzony)
Porównanie Packet Record vs EPB

Enhanced Packet Block (EPB) jest rozwinięciem Packet Record z formatu pcap i stanowi główny blok do przechowywania pakietów w pcapng. Wprowadza on 64-bitowy timestamp zamiast 32-bitowego, co eliminuje problem roku 2038 i umożliwia wyższą rozdzielczość czasową. Dodatkowe pola opcjonalne w EPB pozwalają na dołączenie komentarzy, flag kierunku transmisji oraz sum kontrolnych, co znacząco wzbogaca możliwości analityczne pliku.

16/62
Precyzyjny czas

Precyzyjny czas

EPB używa 64-bitowego timestampu (High + Low) zamiast 32-bit + mikrosekundy.

Domyślna rozdzielczość: mikrosekundy (10^-6 s). Można zmienić przez opcję if_tsresol w IDB.

Przykład timestampu:

# Timestamp 64-bit – domyślnie mikrosekundy
Timestamp High (4 bajty): 0x00000000
Timestamp Low  (4 bajty): 0x12345678
# Wartość = High * 2^32 + Low = 0x12345678 us
# Czas Unix: 0x12345678 us = 305419896 us ≈ 305.42 s

Dzięki 64 bitom timestamp może reprezentować czas z wysoką precyzją bez przepełnienia (w odróżnieniu od 32-bitowych sekund Unixowych – problem roku 2038).

64-bitowy timestamp

64-bitowy timestamp zastosowany w EPB rozwiązuje dwa kluczowe problemy występujące w formacie pcap: ograniczoną precyzję do mikrosekund oraz ryzyko przepełnienia 32-bitowej liczby sekund w roku 2038. Rozdzielczość timestampu może być modyfikowana przez opcję if_tsresol w IDB, co pozwala na dostosowanie precyzji do potrzeb konkretnego zastosowania. Dla większości zastosowań domyślna rozdzielczość mikrosekundowa jest w pełni wystarczająca.

17/62
Uproszczony blok pakietu

Uproszczony blok pakietu

Simple Packet Block (SPB) – lżejsza wersja EPB. Nie zawiera timestampu i interfejsu – używa domyślnych wartości z sekcji.

# SPB
Block Type: 0x00000003
Block Total Length
Original Packet Length
Packet Data (reszta pakietu)
Block Total Length (powtórzony)

Zalety: mniejszy narzut na pakiet – oszczędność miejsca i czasu zapisu.

Wady: brak timestampu (używany jest czas ostatniego EPB lub domyślny), brak możliwości identyfikacji interfejsu.

Przydatny przy szybkim przechwytywaniu, gdy timestamp nie jest krytyczny.

W praktyce SPB jest rzadko używane – większość narzędzi zapisuje EPB z timestampem.
Porównanie EPB vs SPB

Simple Packet Block (SPB) został zaprojektowany z myślą o scenariuszach, w których priorytetem jest szybkość zapisu, a nie bogactwo metadanych. Rezygnacja z timestampu i identyfikatora interfejsu znacząco redukuje narzut na pakiet, co przekłada się na mniejsze zużycie pasma przy przechwytywaniu i mniejsze pliki wynikowe. W praktyce SPB jest jednak rzadko stosowane, ponieważ większość narzędzi domyślnie używa EPB ze względu na kompletność informacji.

18/62
Rozwiązywanie nazw w pliku

Rozwiązywanie nazw w pliku

Name Resolution Block (NRB) – przechowuje pary adres IP ↔ nazwa hosta (DNS) oraz adres MAC ↔ nazwa producenta (OUI).

# NRB
Block Type: 0x00000004
Block Total Length
Records (zmienna):
  - 192.168.1.1 → gwiazda.lan (DNS)
  - 00:11:22:33:44:55 → Intel Corp (OUI)
  - nsls: nazwa serwera DNS
Block Total Length (powtórzony)

NRB umożliwia przenoszenie rozpoznanych nazw razem z plikiem pcapng – analiza bez dostępu do DNS.

Wireshark może dodawać NRB podczas zapisu, jeśli włączono rozpoznawanie nazw.

Schemat NRB

Name Resolution Block (NRB) rozwiązuje praktyczny problem analizy sieciowej: po przeniesieniu pliku pcap do innego środowiska tracimy możliwość rozpoznawania nazw DNS. Dzięki NRB możemy na stałe dołączyć do pliku pary adresów IP i odpowiadających im nazw hostów, co znacznie ułatwia analizę. Wireshark automatycznie dodaje NRB podczas zapisu, jeśli opcja rozpoznawania nazw jest włączona w ustawieniach programu.

19/62
Statystyki interfejsu

Statystyki interfejsu

Interface Statistics Block (ISB) – przechowuje statystyki interfejsu zebrane podczas przechwytywania.

# ISB
Block Type: 0x00000005
Block Total Length
Interface ID: indeks interfejsu
Timestamp (High+Low): czas generowania statystyk
Opcje:
  - isb_starttime: czas rozpoczęcia
  - isb_endtime: czas zakończenia
  - isb_ifrecv: liczba odebranych pakietów
  - isb_ifdrop: liczba utraconych pakietów
  - isb_filteraccept: pakiety zaakceptowane przez filtr
  - isb_osdrop: dropy systemowe
  - isb_usrdeliv: pakiety dostarczone do aplikacji
Block Total Length (powtórzony)
ISB pozwala ocenić, ile pakietów zostało utraconych podczas przechwytywania – bez tego nie wiesz, czy próbka jest kompletna.
Wykres statystyk interfejsu

Interface Statistics Block (ISB) dostarcza informacji o liczbie pakietów odebranych i utraconych podczas przechwytywania, co pozwala ocenić kompletność próbki. Jest to szczególnie istotne w środowiskach o wysokiej przepustowości, gdzie przechwytywanie wszystkich pakietów może być niemożliwe ze względu na ograniczenia sprzętowe. Dane z ISB pomagają odróżnić rzeczywisty brak ruchu od utraty pakietów spowodowanej przeciążeniem systemu przechwytującego.

20/62
Klucze deszyfrujące

Klucze deszyfrujące

Decryption Secrets Block (DSB) – nowość w pcapng (2018+). Przechowuje klucze deszyfrujące (TLS, SSL, WireGuard) dołączone do pliku.

Zawartość DSB:

  • Klucze RSA (prywatne) – do deszyfrowania sesji TLS
  • Klucze sesji TLS (Session Keys / Pre-Master Secrets)
  • Klucze WireGuard
  • Hasła/klucze do innych protokołów

Format secret type: tls.key_log, tls.rsa, wireguard.decryption_key.

# Przykład DSB z kluczami TLS
Block Type: 0x0000000A
Secrets Type: tls.key_log
Secrets Data: CLIENT_RANDOM xxx yyy
DSB to przełom – możesz udostępnić plik pcapng z kluczami TLS, a odbiorca zobaczy odszyfrowany ruch bez osobnego pliku z kluczami.
DSB + Wireshark odszyfrowuje TLS

Decryption Secrets Block (DSB) to jedna z najważniejszych innowacji w formacie pcapng, umożliwiająca bezpieczne dołączanie kluczy deszyfrujących bezpośrednio do pliku z przechwyconym ruchem. Dzięki DSB analityk może udostępnić zaszyfrowany ruch wraz z kluczami w jednym pliku, co radykalnie upraszcza współpracę i analizę incydentów bezpieczeństwa. Format obsługuje klucze TLS, SSL, WireGuard oraz inne protokoły szyfrujące.

21/62
Własne rozszerzenia

Własne rozszerzenia

Custom Block (Custom Data Block) – blok o typie z zakresu 0x00000B00–0x00000BFF (prywatne) lub zarejestrowane przez organizację.

Umożliwia:

  • Dodawanie danych specyficznych dla aplikacji
  • Rozszerzanie formatu o własne metadane
  • Przechowywanie informacji o konfiguracji narzędzia

Przykład użycia: Zeek (Bro) zapisuje w custom block informacje o połączeniu HTTP.

Format:

# Custom Block (prywatny użytek)
Block Type: 0x00000B00
Block Total Length
Custom Data (dowolne dane binarne)
Block Total Length (powtórzony)
Schemat Custom Block

Custom Block to mechanizm rozszerzalności formatu pcapng, który pozwala producentom oprogramowania i organizacjom na przechowywanie własnych danych w standardowym kontenerze. Zakres typów 0x00000B00–0x00000BFF jest zarezerwowany dla zastosowań prywatnych i eksperymentalnych, co pozwala na testowanie nowych funkcji przed ich standaryzacją. Przykładem praktycznego zastosowania jest system Zeek, który zapisuje w Custom Block dane o sesjach HTTP.

22/62
Dlaczego warto używać pcapng?

Dlaczego warto używać pcapng?

  • Wiele interfejsów – przechwytuj jednocześnie eth0, wlan0, tun0
  • Komentarze – dodawaj adnotacje do pakietów (np. „to jest atak")
  • Metadane interfejsu – nazwa, MAC, prędkość, rozdzielczość czasu
  • Statystyki – wbudowane informacje o dropach i liczbie pakietów
  • Klucze deszyfrujące – TLS Session Keys w pliku
  • Rozszerzenia – Custom Block dla własnych danych
  • Przyszłościowy – społeczność stale rozwija format
Zawsze wybieraj pcapng, chyba że wymagasz kompatybilności z bardzo starym narzędziem (sprzed 2010).
Diagram Venna – pcap vs pcapng

Wybór formatu pcapng zamiast pcap przekłada się na konkretne korzyści w codziennej pracy analityka sieciowego. Możliwość przechowywania danych z wielu interfejsów w jednym pliku eliminuje konieczność zarządzania wieloma plikami podczas równoczesnego przechwytywania z różnych źródeł. Komentarze i metadane dodawane bezpośrednio do pliku pcapng sprawiają, że współpraca w zespole staje się prostsza, a kontekst analizy nie ginie przy przekazywaniu danych.

23/62
Który format wybrać?

Który format wybrać?

Cechapcappcapng
Liczba interfejsówJedenWiele
Timestamp32-bit + us (16 B)64-bit (zmienna rozdzielczość)
KomentarzeBrakTak (opt_comment)
StatystykiBrakISB (Interface Statistics)
Klucze TLSBrakDSB (Decryption Secrets)
RozszerzeniaBrakCustom Block
Rozmiar plikuMniejszy narzutWiększy (bardziej elastyczny)
KompatybilnośćBardzo wysokaWysoka (Wireshark 2+, tcpdump 4.99+)
ZalecanyTylko dla starych narzędziWszystkie nowe projekty
Porównanie pcap i pcapng

Porównanie pcap i pcapng w formie tabelarycznej pozwala szybko ocenić, który format będzie odpowiedni dla konkretnego zastosowania. pcap sprawdza się tam, gdzie najważniejsza jest prostota i maksymalna kompatybilność z legacy tools, natomiast pcapng jest zalecany dla wszystkich nowych projektów i zaawansowanych analiz. W praktyce warto pamiętać, że narzut pamięciowy pcapng jest minimalny w porównaniu z korzyściami, jakie oferuje.

24/62
capinfos – podstawy

capinfos – podstawy

capinfos – narzędzie z pakietu Wireshark. Wyświetla szczegółowe informacje o plikach pcap/pcapng.

# Podstawowe użycie
capinfos plik.pcap

# Wynik:
File name:           plik.pcap
File type:           Wireshark/tcpdump/... - pcap
File encapsulation:  Ethernet
File timestamp precision:  microseconds (6)
Packet size limit:   file hdr: 262144 bytes
Number of packets:   1.5 k
File size:           2.3 MB
Data size:           2.1 MB
Capture duration:    300.42 seconds
First packet time:   2024-01-15 10:00:00.123456
Last packet time:    2024-01-15 10:05:00.543210
Data byte rate:      7.0 kBps
Data bit rate:       56 kbps
Average packet size: 1.4 kB
Average packet rate: 5.0 packets/s
capinfos to pierwsze narzędzie, które powinieneś uruchomić na nieznanym pliku pcap – daje pełny obraz danych.
Wynik capinfos

Narzędzie capinfos jest często pierwszym krokiem w analizie nieznanego pliku pcap, dostarczając kompleksowych informacji o jego zawartości. W jednym wywołaniu uzyskujemy dane o liczbie pakietów, czasie trwania przechwytywania, przepustowości, typie enkapsulacji oraz precyzji znaczników czasowych. Te informacje są niezbędne do podjęcia decyzji o dalszych krokach analizy, takich jak wybór odpowiednich filtrów czy zakresu czasowego do badania.

25/62
Różne formaty wyjścia

Różne formaty wyjścia

capinfos obsługuje kilka formatów wyjścia:

  • -A (verbose) – szczegółowe informacje (domyślne)
  • -M (machine-readable) – wyjście w formacie klucz=wartość, łatwe do parsowania
  • -T (table) – tabela dla wielu plików jednocześnie (CSV lub TSV)
  • -L (long) – wszystkie możliwe pola
# Wyjście maszynowe (-M)
capinfos -M plik.pcap
# Wynik:
file_name=plik.pcap
file_type=Wireshark/tcpdump/... - pcap
number_of_packets=1500
capture_duration=300.42
...

# Tabela dla wielu plików (-T)
capinfos -T *.pcap
Opcja -M jest idealna do skryptów – możesz przekazać wynik do awk, grep, Pythona.
capinfos -M i -T

Różne formaty wyjścia capinfos zostały zaprojektowane z myślą o różnych zastosowaniach - od czytelnego dla człowieka wyjścia szczegółowego, przez format maszynowy dla skryptów, po tabelę zbiorczą dla wielu plików. Format maszynowy (-M) jest szczególnie przydatny w automatyzacji, ponieważ generuje pary klucz=wartość łatwe do przetworzenia przez skrypty bash, awk czy Python. Opcja tabeli (-T) umożliwia szybkie porównanie wielu plików w jednym przebiegu.

26/62
Selektywne informacje

Selektywne informacje

capinfos pozwala wybrać, które informacje wyświetlić:

# Tylko czas trwania
capinfos -c -d plik.pcap
# Wynik: 300.42

# Tylko liczba pakietów i rozmiar
capinfos -c -s plik.pcap

# Tylko typ enkapsulacji
capinfos -E plik.pcap

# Sprawdź typ pliku (pcap/pcapng)
capinfos -t plik.pcap

Lista opcji: -c (packets), -d (duration), -s (size), -E (encapsulation), -t (file type), -a (start time), -e (end time), -y (data rate).

Tabela opcji capinfos

Selektywne opcje capinfos pozwalają na wyciągnięcie tylko tych informacji, które są aktualnie potrzebne, bez konieczności przetwarzania całego wyjścia narzędzia. Jest to szczególnie przydatne w skryptach, gdzie interesuje nas tylko jeden konkretny parametr, na przykład liczba pakietów lub czas trwania przechwytywania. Połączenie odpowiednich przełączników pozwala na szybkie pozyskanie dokładnie tych metryk, które są wymagane do raportu lub dalszej analizy.

27/62
Skryptowanie z capinfos

Skryptowanie z capinfos

Przykład: zbieranie statystyk ze wszystkich plików pcap w katalogu:

for f in *.pcap; do
  capinfos -c -d -s -y "$f"
done

lub z opcją tabeli:

capinfos -T -c -d -s -y *.pcap

Wynik tabeli można przekierować do pliku CSV i otworzyć w Excelu:

capinfos -T -c -d -s -y *.pcap > statystyki.csv
Łącząc capinfos z awk/sed możesz wyciągnąć dowolne metryki z setek plików w sekundę.
Arkusz kalkulacyjny z danymi capinfos

Skryptowanie z capinfos otwiera możliwość automatycznego przetwarzania dużych zbiorów plików pcap, co jest typowym zadaniem w środowiskach SOC i NOC. Łączenie capinfos z potokami poleceń bash pozwala na generowanie raportów w formacie CSV, które można następnie importować do arkuszy kalkulacyjnych lub narzędzi analitycznych. W połączeniu z narzędziami takimi jak awk, sort i uniq możemy uzyskać zaawansowane statystyki bez pisania skomplikowanego kodu.

28/62
Edycja plików pcap

Edycja plików pcap

editcap – narzędzie do edycji i przycinania plików pcap/pcapng. Pozwala wybrać zakres pakietów, zmienić timestamp, przyciąć snaplen, usunąć duplikaty.

Składnia podstawowa:

editcap [opcje] plik_wejsciowy plik_wyjsciowy

Przykład – kopiowanie całego pliku:

editcap -F pcapng oryginal.pcap kopia.pcapng

Opcja -F określa format wyjścia (pcap, pcapng, pcap-ng).

Schemat editcap

Editcap jest jednym z najczęściej używanych narzędzi w zestawie Wireshark, służącym do podstawowej obróbki plików pcap przed właściwą analizą. Umożliwia nie tylko wycinanie zakresów pakietów, ale także konwersję między formatami pcap i pcapng, co jest przydatne przy pracy z narzędziami obsługującymi tylko starszy format. Opcja -F pozwala na określenie docelowego formatu pliku, a -C na dołączenie komentarzy do pakietów.

29/62
Wycinanie zakresu

Wycinanie zakresu

Opcja -r (range) wybiera pakiety według numeru (1-indeksowane):

# Pakiety 1-100
editcap -r 1-100 duzy.pcap pierwsze100.pcap

# Pakiety 50-200
editcap -r 50-200 duzy.pcap srodek.pcap

# Tylko pakiet 1
editcap -r 1 duzy.pcap pierwszy.pcap

# Od pakietu 100 do końca
editcap -r 100-0 duzy.pcap od100.pcap

# Lista zakresów (pakiety 1-50 i 100-200)
editcap -r 1-50,100-200 duzy.pcap wybrane.pcap
Numeracja pakietów w editcap zaczyna się od 1 (nie od 0). Zakresy można łączyć przecinkami.
Wycinanie zakresu z pliku

Wycinanie zakresów pakietów za pomocą opcji -r editcap jest podstawową techniką redukcji rozmiaru plików pcap przed ich dalszą analizą. Zakresy mogą być definiowane pojedynczo, jako przedziały, a także łączone przecinkami, co daje dużą elastyczność w selekcji pakietów. Warto pamiętać, że numeracja pakietów w editcap zaczyna się od 1, co jest zgodne z numeracją stosowaną w Wireshark, ale różni się od indeksowania od 0 stosowanego w wielu bibliotekach programistycznych.

30/62
Dzielenie na mniejsze części

Dzielenie na mniejsze części

Opcja -c dzieli plik na mniejsze pliki po N pakietów każdy:

# Podziel co 1000 pakietów
editcap -c 1000 duzy.pcap czesc
# Powstanie: czesc_00001.pcap, czesc_00002.pcap, ...

# Podziel co 500 pakietów
editcap -c 500 duzy.pcap part

Przydatne, gdy plik jest za duży do otwarcia w Wireshark (np. > 1 GB).

Można też dzielić według czasu:

# Podziel co 60 sekund
editcap -i 60 duzy.pcap rozdzial
Dzielenie pliku na części

Dzielenie dużych plików pcap na mniejsze części za pomocą editcap jest niezbędne przy pracy z przechwyceniami trwającymi godziny lub dni, które mogą osiągać rozmiary gigabajtów. Opcja -c dzieli według liczby pakietów, co daje części o przewidywalnej wielkości, natomiast opcja -i dzieli według interwałów czasowych, co jest przydatne przy analizie zdarzeń cyklicznych. Oba podejścia znajdują zastosowanie w różnych scenariuszach diagnostycznych.

31/62
Przycinanie pakietów

Przycinanie pakietów

Opcja -s (snaplen) zmienia maksymalną długość przechowywanego pakietu:

# Przycięcie do 128 bajtów (tylko nagłówki)
editcap -s 128 pelne.pcap przyciete.pcap

# Przycięcie do 64 bajtów
editcap -s 64 pelne.pcap tylko_naglowki.pcap

# Przywrócenie pełnego snaplen (262144)
editcap -s 262144 przyciete.pcap pelne.pcap
# UWAGA: nie odzyskasz uciętych danych!

Zmniejszenie snaplen redukuje rozmiar pliku – przydatne do szybszej transmisji.

Zmiana snaplen jest nieodwracalna – jeśli utniesz dane, nie odzyskasz ich. Zawsze zachowuj oryginał!
Pakiet pełny vs przycięty

Zmiana snaplen za pomocą opcji -s editcap jest operacją nieodwracalną i należy ją stosować z rozwagą, ponieważ ucięte dane payloadu nie mogą być później odzyskane. Przycinanie pakietów jest przydatne w sytuacjach, gdy interesują nas wyłącznie nagłówki protokołów, a zawartość danych użytkownika nie jest potrzebna do analizy. Typowym zastosowaniem jest przycinanie do 64 lub 128 bajtów w celu zachowania nagłówków IP i TCP przy jednoczesnym usunięciu payloadu.

32/62
Zmiana czasu pakietów

Zmiana czasu pakietów

Opcja -t modyfikuje timestamp wszystkich pakietów:

# Przesuń czas o +3600 sekund (1 godzina do przodu)
editcap -t 3600 plik.pcap przesuniety.pcap

# Przesuń czas o -1800 sekund (30 minut do tyłu)
editcap -t -1800 plik.pcap cofniety.pcap

# Ustaw pierwszy pakiet na czas 0 (Unix epoch)
editcap -t 0 plik.pcap od_zera.pcap
# Uwaga: -t 0 ustawia bezwzględny czas każdego pakietu na 0

Opcja -T (adjustment) – precyzyjna korekta: -T 0.001 (1 ms do przodu).

Przydatne do synchronizacji czasu między plikami z różnych źródeł.

Oś czasu z przesuniętymi znacznikami

Modyfikacja timestampu pakietów za pomocą editcap może być potrzebna w kilku scenariuszach: synchronizacji czasu między plikami z różnych źródeł, korekcie błędnie ustawionego zegara na urządzeniu przechwytującym lub przygotowaniu danych do testów. Opcja -t pozwala na przesunięcie czasu o stałą wartość, co jest najczęściej stosowaną operacją. Dla bardziej zaawansowanych korekt czasowych dostępna jest opcja -T umożliwiająca precyzyjne dostrojenie z rozdzielczością mikrosekundową.

33/62
Oczyszczanie pliku

Oczyszczanie pliku

Opcja -d usuwa zduplikowane pakiety (te same dane, ten sam czas):

# Usuń duplikaty
editcap -d plik_z_duplikatami.pcap czysty.pcap

# Usuń duplikaty z uwzględnieniem różnicy czasu (100 ms)
editcap -D 100 plik_z_duplikatami.pcap czysty2.pcap

Opcja -D (z wielką literą) – próg czasowy w mikrosekundach. Dwa pakiety są uznane za duplikaty, jeśli mają te same dane, a różnica czasu ≤ próg.

Przydatne przy czyszczeniu plików z przechwyceń TAP/SPAN, gdzie ten sam pakiet może być przechwycony dwukrotnie.

De-duplikacja zmniejsza rozmiar pliku, ale usuwa informację o tym, że pakiet występował wielokrotnie – używaj rozważnie.
Duplikaty do usunięcia

Usuwanie duplikatów pakietów za pomocą editcap jest szczególnie przydatne przy czyszczeniu danych z przechwyceń realizowanych przez TAPy i SPANy, gdzie ten sam pakiet może być przechwycony wielokrotnie. Opcja -d usuwa pakiety o identycznej zawartości i czasie, natomiast opcja -D wprowadza próg czasowy, co pozwala na elastyczne definiowanie duplikatu. Należy jednak pamiętać, że de-duplikacja usuwa informacje o wielokrotnym wystąpieniu pakietu, co może mieć znaczenie w analizie ruchu broadcast.

34/62
Inne opcje editcap

Inne opcje editcap

  • Łączenie plików: do łączenia plików służy mergecap (nie editcap):
mergecap -w polaczony.pcap plik1.pcap plik2.pcap
  • Wybór przedziału czasowego: opcja -A (start time) i -B (end time):
editcap -A "2024-01-15 10:00:00" -B "2024-01-15 11:00:00" plik.pcap wycinek.pcap
Opcje editcap

Editcap oferuje szereg dodatkowych opcji wykraczających poza podstawowe przycinanie i dzielenie plików. Opcja -A i -B umożliwia wybór pakietów z określonego przedziału czasowego, co jest niezwykle przydatne przy analizie incydentów o znanym czasie wystąpienia. Do scalania wielu plików służy mergecap, nie editcap.

35/62
Scalanie wielu plików

Scalanie wielu plików

mergecap – narzędzie do łączenia plików pcap/pcapng w jeden plik, z domyślnym sortowaniem po czasie.

# Scal dwa pliki
mergecap -w scalony.pcap plik1.pcap plik2.pcap

# Scal wszystkie pliki z katalogu
mergecap -w wszystko.pcap *.pcap

Domyślnie mergecap sortuje pakiety według timestampu (rosnąco).

Opcja -w określa plik wyjściowy.

Scalanie plików

Mergecap jest niezbędnym narzędziem w sytuacjach, gdy ruch sieciowy był przechwytywany równolegle na wielu interfejsach lub w wielu lokalizacjach i wymaga połączenia w jeden spójny zbiór danych. Domyślne sortowanie po timestampie zapewnia chronologiczną kolejność pakietów w pliku wynikowym, co jest kluczowe dla poprawnej analizy sekwencji zdarzeń. Narzędzie obsługuje jednoczesne scalanie dowolnej liczby plików wejściowych, niezależnie od ich formatu.

36/62
Opcje zaawansowane mergecap

Opcje zaawansowane mergecap

  • -a (concatenate): pomija sortowanie – dołącza pakiety w kolejności plików:
# Bez sortowania (jak podano pliki)
mergecap -a -w bez_sortowania.pcap pierwszy.pcap drugi.pcap
  • -s (snaplen): przycina pakiety do podanej długości podczas scalania.
  • -F (format wyjścia): pcap, pcapng.

Uwaga: jeśli pomieszasz pliki z różnych interfejsów, mergecap zachowa Interface ID z pcapng.

Sortowanie chronologiczne

Zaawansowane opcje mergecap dają kontrolę nad sposobem łączenia plików, co jest istotne w scenariuszach wymagających zachowania oryginalnej kolejności z poszczególnych przechwyceń. Opcja -a (domyślna) zapewnia sortowanie chronologiczne, podczas gdy opcja -s pozwala na dołączenie pakietów w kolejności podania plików źródłowych. Wybór odpowiedniej opcji zależy od charakteru analizy - sortowanie jest zalecane dla ogólnej analizy ruchu, a zachowanie kolejności dla rekonstrukcji sesji.

37/62
Scalanie dziennych logów

Scalanie dziennych logów

Scenariusz: przechwytywanie całodobowe z rotacją co godzinę → 24 pliki. Chcesz jeden plik do analizy.

# Scal wszystkie godziny w jeden plik
mergecap -a log_00.pcap log_01.pcap ... log_23.pcap -w caly_dzien.pcap

# Lub prościej z wildcard (*)
mergecap -a log_*.pcap -w caly_dzien.pcap

# Sprawdź rozmiar i liczbę pakietów
capinfos caly_dzien.pcap

Wynik: jeden plik pcapng z 24 milionami pakietów (przy średnio 1 Mpps).

Scalanie dużych plików może wymagać dużo RAM-u. mergecap ładuje wszystkie pakiety do pamięci przed zapisem.
24 pliki → jeden

Scalanie dziennych logów pcap w jeden plik zbiorczy jest typowym zadaniem w środowiskach, gdzie przechwytywanie jest realizowane z rotacją godzinową lub dzienną. Mergecap z wildcardem pozwala na automatyczne przetworzenie wszystkich plików w katalogu bez konieczności ręcznego wymieniania każdego z nich. Należy jednak pamiętać o ograniczeniach pamięciowych narzędzia, szczególnie przy scalaniu bardzo dużych plików liczących miliony pakietów.

38/62
Naprawa kolejności

Naprawa kolejności

reordercap – narzędzie do sortowania pakietów w pliku pcap/pcapng według timestampu.

Przydatne gdy:

  • Plik został źle zapisany (pakiety poza kolejnością czasową)
  • Łączysz pliki z różnych źródeł bez mergecap
  • Analizujesz strumień TCP, który wymaga chronologicznej kolejności
# Sortuj pakiety w pliku
reordercap niesortowany.pcap posortowany.pcap

# Sprawdź różnicę
capinfos niesortowany.pcap posortowany.pcap

reordercap nie zmienia treści pakietów – tylko przestawia je w kolejności rosnącego timestampu.

Większość narzędzi (Wireshark, tshark) domyślnie sortuje pakiety podczas odczytu – reordercap jest potrzebny tylko przy przetwarzaniu programistycznym (np. skrypt Python).
Przed i po sortowaniu

Reordercap rozwiązuje problem pakietów zapisanych w pliku pcap w niechronologicznej kolejności, co może wystąpić przy nieprawidłowo skonfigurowanym przechwytywaniu lub po ręcznym łączeniu plików. Narzędzie nie modyfikuje zawartości pakietów, a jedynie porządkuje je według rosnącego timestampu, co jest niezbędne do poprawnej rekonstrukcji strumieni TCP. W większości przypadków Wireshark i tshark radzą sobie z nieposortowanymi plikami, jednak do programistycznego przetwarzania danych konieczne jest posortowanie.

39/62
Z tekstu na pcap

Z tekstu na pcap

text2pcap – narzędzie do konwersji plików tekstowych (hex dump) na format pcap/pcapng.

Zastosowania:

  • Odtwarzanie pakietów z logów tekstowych
  • Generowanie syntetycznych pakietów do testów
  • Konwersja zrzutów hex z innych narzędzi
# Podstawowe użycie
text2pcap -l 1 hex_dump.txt wyjscie.pcap

# -l 1: DLT_EN10MB (Ethernet)
# -l 113: DLT_LINUX_SLL
# -l 105: DLT_IEEE802_11
Hex dump → Wireshark

Text2pcap to unikalne narzędzie umożliwiające konwersję danych tekstowych z powrotem do binarnego formatu pcap, co jest przydatne przy odtwarzaniu pakietów z logów lub generowaniu syntetycznych danych testowych. Określenie odpowiedniego DLT za pomocą opcji -l jest kluczowe dla poprawnej interpretacji danych wynikowych. Narzędzie znajduje zastosowanie zarówno w testach oprogramowania, jak i w kryminalistyce cyfrowej przy odtwarzaniu ruchu z tekstowych zrzutów ekranu i logów.

40/62
Format hex dump

Format hex dump

text2pcap akceptuje kilka formatów wejściowych. Najprostszy: hex z offsetami (jak w tcpdump -X).

# Standardowy format hex dump dla text2pcap
000000 00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF
000016 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
...

# Można też użyć formatu Wireshark (hex dump z ASCII)
0000  00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF  .."3DUfw.....
0016  00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F  ................

Każdy wiersz: offset (hex) + bajty (hex) lub bajty w linii.

Puste linie oddzielają pakiety.

Opcja -t określa timestamp w formacie YYYY-MM-DD HH:MM:SS.

text2pcap przyjmuje również standardowy hex dump (np. z Wireshark/Ethereal) oraz format od -A x -t x1z.
Hex dump z adnotacjami

Format hex dump akceptowany przez text2pcap jest elastyczny i obsługuje kilka popularnych formatów wyjścia narzędzi takich jak tcpdump i od. Każda linia zawiera offset w hex oraz odpowiadające mu bajty danych, a puste linie służą jako separatory między pakietami. Opcja -t umożliwia dołączenie timestampu w formacie czytelnym dla człowieka, co pozwala na zachowanie informacji czasowej podczas konwersji.

41/62
Odtwarzanie pakietów z logów

Odtwarzanie pakietów z logów

Przykład 1: konwersja dumpu z tcpdump -X:

# Przechwyć z wyjściem hex (tcpdump -X)
sudo tcpdump -i eth0 -X -c 5 > dump.txt

# Konwertuj na pcap
text2pcap -l 1 dump.txt odtworzony.pcap

Przykład 2: generowanie testowego pakietu:

# Plik (ramka Ethernet + IP + UDP)
000000 FF FF FF FF FF FF 00 11 22 33 44 55 08 00 45 00
000016 00 1C 00 01 00 00 40 11 00 00 C0 A8 01 01 C0 A8
000032 01 02 00 35 00 35 00 08 00 00 01 02 03 04

# Konwersja
text2pcap -l 1 test.txt test.pcap
Odtworzony pakiet w Wireshark

Odtwarzanie pakietów z logów tcpdump -X jest praktycznym zastosowaniem text2pcap, pozwalającym na ponowne wykorzystanie historycznych zrzutów ekranu i logów do celów analitycznych. Generowanie testowych pakietów z ręcznie zdefiniowanych hex dumpów jest przydatne w testowaniu systemów IDS/IPS oraz parserów protokołów. Warto pamiętać o konieczności zachowania poprawnej struktury ramki Ethernet, łącznie z nagłówkami warstwy 2, aby uniknąć błędów interpretacji.

42/62
Surowa analiza danych

Surowa analiza danych

rawshark – narzędzie z pakietu Wireshark do analizy przetworzonych danych (bez przechwytywania). Odczyta dane ze stdin i zastosuje parser Wireshark.

# rawshark – podstawowe użycie
cat dane.bin | rawshark -r - -d encap:EN10MB

# Przykład: hex dump przez rawshark
echo "0011223344556677" | rawshark -r - -d encap:EN10MB

rawshark wymaga określenia enkapsulacji (-d encap:...) i jest przydatny do szybkiego testowania parserów.

Nie wymaga pliku pcap – dane są podawane na stdin.

stdin → rawshark → stdout

Rawshark jest narzędziem niszowym, ale niezwykle przydatnym w scenariuszach wymagających szybkiej analizy danych binarnych bez konieczności tworzenia pliku pcap. Jego zdolność do wykorzystania silnika parsującego Wireshark na dowolnych danych wejściowych czyni go cennym narzędziem debugowania dla twórców parserów protokołów. Określenie enkapsulacji za pomocą opcji -d encap jest obowiązkowe i kluczowe dla poprawnej interpretacji danych.

43/62
Potokowanie danych

Potokowanie danych

rawshark może odbierać dane bezpośrednio z dumpcap (przechwytywanie i analiza w potoku):

# dumpcap zapisuje do stdout (-P) → rawshark
dumpcap -i eth0 -P -w - | rawshark -r - -d encap:EN10MB

Opcje rawshark:

  • -r - czytaj ze stdin
  • -d encap:typ typ enkapsulacji (wymagany), np. encap:EN10MB dla Ethernet
  • -F format wyjścia (fields, pdml, psml)
  • -Y display filter
  • -T format wyjścia (fields, json, pdml)

Przykład z filtrowaniem:

dumpcap -i eth0 -P -w - | rawshark -r - -d encap:EN10MB -Y "http.request" -T fields -e http.host
rawshark to narzędzie niszowe – używane głównie do debugowania parserów Wireshark. Do typowej analizy używaj tshark.
dumpcap → rawshark potok

Potokowanie dumpcap do rawshark tworzy wydajny pipeline do przechwytywania i analizy ruchu w czasie rzeczywistym, bez konieczności zapisu danych na dysk. Takie rozwiązanie jest szczególnie przydatne w środowiskach o ograniczonej przestrzeni dyskowej lub przy potrzebie natychmiastowej analizy strumienia danych. Połączenie z filtrami wyświetlania Wireshark i formatem wyjścia JSON pozwala na integrację z zewnętrznymi systemami analitycznymi.

44/62
tshark – analiza komendowa

tshark – analiza komendowa

tshark -r odczytuje plik pcap/pcapng i wyświetla wybrane pola.

# Odczytaj pakiety z pliku
tshark -r plik.pcap

# Wyświetl konkretne pola (-T fields -e)
tshark -r plik.pcap -T fields -e frame.number -e ip.src -e ip.dst -e http.host

# Z filtrem wyświetlania (-Y)
tshark -r plik.pcap -Y "http.request" -T fields -e http.request.uri

Opcja -e (field) wyciąga konkretne pole protokołu. Lista pól: tshark -G fields | grep nazwa.

tshark -r terminal

Tshark z opcją -r to podstawowe narzędzie do odczytu i analizy plików pcap z poziomu wiersza poleceń, oferujące pełną moc silnika analitycznego Wireshark bez interfejsu graficznego. Opcja -T fields w połączeniu z -e umożliwia wyciągnięcie dokładnie tych pól protokołów, które są potrzebne do analizy, co czyni tshark idealnym narzędziem do automatyzacji. Lista dostępnych pól protokołów jest ogromna i może być przeglądana za pomocą polecenia tshark -G fields.

45/62
tcpdump z pliku

tcpdump z pliku

tcpdump -r odczytuje plik pcap zamiast przechwytywać z interfejsu.

# Podstawowy odczyt
tcpdump -r plik.pcap

# Z filtrem BPF (odczyt z pliku też może filtrować)
tcpdump -r plik.pcap port 80

# Szczegółowe wyświetlanie (-X hex dump, -xx raw hex)
tcpdump -r plik.pcap -X

# Tylko nagłówki (-q zwięzły format)
tcpdump -r plik.pcap -q

# Statystyki na koniec (-z)
tcpdump -r plik.pcap -z

W przeciwieństwie do tshark, tcpdump -r używa składni BPF (nie display filter Wireshark).

tcpdump -r terminal

Tcpdump -r pozostaje najszybszym narzędziem do podstawowego odczytu plików pcap, szczególnie w środowiskach embedded i systemach o ograniczonych zasobach. Składnia BPF (Berkeley Packet Filter) używana przez tcpdump jest bardziej ograniczona niż display filter Wireshark, ale za to wydajniejsza obliczeniowo. Opcja -X wyświetla zawartość pakietów w formacie hex i ASCII, co jest przydatne do szybkiego podglądu danych bez uruchamiania zaawansowanych narzędzi.

46/62
Pythonowa analiza pcap

Pythonowa analiza pcap

Scapy – potężna biblioteka Pythona do manipulacji pakietami. Odczyta pliki pcap i pcapng.

from scapy.all import rdpcap, IP, TCP

# Odczyt pliku
packets = rdpcap("plik.pcap")

# Iteracja po pakietach
for pkt in packets:
    if pkt.haslayer(IP):
        print(f"{pkt[IP].src} → {pkt[IP].dst}")

# Zapis do nowego pliku
wrpcap("wycinek.pcap", packets[:100])

Scapy obsługuje zarówno pcap, jak i pcapng (od wersji 2.4.5+).

Scapy to nie tylko odczyt – możesz tworzyć, wysyłać i modyfikować pakiety w locie.
Python + scapy

Scapy jest najpopularniejszą biblioteką Pythona do manipulacji pakietami sieciowymi, oferującą możliwość odczytu, zapisu, modyfikacji i wysyłania pakietów w jednym spójnym interfejsie programistycznym. Funkcja rdpcap pozwala na załadowanie całego pliku pcap do pamięci jako listy obiektów Packet, co umożliwia łatwą iterację i analizę. Biblioteka obsługuje zarówno pcap, jak i pcapng od wersji 2.4.5, co czyni ją uniwersalnym narzędziem do programistycznej obróbki plików przechwyconego ruchu.

47/62
Filtrowanie pakietów w Pythonie

Filtrowanie pakietów w Pythonie

from scapy.all import rdpcap, IP, TCP, UDP

packets = rdpcap("plik.pcap")

# Filtruj tylko HTTP (port 80 TCP)
http_pkts = [p for p in packets
            if p.haslayer(TCP) and
               (p[TCP].sport == 80 or p[TCP].dport == 80)]

print(f"Znaleziono {len(http_pkts)} pakietów HTTP")

# Grupowanie po adresie IP źródła
ip_counts = {}
for p in http_pkts:
    if p.haslayer(IP):
        src = p[IP].src
        ip_counts[src] = ip_counts.get(src, 0) + 1

# Najaktywniejsi nadawcy
for ip, count in sorted(ip_counts.items(),
                            key=lambda x: x[1], reverse=True)[:10]:
    print(f"{ip}: {count}")
Wynik skryptu Python

Filtrowanie pakietów w Pythonie z użyciem scapy daje nieograniczone możliwości selekcji danych według dowolnych kryteriów, wykraczających poza standardowe filtry Wireshark. Grupowanie pakietów według adresów IP, portów czy protokołów pozwala na szybkie uzyskanie statystyk ruchu i identyfikację dominant w analizowanym zbiorze danych. Połączenie scapy z bibliotekami do wizualizacji, takimi jak matplotlib, umożliwia tworzenie zaawansowanych raportów graficznych bezpośrednio z surowych danych pcap.

48/62
pyshark – interfejs do tshark

pyshark – interfejs do tshark

pyshark – wrapper Pythona na tshark. Używa silnika parsującego Wireshark, więc obsługuje wszystkie protokoły.

import pyshark

# Odczyt pliku
cap = pyshark.FileCapture("plik.pcap")

# Iteracja
for pkt in cap:
    print(pkt.ip.src, pkt.ip.dst, pkt.highest_layer)

# Z filtrem display (składnia Wireshark)
cap2 = pyshark.FileCapture("plik.pcap",
                           display_filter="http.request")

# Dostęp do pól protokołu
for pkt in cap2:
    if hasattr(pkt, 'http'):
        print(pkt.http.request_uri, pkt.http.host)
pyshark jest wolniejszy niż scapy (wywołuje tshark dla każdego pakietu), ale daje dostęp do pełnego parsera Wireshark.
Python → pyshark → tshark

Pyshark stanowi pomost między elastycznością Pythona a potęgą silnika parsującego Wireshark, udostępniając wszystkie protokoły obsługiwane przez Wireshark w wygodnym interfejsie programistycznym. W przeciwieństwie do scapy, pyshark nie parsuje pakietów samodzielnie, ale deleguje to zadanie do tshark, co zapewnia pełną zgodność z parserami Wireshark. Jest to szczególnie istotne przy analizie rzadkich lub złożonych protokołów, gdzie implementacja scapy może być niekompletna.

49/62
dpkt – niskopoziomowy parser

dpkt – niskopoziomowy parser

dpkt – lekka biblioteka Pythona do parsowania pakietów i plików pcap bez zależności zewnętrznych.

import dpkt

# Odczyt pliku pcap
with open("plik.pcap", "rb") as f:
    pcap = dpkt.pcap.Reader(f)
    
    for ts, buf in pcap:
        # ts – timestamp (Unix time)
        # buf – surowe bajty pakietu
        eth = dpkt.ethernet.Ethernet(buf)
        if isinstance(eth.data, dpkt.ip.IP):
            ip = eth.data
            print(f"{ts}: {ip.src} → {ip.dst}")

# Odczyt pcapng
with open("plik.pcapng", "rb") as f:
    pcapng = dpkt.pcapng.Reader(f)
    for ts, buf in pcapng:
        # podobnie jak pcap
dpkt jest najszybszą biblioteką do odczytu pcap w Pythonie – idealna do przetwarzania dużych plików.
dpkt + pcap

Biblioteka dpkt wyróżnia się na tle scapy i pyshark przede wszystkim wydajnością i minimalnym narzutem, co czyni ją idealnym wyborem do przetwarzania bardzo dużych plików pcap. Działa na surowych bajtach bez żadnych zewnętrznych zależności, co ułatwia jej wdrożenie w środowiskach o ograniczonych zasobach. Wsparcie dla formatu pcapng zostało dodane w nowszych wersjach biblioteki, co rozszerza jej zastosowanie na nowoczesne pliki przechwyconego ruchu.

50/62
Wireshark – GUI do pcap

Wireshark – GUI do pcap

Wireshark oferuje pełną obsługę obu formatów:

  • Otwieranie: File → Open (obsługuje pcap, pcapng, a także skompresowane .gz, .zip)
  • Zapis: File → Save/Save As – wybór formatu (pcap, pcapng)
  • Export: File → Export Specified Packets – filtrowanie i zapis do nowego pliku
  • Merge: File → Merge – dodanie pakietów z innego pliku
  • Import hex dump: File → Import from Hex Dump – jak text2pcap z GUI

Wireshark automatycznie rozpoznaje DLT i stosuje odpowiedni parser.

Menu File w Wireshark

Wireshark pozostaje najpopularniejszym narzędziem graficznym do analizy plików pcap i pcapng, oferując intuicyjny interfejs użytkownika i wsparcie dla setek protokołów. Funkcja Import from Hex Dump w menu File stanowi graficzny odpowiednik narzędzia text2pcap, umożliwiając import danych bez użycia wiersza poleceń. Wbudowane narzędzia do mergowania, eksportu i filtrowania pakietów czynią Wireshark kompletnym środowiskiem pracy z plikami przechwyconego ruchu.

51/62
Przetwarzanie wielu plików

Przetwarzanie wielu plików

Przykład: skrypt Bash przetwarzający wszystkie pliki pcap w katalogu:

#!/bin/bash
# Skrypt: analiza_zbiorcza.sh

for f in *.pcap; do
    echo "=== $f ==="
    
    # Informacje o pliku
    capinfos -c -d -s -y "$f"
    
    # Wyciągnij adresy IP
    tshark -r "$f" -T fields -e ip.src -e ip.dst | sort | uniq -c | sort -rn | head -10
    
    echo ""
done

Wynik: dla każdego pliku – statystyki + top 10 adresów IP.

Można rozszerzyć o generowanie raportu HTML lub CSV.

Skrypt w terminalu

Automatyzacja przetwarzania wielu plików pcap jest kluczowa w środowiskach, gdzie dziennie generowane są setki lub tysiące plików z różnych źródeł. Skrypty bash łączące capinfos, tshark i standardowe narzędzia Unix (sort, uniq, awk) pozwalają na szybkie uzyskanie zagregowanych statystyk bez konieczności ręcznego otwierania każdego pliku. Rozszerzenie skryptu o generowanie raportów HTML lub CSV umożliwia integrację z istniejącymi systemami raportowania.

52/62
Pipeline obróbki plików

Pipeline obróbki plików

Scenariusz: masz 5 plików pcap z różnych interfejsów. Chcesz jeden plik, tylko pierwsze 1000 pakietów, przycięty do 128 B.

# Krok 1: Scal pliki z sortowaniem
mergecap -a eth0.pcap wlan0.pcap tun0.pcap -w polaczone.pcap

# Krok 2: Wybierz pierwsze 1000 pakietów
editcap -r 1-1000 polaczone.pcap pierwsze_1000.pcap

# Krok 3: Przytnij snaplen do 128 bajtów
editcap -s 128 pierwsze_1000.pcap gotowe_do_analizy.pcap

# Sprawdź wynik
capinfos gotowe_do_analizy.pcap

Efekt: jeden plik pcap ~100 kB zamiast 5 plików ~1 GB.

Diagram przepływu

Pipeline obróbki plików pcap z użyciem mergecap i editcap pokazuje, jak złożone operacje na danych przechwyconego ruchu mogą być realizowane za pomocą prostych poleceń CLI. Sekwencyjne stosowanie narzędzi pozwala na redukcję rozmiaru danych z gigabajtów do megabajtów przy zachowaniu istotnych dla analizy informacji. Taki sposób przetwarzania jest szczególnie przydatny przy przygotowywaniu danych do przesłania pocztą elektroniczną lub do analizy w środowiskach o ograniczonej przepustowości.

53/62
Raportowanie przez potok

Raportowanie przez potok

Generowanie podsumowania dla wielu plików:

# Zbierz statystyki i sformatuj
capinfos -T -c -d -s -y *.pcap | awk -F',' 'NR>1 {
    packets+=$2; duration+=$3; size+=$4; rate+=$5
} END {
    printf "Razem: %d pakietów, %.2f s, %.2f MB, średnia przepustowość: %.2f kbps\n",
           packets, duration, size/1e6, rate
}'

Wynik:

Razem: 15423 pakietów, 3600.42 s, 25.67 MB, średnia przepustowość: 57.12 kbps

Można łatwo rozszerzyć o inne metryki (liczba pakietów na sekundę, średni rozmiar).

capinfos + awk

Połączenie capinfos z awk w potoku poleceń tworzy elastyczne narzędzie do zbiorczego raportowania statystyk z wielu plików pcap. Format CSV generowany przez opcję -T jest łatwy do przetworzenia zarówno przez skrypty, jak i arkusze kalkulacyjne. Możliwość wyciągnięcia zagregowanych metryk, takich jak sumaryczna liczba pakietów, całkowity czas przechwytywania czy średnia przepustowość, pozwala na szybką ocenę skali analizowanego zbioru danych.

54/62
Wizualizacja ruchu

Wizualizacja ruchu

Skrypt Python: odczyt pliku pcap, ekstrakcja czasu i rozmiaru → wykres przepustowości (wymaga matplotlib).

from scapy.all import rdpcap, IP
import matplotlib.pyplot as plt
from collections import defaultdict
import time

packets = rdpcap("plik.pcap")

# Grupowanie po sekundach
traffic = defaultdict(lambda: {"bytes": 0, "pkts": 0})

for pkt in packets:
    sec = int(pkt.time)
    traffic[sec]["bytes"] += len(pkt)
    traffic[sec]["pkts"] += 1

# Wykres przepustowości
times = sorted(traffic.keys())
bps = [traffic[t]["bytes"] * 8 / 1e6 for t in times]  # Mbps

plt.plot(times, bps)
plt.xlabel("Czas (Unix timestamp)")
plt.ylabel("Przepustowość (Mbps)")
plt.title("Ruch sieciowy w czasie")
plt.show()
To tylko szkielet – możesz dodać analizę protokołów, wykrywanie anomalii, eksport do CSV.
Wykres przepustowości matplotlib

Wizualizacja ruchu sieciowego za pomocą Pythona i biblioteki matplotlib pozwala na graficzne przedstawienie trendów i anomalii w przechwyconym ruchu, co jest często bardziej czytelne niż surowe dane liczbowe. Skrypt grupujący pakiety według sekund i obliczający przepustowość w Mbps daje poglądowy wykres aktywności sieciowej w czasie. Rozszerzenie analizy o podział na protokoły lub adresy IP pozwala na identyfikację źródeł przeciążeń i nietypowego ruchu.

55/62
Bazy danych pcap

Bazy danych pcap

Przy dużej skali (terabajty pcaps), narzędzia jak Wireshark nie wystarczają. Potrzebne są systemy do indeksowania i wyszukiwania.

  • Arkime (dawniej Moloch): open-source, indeksuje pakiety do Elasticsearch, web UI do wyszukiwania
  • Arkime + Wireshark: kliknij pakiet w Arkime → otwiera się w Wireshark
  • PCAP-Indexer: indeksuje pakiety po IP, porcie, protokole
  • DAVIX: dystrybucja Linux z narzędziami do analizy pcap

Arkime przechowuje oryginalne pliki pcap na dysku, a metadane w Elasticsearch. Zapytanie: miliony pakietów w sekundę.

Arkime jest standardem w SOC (Security Operations Center) do przechowywania i analizy ruchu sieciowego.
Arkime web UI

Systemy takie jak Arkime (dawniej Moloch) rozwiązują problem przechowywania i wyszukiwania w zbiorach pcap liczących terabajty danych, co jest poza zasięgiem tradycyjnych narzędzi takich jak Wireshark. Indeksowanie metadanych w Elasticsearch pozwala na błyskawiczne wyszukiwanie pakietów według adresów IP, portów, protokołów i przedziałów czasowych. Arkime jest standardem w Security Operations Center (SOC) do długoterminowego przechowywania i analizy ruchu sieciowego w celach detektywistycznych i zgodnościowych.

56/62
Anonimizacja i czyszczenie

Anonimizacja i czyszczenie

Pliki pcap mogą zawierać dane wrażliwe: adresy IP, MAC, hasła, treść e-maili, numery kart kredytowych.

Narzędzia do czyszczenia:

  • tcprewrite (tcpreplay): zmiana adresów IP i MAC
  • bittwiste: anonimizacja adresów MAC
  • Wireshark: Statistics → Anonymize (podgląd)
  • editcap: przycięcie snaplen (usuwa payload, zostawia nagłówki)
  • Skrypty Python + scapy: zamiana adresów na losowe z zachowaniem topologii
# tcprewrite – zmiana adresów IP
tcprewrite --infile=original.pcap --outfile=anonim.pcap \
    --srcipmap=0.0.0.0/0:10.0.0.0/8 --dstipmap=0.0.0.0/0:10.0.0.0/8
Udostępniając pliki pcap (np. w celach edukacyjnych), zawsze usuń dane osobowe i poufne.
Anonimizacja pcap

Anonimizacja plików pcap przed ich udostępnieniem jest obowiązkowa w kontekście ochrony danych osobowych zgodnie z RODO i innymi regulacjami prawnymi. Narzędzia takie jak tcprewrite z pakietu tcpreplay pozwalają na masową zmianę adresów IP i MAC przy zachowaniu topologii sieci, co umożliwia udostępnianie danych do celów edukacyjnych i badawczych. Wireshark oferuje również wbudowane narzędzia do anonimizacji, choć są one ograniczone w porównaniu z dedykowanymi rozwiązaniami.

57/62
Mapa narzędzi do plików pcap

Mapa narzędzi do plików pcap

NarzędzieZastosowanie
capinfosInformacje o pliku (liczba pakietów, czas, przepustowość)
editcapWycinanie, przycinanie, dzielenie, de-duplikacja
mergecapŁączenie wielu plików z sortowaniem
reordercapSortowanie pakietów po czasie
text2pcapKonwersja hex dump → pcap
rawsharkAnaliza surowych danych (bez pcap)
tshark -rOdczyt pól z pliku (składnia Wireshark)
tcpdump -rSzybki odczyt z pliku (składnia BPF)
Python (scapy/dpkt/pyshark)Programistyczna analiza i automatyzacja
Kolaż ikon narzędzi

Tabela narzędzi do plików pcap stanowi szybkie odniesienie dla analityka, podsumowujące zastosowanie każdego z omówionych programów. capinfos dostarcza informacji o pliku, editcap umożliwia jego modyfikację, mergecap scala wiele plików, a tshark i tcpdump oferują odczyt i analizę z poziomu CLI. Python z bibliotekami scapy, dpkt i pyshark daje nieograniczone możliwości programistycznego przetwarzania danych wykraczające poza standardowe narzędzia.

58/62
pcap czy pcapng?

pcap czy pcapng?

  • Używaj pcapng, gdy:
    • Przechwytujesz z wielu interfejsów
    • Chcesz dodać komentarze do pakietów
    • Potrzebujesz statystyk interfejsu (ISB)
    • Chcesz dołączyć klucze TLS (DSB)
    • Pracujesz z Wireshark 2.x+ lub tshark
  • Używaj pcap, gdy:
    • Potrzebujesz kompatybilności ze starymi narzędziami (Snort 2.x, tcpdump < 4.99)
    • Chcesz minimalny narzut na plik
    • Pracujesz z pojedynczym interfejsem i nie potrzebujesz metadanych

Rekomendacja: od 2025 roku domyślnie używaj pcapng. To przyszłościowy standard.

Pamiętaj: pcapng wstecznie czytasz przez każde narzędzie wspierające pcap (Wireshark, tcpdump 4.99+, tshark). Nie ma powodu, by nie używać pcapng!
Waga – pcapng przeważa

Wybór między pcap a pcapng powinien być podyktowany konkretnymi wymaganiami analitycznymi, a nie przyzwyczajeniami. Od 2025 roku pcapng jest zdecydowanie zalecany jako domyślny format przechowywania przechwyconego ruchu, oferujący bogatsze możliwości przy minimalnym wzroście narzutu. Większość nowoczesnych narzędzi w pełni obsługuje pcapng, a starsze programy, takie jak tcpdump w wersji 4.99+, również radzą sobie z tym formatem bez problemów.

59/62
Sprawdź swoją wiedzę

Sprawdź swoją wiedzę

  1. Pytanie: Czym różni się plik pcap od pcapng?

Odpowiedź: pcap to prosty format (Global Header + Packet Records) – jeden interfejs, brak metadanych. pcapng ma strukturę blokową – obsługuje wiele interfejsów, komentarze, statystyki, klucze TLS.

  1. Pytanie: Do czego służy narzędzie editcap?

Odpowiedź: Do edycji plików pcap – przycinania zakresu pakietów, dzielenia, zmiany snaplen, usuwania duplikatów, modyfikacji timestampu.

  1. Pytanie: Jaka jest różnica między mergecap a reordercap?

Odpowiedź: mergecap łączy wiele plików w jeden (opcjonalnie sortuje po czasie). reordercap sortuje pakiety w jednym pliku według timestampu.

  1. Pytanie: Do czego służy Decryption Secrets Block (DSB) w pcapng?

Odpowiedź: DSB przechowuje klucze deszyfrujące (TLS, WireGuard) dołączone do pliku – umożliwia odszyfrowanie ruchu bez osobnego pliku z kluczami.

Znak zapytania

Pytania kontrolne stanowią integralną część procesu dydaktycznego, pozwalając na samodzielne sprawdzenie stopnia przyswojenia materiału przed przejściem do kolejnych zagadnień. Znajomość różnic między pcap a pcapng, umiejętność posługiwania się editcap oraz zrozumienie roli DSB są kluczowe dla efektywnej pracy z plikami przechwyconego ruchu. Zachęcamy do samodzielnego eksperymentowania z narzędziami na przykładowych plikach pcap dostępnych w repozytoriach edukacyjnych.

60/62
Sprawdź swoją wiedzę – ciąg dalszy

Sprawdź swoją wiedzę – ciąg dalszy

  1. Pytanie: Jak wyciągnąć tylko pakiety 50–100 z pliku pcap?

Odpowiedź: editcap -r 50-100 wejscie.pcap wyjscie.pcap

  1. Pytanie: Jaka biblioteka Pythona jest najlżejsza i najszybsza do odczytu plików pcap?

Odpowiedź: dpkt – nie ma zależności zewnętrznych, działa na surowych bajtach.

  1. Pytanie: Co oznacza magic number 0xa1b2c3d4 w pliku pcap?

Odpowiedź: To identyfikator formatu pcap w kolejności big-endian (0xd4c3b2a1 = little-endian). Służy do wykrywania endianness pliku.

Znak zapytania

Kontynuacja pytań kontrolnych obejmuje praktyczne aspekty pracy z narzędziami CLI oraz znajomość szczegółów technicznych formatu pcap. Umiejętność wyodrębnienia zakresu pakietów z pliku, znajomość najlżejszej biblioteki Python do odczytu pcap (dpkt) oraz rozumienie znaczenia magic number to podstawowe kompetencje analityka sieciowego. Praktyczna znajomość tych zagadnień jest weryfikowana podczas certyfikacji takich jak Wireshark Certified Network Analyst (WCNA).

61/62
Wykonaj samodzielnie

Wykonaj samodzielnie

  1. Pobierz przykładowy plik pcap (np. z Wireshark wiki lub użyj tcpdump -i lo -c 100 -w test.pcap).
  2. Uruchom capinfos test.pcap – zapisz liczbę pakietów, czas trwania, przepustowość.
  3. Użyj editcap -r 1-10 test.pcap pierwsze10.pcap – sprawdź rozmiar.
  4. Użyj editcap -s 64 test.pcap przyciete.pcap – porównaj rozmiar.
  5. Jeśli masz dwa pliki pcap, scal je przez mergecap -a.
  6. Napisz skrypt Python (scapy), który wypisze wszystkie adresy IP źródłowe z pliku.
Ikony zadań

Zadania praktyczne zostały zaprojektowane tak, aby krok po kroku przeprowadzić ucznia przez wszystkie kluczowe operacje na plikach pcap omówione w tej prezentacji. Rozpoczęcie od prostego polecenia capinfos, przez wycinanie zakresów editcap, aż po samodzielne napisanie skryptu Python z scapy - każde zadanie buduje praktyczne umiejętności niezbędne w codziennej pracy analityka. Zachęcamy do wykonywania ćwiczeń na własnych plikach pcap generowanych za pomocą tcpdump na interfejsie loopback.

62/62
Koniec części 10

Koniec części 10

Dziękujemy za uwagę. W następnej części poznamy zaawansowaną analizę protokołów – HTTP/HTTPS, DNS, DHCP, TCP – odczytywanie pól, filtrowanie i diagnostyka na podstawie przechwyconego ruchu.

Praca własna:

  • Eksperymentuj z capinfos, editcap, mergecap na własnych plikach pcap
  • Przetestuj text2pcap – stwórz hex dump z tcpdump -X i odtwórz plik
  • Napisz skrypt w Python + dpkt, który policzy pakiety na sekundę z pliku pcap
  • Porównaj rozmiar pliku pcap vs pcapng dla tego samego przechwycenia
Zapowiedź następnej części

Dziesiąta część cyklu o pomiarach logicznych w sieciach komputerowych stanowi kompleksowe wprowadzenie do tematyki formatów przechowywania przechwyconych pakietów i narzędzi do ich przetwarzania. Zdobyta wiedza pozwoli na samodzielną pracę z plikami pcap i pcapng w środowiskach produkcyjnych i laboratoryjnych. Kolejna prezentacja rozszerzy te umiejętności o zaawansowaną analizę protokołów aplikacyjnych, takich jak HTTP, HTTPS, DNS i DHCP.