¿Cómo puedo capturar los últimos N segundos de paquetes usando tcpdump?
¿Cómo puedo capturar los últimos N segundos de paquetes usando tcpdump?
Respuestas:
Si solo desea que tcpdump se ejecute durante n segundos y luego salga, puede usar el tiempo de espera.
Por ejemplo:
timeout 2 tcpdump -eni mon0
De lo contrario, no creo que tcpdump tenga una opción para hacer esto.
Creo que la mejor manera de lograr esto es con el indicador -G de tcpdump, que, cuando se usa con -w, guardará su volcado en un nuevo archivo cada N segundos. Por ejemplo:
tcpdump -w outfile-% s -G 10
Esto creará un nuevo archivo con el nombre de 'outfile-XXXX' (donde XXXX representa el número de segundos desde la época) cada 10 segundos.
Consulte las páginas de manual de tcpdump (8) y strftime (3) para obtener detalles adicionales.
Puede usar tethereal en lugar de tcpdump. Puede usar esta opción de línea de comandos:
-a duration:X
tshark -a duration:600 -i eth0 -w $(hostname).10mins.pcap
capturará diez minutos de tráfico de la interfaz eth0 en el archivo $ (nombre de host) .10mins.pcap
tcpdump options -w new.tcpdump
ps -ef |grep tcpdump
tome nota de PID, diga que es 11193
at 11:00
kill 11193
ahora solo espera hasta las 11:00 y tu captura se matará pero se guardará
Estaba tratando de resolver el mismo problema, así que escribí un script portátil para ejecutar tcpdump durante n segundos.
#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 & esto se ejecutará tcpdump está en modo de suspensión