Erfassen der letzten N Sekunden von Paketen mit tcpdump

18151
Flimzy

Wie kann ich mit tcpdump die letzten N Sekunden von Paketen erfassen?

12
"Gib mir" wird dich hier nicht weit bringen. Vielleicht sollten Sie uns zeigen, was Sie bisher ausprobiert haben und wo genau Sie Probleme haben, die Sie nicht selbst lösen können. matthias krull vor 13 Jahren 1
Der Bash-Befehl, den Sie möchten, lautet: "man tcpdump" William Pursell vor 13 Jahren 0

6 Antworten auf die Frage

13
siesta

Wenn Sie möchten, dass tcpdump n Sekunden lang läuft und dann beendet wird, können Sie Timeout verwenden.

Zum Beispiel:

timeout 2 tcpdump -eni mon0 

Ansonsten glaube ich nicht, dass tcpdump dazu eine Option hat.

Leider ist der Timeout-Befehl in CentOS 5.x nicht vorhanden. Es wurde in einer neueren Version von coreutils hinzugefügt. Eine weitere Motivation für mich, das Betriebssystem zu aktualisieren. Mister_Tom vor 10 Jahren 0
Ich denke, wenn Sie kein Timeout haben, können Sie stattdessen so etwas wie ein Timeout mit einem Skript erstellen: siesta vor 10 Jahren 0
Funktioniert gut für mich. Ich habe dies verwendet, um den gesamten Verkehr für ein Programm zu überwachen, das nicht funktionierte. Ich habe tcpdump mit einem Timeout von N Sekunden gestartet. Dann habe ich das Programm gestartet (was bis zu N Sekunden dauert). Trevor Boyd Smith vor 10 Jahren 0
Die Frage fordert Sie auf, die * letzten * N Sekunden einzufangen. Ihre Antwort zeigt, wie die * ersten * N Sekunden erfasst werden. Flimzy vor 8 Jahren 0
3
Flimzy

Ich denke, der beste Weg, dies zu erreichen, ist mit dem Flag tcpdump -G, das bei Verwendung von -w Ihren Speicherabzug alle N Sekunden in einer neuen Datei speichert. Zum Beispiel:

tcpdump -w outfile-% s -G 10

Dadurch wird alle 10 Sekunden eine neue Datei mit dem Namen 'outfile-XXXX' (wobei XXXX die Anzahl der Sekunden seit der Epoche darstellt) erstellt.

Weitere Informationen finden Sie in den Manpages zu tcpdump (8) und strftime (3).

tcpdump 3.9.4, wie es mit CentOS 5.10 ausgeliefert wird, verfügt nicht über die Option -G. Ich muss mein Betriebssystem wirklich aktualisieren. Mister_Tom vor 10 Jahren 0
-G stoppt den Befehl tcpdump nicht. Es läuft immer noch für immer. Das Timeout 2 tcpdump stoppt den Befehl nach 2 Sekunden. ciceron vor 8 Jahren 0
@ciceron: Bei der Frage ging es nicht darum, tcpdump zu stoppen. Es ging darum, die * letzten N Sekunden * einzufangen. Ihr Vorschlag erfasst die * ersten * N Sekunden. Entschieden nicht, was das OP verlangte. Flimzy vor 8 Jahren 0
0
spartacus

tcpdump options -w new.tcpdump

ps -ef |grep tcpdump

Beachten Sie die PID, sagen Sie, es ist 11193

at 11:00 kill 11193

Warten Sie einfach, bis 11:00 Uhr kommt und Ihre Gefangennahme wird getötet, aber gespeichert

fwiw pgrep ist eine viel bessere Alternative zu ps | grep; vor allem hier. Good Person vor 9 Jahren 0
0
lafferc

Ich habe versucht, das gleiche Problem zu lösen, also habe ich ein portables Skript geschrieben, um tcpdump für n Sekunde auszuführen.

#tcpdump_for_n_sec.sh n=$1 shift #remove first arg from $@  tcpdump $@ & x=$! sleep $n kill $x 

Verwendung von ./tcpdump_for_n_sec.sh-Informationen für tcpdump

./tcpdump_for_n_sec.sh 5 i- any not port 22 -s0 -wfile.pcap 
0
Lin-man

sudo tcpdump -i -w & führt aus, dass tcpdump im schlafmodus ist

  • w: Ausgabe in der .pcap-Datei speichern &: tcpdump-Prozess wird im Ruhemodus ausgeführt. Hinweis: Stellen Sie sicher, dass genügend Speicherplatz zur Verfügung steht, wenn Sie möchten. es für eine Weile laufen lassen. Wenn Sie sich abmelden, wird es nicht unterbrochen, bis Sie den Vorgang abbrechen.
-1
Ugo

Sie können Tethereal anstelle von tcpdump verwenden. Sie können diese Befehlszeilenoption verwenden:

-a duration:X 
Obwohl dies die Frage beantworten kann, wäre es eine bessere Antwort, wenn Sie eine Erklärung liefern könnten, warum dies so ist. DavidPostill vor 9 Jahren 0