Wie kann ich dafür sorgen, dass tcpdump die tcp-Header nicht druckt?

28

Ich habe es versucht:

tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'

Ich brauche nur den ASCII-Teil davon. Wie entferne ich den Rest?

Kodierer
quelle
1
mit tshark kannst du es machen mit: tshark -l -i eth0 -f 'port 6667 und höher 74' -T field -e data
Marcin
Es besagt, dass 28 Pakete erfasst wurden, STDOUT jedoch nichts druckt.
Kodierer
Meinen Sie ASCII7?
Mircea Vutcovici

Antworten:

15

Wie Josh vorschlägt, kann tcpflow nur die TCP-Paketdaten in eine Datei oder STDOUT drucken. Sie können tcpdump folgendermaßen an tcpflow weiterleiten:

tcpdump -i lo -l -w - port 23 | tcpflow -C -r -

Um nur eine Seite der Konversation anzuzeigen, können Sie Filter für tcpdump verwenden, z dst port 23.

mullally
quelle
4
Warum müsstest du tcpflowals root anfangen ?
Ruslan
5

Ich bin mir nicht sicher über die genaue Syntax für tcpdump... in der Tat habe ich diese Frage als Favorit markiert, weil ich wissen möchte! Als alternative Lösung können Sie jedoch versuchen, tcpflowstattdessen zu verwenden. Es funktioniert im Wesentlichen genauso, druckt jedoch die ASCII-Ausgabe viel besser. Die Header wurden ausgeschlossen und die Pakete werden nacheinander als Fluss gedruckt, sodass das Lesen und Verfolgen manchmal einfacher ist als tcpdump.

Josh
quelle
5

Ich denke, die eleganteste Lösung ist es, einfach tcpdump loszuwerden. Keine Pfeifen jeglicher Art:

tcpflow -c port 6667

Und das ist es.

BarsMonster
quelle
Du hast mein Leben gerettet, ich möchte dir einen Keks kaufen
gdaras
4

Ein schneller und unsauberer Weg, dies zu tun, besteht darin, die Ausgabe durch Zeichenfolgen zu filtern:

tcpdump -nli eth0 '(port 6667) and (length > 74)' -s 0 -w - | strings

Manchmal haben Sie keine anderen Tools und für einen kurzen Blick in die Nutzlast reicht dies aus. Es ist natürlich nicht gut, wenn Sie die genaue Nutzlast für die Injektion oder eine genaue Analyse benötigen.

Eduardo Ivanec
quelle
1

Wenn Sie nur den ASCII-Teil benötigen, können Sie tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'|sed 's/\.//g'Folgendes verwenden: oder mit ngrep:ngrep -d eth0 -lq . '(port 6667) and (length > 74)' |sed -rn '/^ /s/\.//gp'

Mircea Vutcovici
quelle
1

Ich hatte letzte Woche das gleiche Problem - ich habe stattdessen die Wireshark-GUI verwendet und eine "Kopie lesbarer ASCII" für die interessanten Pakete erstellt.

Ich habe (erfolgreich) versucht, ein Problem mit einer http-Anfrage an einen Web-Service und dessen XML-Antwort festzuhalten.

Nils
quelle