Comment capturer les N dernières secondes de paquets à l'aide de tcpdump

14

Comment puis-je capturer les N dernières secondes de paquets en utilisant tcpdump?

Flimzy
la source
1
"Donnez-moi" ne vous mènera pas loin ici. Vous devriez peut-être nous montrer ce que vous avez essayé jusqu'à présent et où exactement vous avez des problèmes que vous ne pouvez pas résoudre vous-même.
matthias krull
La commande bash que vous voulez est: "man tcpdump"
William Pursell

Réponses:

15

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.

sieste
la source
Malheureusement, la commande de délai d'attente n'est pas présente dans CentOS 5.x. Il a été ajouté dans une version plus récente de coreutils. Une autre motivation pour moi de mettre à jour le système d'exploitation.
Mister_Tom
Je suppose que si vous n'avez pas de délai d'expiration, vous pouvez plutôt créer quelque chose comme le délai d'expiration avec un script:
sieste
Fonctionne très bien pour moi. Je l'ai utilisé pour surveiller tout le trafic d'un programme qui ne fonctionnait pas. J'ai commencé tcpdump avec un timeout de N secondes. J'ai ensuite démarré le programme (qui prend jusqu'à N secondes).
Trevor Boyd Smith
La question demande de capturer les N dernières secondes. Votre réponse indique comment capturer les N premières secondes.
Flimzy
3

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.

Flimzy
la source
tcpdump 3.9.4 tel qu'il est livré avec CentOS 5.10 n'a pas l'option -G. J'ai vraiment besoin de mettre à jour mon système d'exploitation.
Mister_Tom
-G n'arrête pas la commande tcpdump. Il fonctionne toujours pour toujours. Le timeout 2 tcpdump arrêtera la commande après 2 secondes.
ciceron
@ciceron: La question n'était pas d'arrêter tcpdump. Il s'agissait de capturer les N dernières secondes . Votre suggestion capturera les N premières secondes. Décidément pas ce que le PO a demandé.
Flimzy
1

Vous pouvez utiliser tethereal au lieu de tcpdump. Vous pouvez utiliser cette option de ligne de commande:

-a duration:X
Ugo
la source
Bien que cela puisse répondre à la question, ce serait une meilleure réponse si vous pouviez expliquer pourquoi .
DavidPostill
tcpdump lui-même ne permet pas une trace de paquet limitée dans le temps mais tshark le permet. (nb puisque cette question a été posée et répondue, Ethereal est devenu Wireshark) tshark -a duration:600 -i eth0 -w $(hostname).10mins.pcapva capturer l'équivalent de dix minutes de trafic depuis l'interface eth0 dans le fichier $ (hostname) .10mins.pcap
Andrew Beals
0

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

spartacus
la source
fwiw pgrep est une bien meilleure alternative à ps | grep; surtout ici.
Bonne personne
0

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
lafferc
la source
0

sudo tcpdump -i -w et cela fonctionnera tcpdump est en mode veille

  • w: enregistrer la sortie dans le fichier .pcap &: le processus tcpdump s'exécutera en mode veille note: assurez-vous d'avoir suffisamment d'espace disponible si vous le souhaitez. pour l'exécuter pendant un certain temps. Il n'interrompra pas si vous vous déconnectez jusqu'à ce que vous tuiez le processus.
Lin-man
la source