Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
[VB] Wie kann ich den "Netzwerkverkehr" auslesen ?
Hi,
danke für dein Antwort. Wie ich sehe hast du viel Ahnung was Netzwerkprogrammierung
angeht. Wen ich richtig verstehe musste ich die Daten aus Layer 4 raus filtern.
Leider hab ich nicht viel Ahnung was Netzwerkprogrammierung angeht
und bin für jede Hilfe auch Dankbar. Am besten zeige ich dir das was ich vor habe mit einem Bild.
Zuletzt bearbeitet von einem Moderator:
(Überflüssiges Komplettzitat entfernt!)
Also ganz ehrlich das ist schon mal ne Menge "Holz" die du da bewegen werden musst. Schau am besten in die RFC (Requested For Comments, Google ist dein Freund). Da stehen alle notwendigen Informationen drin, was in welchem Frame an welcher Stelle wie zu lesen ist. Als nächstes wäre dann der Quellcode von z.B. WinPCap zu studieren.
Ab Layer4 wird es etwas komplizierter, aber ich schau mir die Sache einmal an, bin nur übers Wochenende nicht dazu gekommen.
Ergänzung ()
So ich habe da einmal etwas gebastelt.
Grobe Übersicht:
Du hast eine Cobobox, mit der du die Devices anzeigen lassen kannst.
Der Refresh Button dient dazu, damit man eventuelle neue Devices (z.B. vorher deaktivierte) anzeigen lassen kann bzw. um die Ausgabe zurückzusetzen.
Wenn man ein Device auswählt, dann fängt er an zu sniffern
Ein Thread nimmt alle Pakete entgegen und speichert diese.
Ein anderer Thread mit niedriger Priorität verarbeitet die Pakete und baut die Daten einem EthernetPacket zusammen:
Klasse EthernetPacket:
DestinationMAC: MAC des Ziels
SourceMAC: MAC des Absenders
HasIPPacket (es gibt auch Ethernet Pakete, die nicht auf IP Basis sind => die kannst du aussortieren)
IPPacket (eine Klasse)
Klasse IPPacket:
SourceIP: IP des Absenders
DestinationIP: IP des Ziels
IsIPV4Packet: Gibt an, ob es sich um ein IPv4 Paket handelt (IPv6, IPX etc. werder ignoriert)
HasTcpPacket: Gibt an, ob das darüber liegende Protokoll Tcp ist (es gibt z.B. auch UDP oder ICMP (wird von Ping verwendet))
TcpPacket (eine Klasse)
Klasse TcpPacket:
SourcePort: Port des Absenders
DestinationPort: Port des Empfängers
SequenceNumber
AckNumber
WindowSize
Hiermit solltest du die Daten der jeweiligen Pakete auslesen können. Ich habe hier nur die Http Pakete gefiltert und gebe für jedes eine Zeile aus mit Datum, Source IP/Port, Destination IP/Port und Länge der Daten. Hier kannst du dann machen, was du willst.
Die Daten wieder auf einen zusammenhängenden Datenstrom zusammen zu bauen wird jedoch schon etwas komplizierter. Hier muss man die Pakete einer jeweiligen Verbindung (Source/Destination IP und Port gleich bzw. umgekehrt) zusammen sammeln und diese wieder zusammen setzen, indem man die Daten an der jeweiligen SequenceNumber einfügt. Die Reihenfolge der Pakete kann sich hier nämlich ändern.
Inhalt von MyLib:
Die Klasse GenericArray dient als Hilfsfunktion für Arrays, Listen etc.
Die Klasse InterEncoding dient zum Umwandeln von Byte Feldern in Integer
Die Klasse PrintableDevice dient dazu, um die Devices beliebig formatiert (ToString Funktion) in der Combobox anzeigen zu lassen.
Ich habe die verwendete Source Files hochgeladen Die müsstest du in ein neues Projekt (StartFormular heißt Main) kopieren. Ich kann leidernicht das ganze Projekt hochladen, weil ich das Projekt gleich dazu missbrauche, um Visual Studio 2010 anzutesten.