ngrep (network grep) to sniffer pakietów, który działa jak grep przyłożony do ruchu sieciowego. Zamiast przekopywać się przez ściany hexa w tcpdump, podajesz wzorzec (wyrażenie regularne albo ciąg hex) i ngrep pokazuje tylko te pakiety, których ładunek (payload) pasuje. Świetnie sprawdza się, gdy chcesz na żywo podejrzeć, co leci w protokołach tekstowych: HTTP, SMTP, FTP, SIP czy zapytania DNS. Pod spodem korzysta z libpcap i rozumie te same filtry BPF, co tcpdump, więc łączysz dopasowanie po treści z filtrowaniem po portach i adresach. Do nasłuchu na interfejsie potrzebujesz uprawnień roota (zwykle sudo).
Składnia i najważniejsze opcje
Podstawowa forma to ngrep [opcje] wzorzec [filtr_bpf], gdzie wzorzec to regex dopasowywany do treści pakietu, a filtr_bpf to opcjonalny filtr w stylu tcpdump.
-d iface— wskazuje interfejs do nasłuchu (np.eth0,any); bez niego ngrep wybiera interfejs domyślny.-q— tryb cichy: bez sypania znakami#dla niepasujących pakietów, tylko nagłówki i treść dopasowań.-i— ignoruje wielkość liter we wzorcu.-t— dokleja znacznik czasu (RRRR/MM/DD GG:MM:SS) przy każdym dopasowaniu;-Tpokazuje różnicę czasu od poprzedniego pakietu.-W byline— honoruje znaki nowej linii w treści, dzięki czemu nagłówki HTTP są czytelne, a nie sklejone w jedną linię.-x— wypisuje treść w hex i ASCII;-Xpozwala podać wzorzec jako ciąg szesnastkowy.-n liczba— kończy działanie po dopasowaniu zadanej liczby pakietów.-O plik— zapisuje pasujące pakiety do pliku pcap;-I plikczyta z istniejącego pcap zamiast z interfejsu.
Przykłady użycia
sudo ngrep -d eth0 -W byline 'GET|POST' tcp port 80— podgląda na żywo zapytania HTTP na porcie 80, ładnie łamiąc nagłówki po liniach.sudo ngrep -q -i 'password' tcp— cicho wyławia każdy pakiet TCP, w którego treści pojawia się słowo „password”.sudo ngrep -d any port 53— pokazuje ruch DNS na wszystkich interfejsach, przydatne przy diagnozie rozwiązywania nazw.sudo ngrep -t -W byline 'Host:' host 10.0.0.5— śledzi nagłówki Host wymieniane z konkretną maszyną, z czasem przy każdym trafieniu.ngrep -I ruch.pcap -W byline 'User-Agent'— przeszukuje wcześniej zapisany plik pcap pod kątem nagłówków User-Agent, bez ruszania karty sieciowej.
Częste błędy i pułapki
Najczęstszy zgrzyt to brak uprawnień: bez sudo dostaniesz „pcap_open_live: Operation not permitted” albo pustkę. Drugi klasyk to mylenie wzorca z filtrem BPF — wzorzec dopasowuje treść pakietu, a filtr za nim ogranicza, jakie pakiety w ogóle łapiemy. Pamiętaj też, że ngrep widzi tylko payload w czystej postaci: ruch zaszyfrowany (HTTPS, SSH) zobaczysz, ale jego treść będzie nieczytelnym szyfrogramem, więc szukanie tam haseł nic nie da. Na koniec prawo: podsłuchiwanie cudzego ruchu w sieci, której nie jesteś administratorem, bywa przestępstwem — rób to tylko na własnych systemach.
Powiązane komendy: tcpdump, wireshark, tshark, grep, tcpflow.