Wie mache ich tcpdump (oder ein anderes Tool), um TCP-Stream tatsächlich zu sichern?

6

Ich erwarte so etwas:

$ nc example.com 80
GET / HTTP/1.0

HTTP/1.0 500 K.O.
Content-Type: application/null
Content-Length: -1
$ 

Meanwhile: 
# tcpdump -i eth0 --actually-dump-all-tcp
217.21.51.1:56812->192.0.43.10:80 GET / HTTP/1.0
217.21.51.1:56812->192.0.43.10:80 
217.21.51.1:56812<-192.0.43.10:80 HTTP/1.0 500 K.O.
217.21.51.1:56812<-192.0.43.10:80 Content-Type: application/null
217.21.51.1:56812<-192.0.43.10:80 Content-Length: -1

Jetzt benutze ich Wireshark, aber während des Ladens wird die Verbindung mehrmals beendet.

Vi.
quelle
tcpdump gibt tatsächlich einen TCP-Stream aus. Wonach suchen Sie konkret? Versuchen Sie, nur eine bestimmte TCP-Sitzung zu erfassen?
Flimzy
@Flimzy Nein, er möchte in ASCII sichern.
new123456

Antworten:

3

tcpdump Normalerweise werden Paketinformationen im Gegensatz zu tatsächlichen Daten angezeigt.

Verwenden Sie das -AFlag, um ASCII-Inhalte zu sichern. Es werden immer noch viele andere Daten (wie z. B. ARP- und DNS-Pakete) gespeichert, aber Sie sollten in der Lage sein, über Filter das zu erreichen, was Sie wollen .

new123456
quelle
Schmutziger Oneliner zum Drucken in einer Form, die meiner näher ist:tcpdump -n -A -i eth0 | perl -ne 'if(/\d\d:\d\d:\d\d\.\d{6} IP (\d+\.\d+\.\d+\.\d+)\.(\d+) > (\d+\.\d+\.\d+\.\d+)\.(\d+)\:.*length (\d+)/) { $preamble="$1:$2->$3:$4 "; } else { print "$preamble$_"; }'
Vi.
@Vi Wenn mein Gehirn nicht von der Arbeit mit setjmp/ hackery gestärkt worden longjmpwäre, hätte Perl mein Gehirn gebraten. Ich bin sicher, Douglas hätte einen Anfall, wenn er das gesehen hätte;)
new123456
9

Versuchen

tcpflow -v -i iface

Dadurch werden viele Dateien mit Dateinamen wie "IP_A.port.-IP_B.port" erstellt.

TrueY
quelle