Jak przechwytywać ostatnie N sekund pakietów za pomocą tcpdump


14

Jak przechwycić ostatnie N sekund pakietów za pomocą tcpdump?


1
„Daj mi” nie zaprowadzi cię daleko. Może powinieneś pokazać nam, co próbowałeś do tej pory i gdzie dokładnie masz problemy, których sam nie możesz rozwiązać.
— matthias krull

Polecenie bash to: „man tcpdump”
— William Pursell

Odpowiedzi:


15

Jeśli chcesz, aby tcpdump działał przez n sekund, a następnie zakończył pracę, możesz użyć limitu czasu.

Na przykład:

timeout 2 tcpdump -eni mon0

W przeciwnym razie nie wierzę, że tcpdump ma taką opcję.


Niestety polecenie przekroczenia limitu czasu nie występuje w CentOS 5.x. Został dodany w nowszej wersji coreutils. Kolejna motywacja do aktualizacji systemu operacyjnego.
— Mister_Tom

Podejrzewam, że jeśli nie masz limitu czasu, możesz zamiast tego stworzyć coś takiego jak limit czasu:
— siesta

Działa świetnie dla mnie. Użyłem tego do monitorowania całego ruchu dla programu, który nie działał. Uruchomiłem tcpdump z limitem czasu wynoszącym N sekund. Potem uruchomiłem program (co zajmuje do N sekund).
— Trevor Boyd Smith

Pytanie dotyczy uchwycenia ostatnich N sekund. Twoja odpowiedź mówi, jak uchwycić pierwsze N sekund.
— Flimzy

3

Myślę, że najlepszym sposobem na osiągnięcie tego jest użycie flagi -G tcpdump, która w połączeniu z -w będzie zapisywać twój zrzut do nowego pliku co N sekund. Na przykład:

tcpdump -w plik_wyjściowy% s -G 10

Spowoduje to utworzenie nowego pliku o nazwie „outfile-XXXX” (gdzie XXXX oznacza liczbę sekund od epoki) co 10 sekund.

Zobacz strony podręcznika dla tcpdump (8) i strftime (3), aby uzyskać dodatkowe informacje.


tcpdump 3.9.4 dostarczany z CentOS 5.10 nie ma opcji -G. Naprawdę muszę zaktualizować system operacyjny.
— Mister_Tom

-G nie zatrzymuje polecenia tcpdump. Nadal działa wiecznie. Limit czasu 2 tcpdump zatrzyma polecenie po 2 sekundach.
— ciceron

@ciceron: Pytanie nie dotyczyło zatrzymania tcpdump. Chodziło o uchwycenie ostatnich N sekund . Twoja sugestia uchwyci pierwsze N sekund. Zdecydowanie nie to, o co prosił PO.
— Flimzy,

1

Możesz użyć tethereal zamiast tcpdump. Możesz użyć tej opcji wiersza polecenia:

-a duration:X

Chociaż może to odpowiedzieć na pytanie, lepszym rozwiązaniem byłoby podanie wyjaśnienia, dlaczego tak się dzieje.
— DavidPostill

Sam program tcpdump nie pozwala na ograniczone czasowo śledzenie pakietów, ale tshark tak. (nb od czasu zadania i odpowiedzi na to pytanie, Ethereal stał się Wireshark) tshark -a duration:600 -i eth0 -w $(hostname).10mins.pcapprzechwyci ruch o wartości dziesięciu minut z interfejsu eth0 do pliku $ (nazwa hosta) .10mins.pcap
— Andrew Beals

0

tcpdump options -w new.tcpdump

ps -ef |grep tcpdump

zanotuj PID, powiedzmy, że to 11193

at 11:00 kill 11193

teraz poczekaj, aż nadejdzie godzina 11:00, a schwytanie zostanie zabite, ale uratowane


fwiw pgrep jest znacznie lepszą alternatywą dla ps | grep; szczególnie tutaj.
— Good Person

0

Próbowałem rozwiązać ten sam problem, więc napisałem przenośny skrypt, aby uruchomić tcpdump na n sekundę.

#tcpdump_for_n_sec.sh
n=$1
shift #remove first arg from $@ 
tcpdump $@ & x=$!
sleep $n
kill $x

Zastosowanie ./tcpdump_for_n_sec.sh sec argumenty dla tcpdump

./tcpdump_for_n_sec.sh 5 i- any not port 22 -s0 -wfile.pcap

0

sudo tcpdump -i -w, a to uruchomi tcpdump w trybie uśpienia

  • w: zapisz dane wyjściowe w pliku .pcap &: proces tcpdump zostanie uruchomiony w trybie uśpienia Uwaga: upewnij się, że masz wystarczającą ilość wolnego miejsca, jeśli chcesz. uruchomić go przez chwilę. Nie wyłączy się, jeśli wylogujesz się, dopóki nie zabijesz procesu.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.