Como capturar os últimos N segundos de pacotes usando o tcpdump?
Como capturar os últimos N segundos de pacotes usando o tcpdump?
Respostas:
Se você quiser que o tcpdump seja executado por n segundos e depois saia, use o tempo limite.
Por exemplo:
timeout 2 tcpdump -eni mon0
Caso contrário, não acredito que o tcpdump tenha uma opção para fazer isso.
Eu acho que a melhor maneira de conseguir isso é com o sinalizador -G do tcpdump, que, quando usado com -w, salva seu dump em um novo arquivo a cada N segundos. Por exemplo:
tcpdump -w outfile-% s -G 10
Isso criará um novo arquivo com o nome 'outfile-XXXX' (onde XXXX representa o número de segundos desde a época) a cada 10 segundos.
Consulte as páginas de manual para tcpdump (8) e strftime (3) para obter detalhes adicionais.
Você pode usar tethereal em vez de tcpdump. Você pode usar esta opção de linha de comando:
-a duration:X
tshark -a duration:600 -i eth0 -w $(hostname).10mins.pcap
irá capturar dez minutos a pena de tráfego de interface eth0 no arquivo $ (hostname) .10mins.pcap
tcpdump options -w new.tcpdump
ps -ef |grep tcpdump
tome nota do PID, diga que é 11193
at 11:00
kill 11193
Agora é só esperar até 11:00 chegar e sua captura será morta, mas salva
Como estava tentando resolver o mesmo problema, escrevi um script portátil para executar o tcpdump por n segundo.
#tcpdump_for_n_sec.sh
n=$1
shift #remove first arg from $@
tcpdump $@ & x=$!
sleep $n
kill $x
Uso ./tcpdump_for_n_sec.sh sec args para tcpdump
./tcpdump_for_n_sec.sh 5 i- any not port 22 -s0 -wfile.pcap
sudo tcpdump -i -w e isso executará o tcpdump no modo de suspensão