Jak przechwycić ostatnie N sekund pakietów za pomocą tcpdump?
Jak przechwycić ostatnie N sekund pakietów za pomocą tcpdump?
Odpowiedzi:
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ę.
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.
Możesz użyć tethereal zamiast tcpdump. Możesz użyć tej opcji wiersza polecenia:
-a duration:X
tshark -a duration:600 -i eth0 -w $(hostname).10mins.pcap
przechwyci ruch o wartości dziesięciu minut z interfejsu eth0 do pliku $ (nazwa hosta) .10mins.pcap
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
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
sudo tcpdump -i -w, a to uruchomi tcpdump w trybie uśpienia