2010-05-26 15 views
11

Ich versuche, HTTP-Daten über libpcap zu schnüffeln und alle HTTP-Inhalte (Header + Payload) nach der Verarbeitung der TCP-Payload zu erhalten.Rekonstruieren von Daten von PCAP Sniff

Laut meiner Diskussion unter Writing an http sniffer (or any other application level sniffer) habe ich Probleme durch Fragmentierung - ich muss den gesamten Stream rekonstruieren (oder defragmentieren), um ein komplettes HTTP-Paket zu erhalten, und hier brauche ich Hilfe.

Vielen Dank im Voraus !!

Antwort

9

Es ist wirklich ziemlich einfach. Nehmen Sie einfach die Ethernet-Frames, die Sie von pcap erhalten, und extrahieren Sie die IP-Pakete von ihnen und bauen Sie alle Fragmente zusammen, die fragmentiert wurden. Ordnen Sie dann die TCP-Segmente aus den IP-Paketen entsprechend den Folgenummern neu an, wobei Sie darauf achten, dass Sie doppelte Daten verwerfen. Verarbeiten Sie dann den Stream als HTTP-Stream. Natürlich kommt HTTP nicht in Paketen; Es ist ein Protokoll der Anwendungsebene, aber ich bin mir sicher, dass dies offensichtlich ist, sobald Sie alle anderen Arbeiten erledigt haben. Achten Sie darauf, dass Sie die IP-Header und TCP-Segmente überprüfen, um sicherzustellen, dass Ihre Daten korrekt sind. Wenn pcap zufällig irgendwelche Pakete verpasst, vergewissern Sie sich, dass Sie sich entsprechend damit befassen.

Um Ihnen zu helfen, entlang der Linux TCP stack sollte eine kurze Referenz zu diesem Prozess, wie es im Kernel auftritt.

+1

Danke! Ich habe den Punkt :) – Ishi

5

Anstatt die Streams selbst wieder zusammenzusetzen, können Sie tcptrace verwenden, um die pcap-Datei erneut zusammenzusetzen. Ich glaube, -e wird es tun.

Sobald Sie die Anwendungsschicht Daten in einem Stück haben, können Sie einfach HTTP-Header-Parsing .... Perhps aus einer Bibliothek wie http://github.com/ry/http-parser

+0

Danke Joe ... Ich werde diese Tools versuchen, wenn ich es nicht selbst tun kann. Danke noch einmal ! – Ishi

2

Um die Daten zu rekonstruieren, die in einer pcap-Datei ein wunderbares Werkzeug anwenden können ist Xplico: http://www.xplico.org

2

Das beste Werkzeug, um HTTP-Inhalt von PCAP-Dateien zu rekonstruieren ist justniffer. Es verwendet den Linux-Kernel für die IP-Fragmentierung und die Neuordnung des TCP-Pakets.