Ich versuche, ein Problem zu beheben, bei dem auf einer Appliance nur tcpdump verfügbar ist. Ich möchte tcpdump verwenden, um den Webdatenverkehr zu filtern und nur den Datenverkehr anzuzeigen, der bestimmte Zeichenfolgen enthält.
Ich mache folgendes:
tcpdump -nei eth0 -X | grep "something interesting"
Die Ausgabe ist ein Hexview mit 16 Bytes pro Zeile. Ich kann diese Daten nicht erfassen, da die Daten in mehreren Zeilen dargestellt werden.
Gibt es eine Möglichkeit für tcpdump, die erfassten Daten in einer einzelnen Zeile darzustellen? Dies würde es möglich machen, grep zu verwenden, um interessante Pakete zu finden.
linux
networking
tcpdump
Hund essen Katzenwelt
quelle
quelle
tcpdump -nei eth0 -X | grep --line-buffered "something interesting"
wird aus unbekannten Gründen tun, meine gültige Arbeitsantwort wurde gelöscht.Antworten:
Für diejenigen wie Sie, die dies nicht können
ngrep
, ist hier beschrieben, wieawk
dietcpdump
Ausgabe von Paketinhalten grepable gemacht wird.Zuerst einige Beispielausgaben von
tcpdump -x
, um die bevorstehende Aufgabe zu präsentieren:Und dies ist das kopier- und einfügbare
awk
Skript, an das Sie die Ausgabe weiterleiten könnenUm die folgende, grepable Ausgabe zu erhalten
Unten ist eine kommentierte Version des obigen Skripts:
quelle
Aus der
tcpdump
Manpage:Stellen Sie sicher, dass Sie auch die
-s 0
Option verwenden, um sicherzustellen, dass das gesamte Paket angezeigt wird.quelle
Vielleicht möchten Sie einen Blick auf
ngrep
Befehl werfen :ngrep -W single -d eth0 'regex to match' 'port 80'
Wo:
-W single
Gibt die Formatierung einzelner Zeilen anregex to match
bedeutet, dass nur Pakete ausgegeben werden, die eine bestimmte Zeichenfolge enthalten.'port 80'
ist ein pcap-Filter, mit dem nur Pakete von oder nach Port 80 abgehört werden könnenquelle
Der Grund, warum Ihre Ausgabe hex ist, ist das
-X
Flag. Versuchen:Sie erhalten eine lesbare Ausgabe direkt auf das CLI.
quelle
Ich konnte das awk-Skript nicht dazu bringen, das zu tun, was ich wollte, und ngrep funktionierte auf einem Ethernet über USB nicht. Deshalb schrieb ich ein kleines C-Programm, um die von tcpdump ausgegebenen Zeilen zu verbinden, damit sie grepable sind. Es ist unter https://gitlab.com/dargaud/TcpDumpJoin
quelle