Was ich genau machen möchte?
Fragmentierten Netzwerktraffic zusammenstückeln
Ähnlich wie Wiresharks "Follow stream", nur viel schlichter, möchte ich beispielsweise allen HTTP-Verkehr überwachen. Dazu nutze ich WinPcap, und bekomme Pakete, wie sie WinPcap liefert.
Dann gehe ich hin (ich hänge meinen Code einfach mal an), und erkenne (PCAPHandler) am Header dieser Pakete etwa, daß es sich um ein IPv4-Paket handelt. Diesen untersuche ich (ProcessIPv4Packet), und verarbeite
TCP-Pakete weiter (ProcessTCPPacket). Alles was auf Port 80 funkt oder mit "GET " oder "POST " anfängt (ich weiß, "HEAD " bräuchte ich z.B. auch noch), sammle ich dann (ProcessHTTPPacket) und verarbeite es weiter (ReportStream).
Und da bin ich nun. Ich habe HTTP-Anfragen und Antworten, zwischen denen ich stumpf anhand eines Wechsels des Ports unterscheide. Nur - die Kommunikation kann ich so nicht wiederherstellen, da die Reihenfolge nicht immer korrekt ist.
Anders beschrieben: ich habe beispielsweise alle Netzwerkpakete einer über HTTP übermittelten Datei, und muss sie jetzt in die richtige Reihenfolge bringen.
Das Endpaket wird vermutlich durch PSH im
TCP-Header (ControlFlags) markiert?