2016-04-13 17 views
0

Ich versuche, einen Wireshark Filter auf ein Verzeichnis von .cap Dateien von tcpdump erstellt anwenden. Ich habe ungefähr 1000 .cap-Dateien, die auf Filterung warten (wir erfassen absichtlich ohne Filter, um sicherzustellen, dass wir alle Daten haben, die wir brauchen, falls unsere Hypothese nicht durchschlägt). Ich kann keine Verweise auf Leute finden, die tshark verwenden, um rekursiv eine Datei zu lesen, den Filter anzuwenden, eine neue .cap Datei auszugeben, dann weiter zum nächsten, spülen, wiederholen.Recursively Filter Verzeichnis von .cap/.pcap Dateien Mit tshark

Mein einrichten:

Tcpdump Verkehr Dumping und in eine neue Datei rollen, sobald die Datei 1GB (für pcaps ja, sehr groß) erreicht. Gerade als Referenz, ist dies der tcpdump Befehl Ich verwende:

sudo tcpdump -q -i <INTERFACE> -w path/to/capfile.cap -C 1000 -Z root 

Ich kann tshark verwenden, um einen Filter zu einem bestimmten .cap Datei anzuwenden und es Ausgabe in eine neue Datei .cap kein Problem mit dem folgenden Befehl haben:

tshark -R <FILTER> -r in.cap0001 -w out.cap0001 

Tshark Hauptseite Staaten,

"-r ... Es ist möglich, Named Pipes oder stdin zu verwenden (-) hier ..."

aber ich bin nicht bedeutet, einen Experten mit dem Namen pipes, stdin, noch bin ich Programmierer.

Könnte mir jemand in die richtige Richtung zeigen? Vielen Dank!

+0

Wenn meine Antwort für Sie funktioniert, [markieren Sie sie als akzeptiert] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work). Wenn dies nicht der Fall ist, fügen Sie einen Kommentar hinzu, in dem Sie um Klärung oder Korrekturen gebeten werden (ich denke, Sie können nur Ihre eigene Frage nach Ihrem aktuellen Ruf kommentieren, aber keine Sorge, ich werde es lesen). – Nacho

+0

Danke Nacho, sehr geschätzt. Das einzige was ich ändern musste war 'grep' \ .cap $ ''zu' grep' \ .cap'' – hyraxai

+0

Gern geschehen. Das bedeutet, dass die Dateien nicht genau mit ".cap" enden, ich vermute '.cap0001' bis' .cap1000' dann, wenn das der Fall ist, dann sollte das Entfernen des '$' es tun. Prost! – Nacho

Antwort

0

Ich denke, dass Sie dies direkt mit einigen Shell-Befehlen erreichen können.

die folgenden Versuchen, auf das Verzeichnis, in dem Sie Ihre Aufnahmen haben und führen Sie den folgenden Befehl ein:

ls | grep '\.cap$' | while read f; do (tshark -R <FILTER> -r $f -w mod_$f); done

Diese neue .cap Dateien mit dem gewünschten Filter angewendet produzieren wird. Unnötig zu sagen, dass dieser Befehl an Ihre persönlichen Bedürfnisse angepasst werden kann, aber es ist ein guter Ausgangspunkt.


Befehle Erklärung:

ls: Auflisten aller Dateien im aktuellen Verzeichnis enthalten sind.

|: Rohr, der Standardausgang des linken Befehls wird als Standardeingabe des rechten Befehls verwendet.

grep '\.cap$': Stellt sicher, dass Sie nur mit Dateien arbeiten, die auf enden. Cap wird abgeglichen. Wie pro Ihren Kommentar, beachten Sie, dass, wenn die Dateien mit .cap dieser Filter nicht genau enden sollte, da $ sagt grep-grep '\.cap' geändert werden, dass die Zeile endet mit dem, was ihr vorausgeht (in diesem Beispiel die „.cap“ Zeichenfolge).

while read f: Liest jede durch die vorherigen Befehle zurückgegebene Zeile.

do (<COMMAND>): Für jede Zeile lesen, es do ES den Befehl aus, der in diesem Fall ist Ihr tshark Befehl.

done: Teil der while Befehlssyntax.


Beispiel Befehlsausführung:

# ls 
fake.cap2 non_cap_file.txt out2.cap out.cap 

# ls | grep '\.cap$' 
out2.cap 
out.cap 

Das folgende ist die einzige Zeile, die Sie tatsächlich ausführen müssen, die andere sind hier nur die Ordnerinhalte vor und nach der Ausführung des Befehls zu veranschaulichen.

# ls | grep '\.cap$' | while read f; do (tshark -R <FILTER> -r $f -w mod_$f); done 
Running as user "root" and group "root". This could be dangerous. 
Running as user "root" and group "root". This could be dangerous. 

Auf einer Seite zur Kenntnis, bekam ich diese Wurzel Warnung, weil ich diesen schnellen Test Benutzer root hat ...

# ls 
fake.cap2 mod_out2.cap mod_out.cap non_cap_file.txt out2.cap out.cap 

# ls | grep '\.cap$' 
mod_out2.cap 
mod_out.cap 
out2.cap 
out.cap 

Wie Sie es packt jede .cap Datei sehen können, gilt der Filter angegeben und schreibt eine neue mod _ *. cap Datei.