Comment puis-je capturer les N dernières secondes de paquets en utilisant tcpdump?
Comment puis-je capturer les N dernières secondes de paquets en utilisant tcpdump?
Réponses:
Si vous souhaitez simplement que tcpdump s'exécute pendant n secondes, puis se termine, vous pouvez utiliser le délai d'expiration.
Par exemple:
timeout 2 tcpdump -eni mon0
Sinon, je ne pense pas que tcpdump ait une option pour le faire.
Je pense que la meilleure façon d'y parvenir est d'utiliser le drapeau -G de tcpdump, qui, lorsqu'il est utilisé avec -w, enregistrera votre vidage dans un nouveau fichier toutes les N secondes. Par exemple:
tcpdump -w outfile-% s -G 10
Cela va créer un nouveau fichier avec le nom de «outfile-XXXX» (où XXXX représente le nombre de secondes depuis l'époque) toutes les 10 secondes.
Consultez les pages de manuel de tcpdump (8) et strftime (3) pour plus de détails.
Vous pouvez utiliser tethereal au lieu de tcpdump. Vous pouvez utiliser cette option de ligne de commande:
-a duration:X
tshark -a duration:600 -i eth0 -w $(hostname).10mins.pcap
va capturer l'équivalent de dix minutes de trafic depuis l'interface eth0 dans le fichier $ (hostname) .10mins.pcap
tcpdump options -w new.tcpdump
ps -ef |grep tcpdump
prenez note du PID, dites qu'il est 11193
at 11:00
kill 11193
maintenant attendez jusqu'à 11h00 et votre capture sera tuée mais enregistrée
J'essayais de résoudre le même problème, j'ai donc écrit un script portable pour exécuter tcpdump pendant n secondes.
#tcpdump_for_n_sec.sh
n=$1
shift #remove first arg from $@
tcpdump $@ & x=$!
sleep $n
kill $x
Utilisation ./tcpdump_for_n_sec.sh sec args pour tcpdump
./tcpdump_for_n_sec.sh 5 i- any not port 22 -s0 -wfile.pcap
sudo tcpdump -i -w et cela fonctionnera tcpdump est en mode veille