Come posso catturare gli ultimi N secondi di pacchetti usando tcpdump?
Come posso catturare gli ultimi N secondi di pacchetti usando tcpdump?
Risposte:
Se vuoi solo eseguire tcpdump per n secondi e poi uscire, puoi usare il timeout.
Per esempio:
timeout 2 tcpdump -eni mon0
Altrimenti non credo che tcpdump abbia un'opzione per farlo.
Penso che il modo migliore per ottenere questo risultato sia con il flag -G di tcpdump, che, se usato con -w, salverà il tuo dump in un nuovo file ogni N secondi. Per esempio:
tcpdump -w outfile-% s -G 10
Questo creerà un nuovo file con il nome di 'outfile-XXXX' (dove XXXX rappresenta il numero di secondi dall'epoca) ogni 10 secondi.
Vedi le pagine man per tcpdump (8) e strftime (3) per ulteriori dettagli.
È possibile utilizzare tethereal anziché tcpdump. È possibile utilizzare questa opzione della riga di comando:
-a duration:X
tshark -a duration:600 -i eth0 -w $(hostname).10mins.pcap
acquisirà dieci minuti di traffico dall'interfaccia eth0 nel file $ (nome host) .10mins.pcap
tcpdump options -w new.tcpdump
ps -ef |grep tcpdump
prendere nota del PID, dire che è 11193
at 11:00
kill 11193
ora aspetta solo fino alle 11:00 e la tua cattura verrà uccisa ma salvata
Stavo cercando di risolvere lo stesso problema, quindi ho scritto uno script portatile per eseguire tcpdump per n secondo.
#tcpdump_for_n_sec.sh
n=$1
shift #remove first arg from $@
tcpdump $@ & x=$!
sleep $n
kill $x
Utilizzo ./tcpdump_for_n_sec.sh sec args per tcpdump
./tcpdump_for_n_sec.sh 5 i- any not port 22 -s0 -wfile.pcap
sudo tcpdump -i -w e questo funzionerà tcpdump è in modalità sospensione