tcpdump vs tcpflow (oder "Warum ist tcpdump ASCII-Paketdaten nicht lesbar?")

8

Ich habe beide verwendet, und ich komme zu dem Schluss, dass ich HTML-Daten von Webseiten mit tcpflow lesen kann, aber nicht mit tcpdump. Das Beste, was ich bekomme, ist ein hässlicher ASCII-Text mit vielen Punktsymbolen.

Ich verstehe, dass tcpdump Pakete nicht wieder zusammenfügt, während tcpflow das tut. Aber wenn das der Hauptunterschied wäre, wären die Paketdaten von tcpdump immer noch für Menschen lesbar - nur in kleineren Stücken? Ist das Problem, dass tcpdump auf ASCII beschränkt ist und der meiste Netzwerkverkehr in UTF-8 kodiert ist?

Ich bin ein Neuling im Bereich Netzwerkanalyse / Programmierung, also vergib mir, wenn mir etwas offensichtlich fehlt.

    
Sridhar-Sarnobat 06.09.2011, 06:18
quelle

2 Antworten

11

Um diese verschlüsselten Daten zu erhalten, sollte tcpdump mit der Option tcpdump –A (Kapital a) verwendet werden. Es überträgt Text ohne Header und wird hauptsächlich für Webseiten verwendet. Daher bekommen wir die Antwortseite einfach.

Ich denke, Sie werden zwischen einer Anwendungsebene und einem Transportschichtpaket verwirrt.

Ich weiß nicht über tcpflow, aber tcpdump erfasst das ganze Paket (einschließlich Header und alle anderen Sachen) und nicht nur die Daten. Die HTML-Daten, die Sie erwähnen, wären im Datenteil eines tcp / udp / icmp Pakets Sie verwenden und so müssen Sie auch die Struktur von TCP / UDP / ICMP Paket verstehen ...

Ich nehme dieses Paket auf meiner Maschine auf und HTML-Daten sind deutlich sichtbar, Sie müssen Skript schreiben, um es aus der Ausgabe mit einer Kenntnis der Paketstruktur zu bekommen.

%Vor%

Die letzten 7-8 Zeilen beschreiben die HTML-Daten.

Verwenden Sie -s0 , um den gesamten Rahmen zu erfassen, und -X , um in einem vom Menschen lesbaren ASCII-Format zu drucken.

Um diese verschlüsselten Daten zu erhalten, sollte man TCPDUMP mit der Option -A (Großbuchstaben a) verwenden. Es überträgt Text ohne Header und wird hauptsächlich für Webseiten verwendet. Daher erhalten wir die Antwortseite einfach.

Für zB:

Ich beantrage index.html bis 172.31.9.84 an Port 80

Dann habe ich GET / index.html angefordert (eine Beispielseite, die nur Text enthält "Indisches Institut für Technologie, das ist die Testseite")

In diesem Moment, als ich Pakete eingefangen habe, habe ich etwas wie:

%Vor%     
Udit Gupta 27.11.2011, 23:19
quelle
2

Wenn Sie versuchen, HTTP-Daten mit tcpdump zu erhalten, sehen Sie in ASCII einen leeren Text, wenn Sie die Option -A anwenden. HTTP-Daten werden jedoch fast immer mit dem gzip-Modus oder anderem komprimiert. Sie können es in Kopfzeilen sehen:

  

Content-Encoding: gzip, komprimieren, bzip2

tcpdump wird also auf Ihrem Bildschirm mehrere Bytes ausgeben und sie sind die komprimierten Daten !!! Sie müssen tshark oder wireshark verwenden, um flache Daten zu sehen. Dann ist dein Problem nicht UTF8.

Sie können die tcpdump-Datenanzeige testen, indem Sie das Deflate-Modul im Apache-Webserver deaktivieren.

Hoffe diese Hilfe.

    
Eriberto Mota 20.03.2013 23:15
quelle