[VB] Wie kann ich den "Netzwerkverkehr" auslesen ?

Clocker 2800+

Lt. Commander
Registriert
Apr. 2007
Beiträge
1.409
Hallo,

wie kann ich in Visual Basic die Dateien, die Packete, ... auslesen, die über das Netzwerk (z.B. über das Internet) geschickt werden.

Also wenn ich z.B. eine Datei herunterlade, dann sollte das Programm das erkennen.

---
P.S. Ich nehme auch Codes, die nicht Visual Basic tauglich sind (z.B. von C++, VB.net, ..)
 
Wireshark (ehem. Ethereal) kann doch mehr als genug? Aber bei deinen ausführlichen Recherchen zum Thema bevor du einen Thread dazu erstellst wirst du da sicher schon drauf gestoßen sein.
Dann hast du sicher auch gemerkt, dass Wireshark Open Source ist. Das wäre zum Beispiel ein Ansatzpunkt.

Oder du benutzt WinPcap, welches auch vom genannten Wireshark benutzt wird.
Das sollte denke ich für eine weitere Suche bei Google und Wikipedia reichen.

Fertigen Code zum Auslesen von Dateien wirst du wohl nicht finden. Da ist eigene Programmierarbeit gefragt.

mfg
 
Das Programm ist warscheinlich in C geschrieben.

Kann man den C-Code in Visual-Basic-Code, VB.net-Code, ... umwandeln (umändern).
 
Zuletzt bearbeitet:
Klar kannst du es "übersetzen". Aber du musst halt C können.
Ein Tool, dass den Code in VB umwandelt gibt es bestimmt nicht.

Und bitte hör auf deinen Thread zu pushen. Das verärgert nur die Leute die dann mehrmals draufklicken obwohl nix neues da ist.
 
Also ich würde davon abraten Wireshark zu debuggen, da das nur die Funktionen von WinPcap benutzt.

Benutz einfach das Interface von WinPcap. Das wurde auch schon auf VB.NET portiert. Das alte VB würde ich generell gar nicht mehr angreifen. Das ist einfach bei weitem nicht mehr Stand der Technik. Was das objektorientierte Programmieren angeht, dann ist das sogar C++ weiter, das in den 80ern entwickelt wurde. Lade dir am Besten gleich das Visual Studio 2008 herunter (Express Edition sollte genug sein): https://www.computerbase.de/downloads/systemtools/entwicklung/visual-studio-2015/

Pass aber auf, dass du die Target Plattform auf .NET Framework 2 stellst, sonst wird es fast nirgends laufen (die meisten nehmen es nicht so genau mit den Updates wenn es nicht um Sicherheit geht). Einfach dein Projekt öffnen, Solution rechts oben auf dein Projekt (z.B. Networkcapture) rechtsklicken => Properties => Compile => Advanced Compile Options => Target Framework 2.0 es sei denn du willst die neuen Features von .NET Framework 3.5 nutzen (z.B. LINQ)

Hier ist der Link zu der WinPcapVersion (einfach kostenlos registrieren und das zip runterladen. Eigentlich brauchst du nur die .dll):
http://www.codeproject.com/KB/IP/dotnetwinpcap.aspx

Wenn du willst, kann ich dir auch gleich ein kleines Projekt online stellen, wo alles eingebunden ist.

Update: Was mir gerade noch einfällt. Wenn du herausbekommst, wie das Auslesen der Pakete ohne Events geht, dann bitte auch hier posten. Ansonsten einfach folgenden Code nehmen (Schreibt Datum und Länge aller empfangenen Pakete in die Textbox (Daten selbst auslesen geht natürlich auch):

P.S.: Bevor jetzt blöde Kommentare kommen: Ich weiß, dass man so nicht programmieren kann und Fehler abfangen muss (besonders beim Suchen vom Device), aber ich wollte den Code kurzhalten. Die Lösung mit out und txt_out ist auch nicht thread safe.
 

Anhänge

Zuletzt bearbeitet von einem Moderator: (Code aus dem Post genommen und als Text angehangen, weil davon das Layout komplett gesprengt wurde.)
Danke. Werd ich mal ausprobieren.

P.S. Kann man das Programm (durch die dll-Datei) später auch mal (wenn noch was dazugekommen ist) verkaufen ?
 
Zuletzt bearbeitet:
Ich habe diesen Thread zufällig gefunden und bin nach der obigen Anweisung vorgegangen.

Leider bekomme ich eine Fehlermeldung wenn ich das Projekt mit VB 2008 Express laden will.
 
Willkommen im Forum!

Und welche Fehlermeldung bekommst du? Wir können dir so nicht helfen.
 
Hier die Fehlermeldung
 

Anhänge

  • vb.gif
    vb.gif
    8,9 KB · Aufrufe: 564
Es handelt sich um ein C# Projekt, welches logischerweise nicht mit VB geladen werden kann.
 
Danke, ich hatte das oben falsch verstanden.

Noch eine Frage zu dem Projekt.

Wie kann ich die gescannten Daten in einer Richtextbox ausgeben lassen anstatt in ein Logfile zu schreiben ?
 
1.) Kann das sein, dass du meinen Link falsch interpretiert hast? Du sollst dir nur die .dll holen. Das Projekt, das da auch dabei ist, ist nur ein kleines Beispiel, was man damit machen kann.

2.) Die dll ist zwar in C# geschrieben, aber weil es eben eine dll ist, kannst du sie in jeder Programmiersprache ansprechen, die die nötigen Features bietet (C++, C#, VB.NET)
Ich bevorzuge VB.NET, da es von der Syntax her am übersichtlichsten ist. Das hat seine ganzen Altlasten weitgehend entsorgt, während das bei C# noch nicht der Fall ist. Das ist immer noch sehr C lastig (mit allem Murks, den es dort gibt), wird aber häufig von C++ Programmierern eingesetzt, die sich bei der Syntax nicht umstellen wollen. Meiner Meinung nach ist hier VB.NET bei weitem überlegen z.B. statt den geschwungenden Klammern sprechende Bezeichungen, keine Strichpunkte (mit allen dämlichen Kontrukten, die man damit bauen kann), keine Pointer, um die man sich kümmern muss (weiß nicht ob es das in C# noch gibt) etc., was aber nur bei einem guten Editor Sinn macht, wo alle Einrückungen, Vervollständigungen etc. gleich automatisch passieren. Ein C++/C# Fanatiker wird das jedoch anders sehen. Ich habe mich mit beidem beschäftigt (C,Java,VB.NET, ein bisschen C++ und zum Schluss auch noch mit dem alten VB6) und bin schließlich zu der Erkenntnis gelangt, dass man mit normalen Anwendungen mit VB.NET am Besten bedient ist. Wenn man schnelle Algorithmen schreiben will ohne viele Eingaben, dann ist natürlich C die erste Wahl (mit vielleicht ein paar C++ Features), aber das braucht die Mehrheit eher selten.

3.) Natürlich kannst du die Software auch verkaufen, wenn du willst. Ich suche mir in der Arbeit oft Codestücke aus dem Internet zusammen. Keiner kann ganz von vorne beginnen. Du solltest dir halt nur im Klaren sein, dass der Code, den du irgendwo findest, genauso wie der Code, den ich hier im Forum poste zwar uneingeschränkt verwendbar ist (im Gegensatz zur GPL auch in Closed Source Anwendungen verwendbar), aber auf der anderen Seite auch kein Support etc. zu erwarten ist. Wenn also ein Bug drin ist, dann ist der drinnen und wenn man ihn nicht beheben kann (wovon auszugehen ist), dann muss man damit leben.
 
Du solltest dir halt nur im Klaren sein, dass der Code, den du irgendwo findest, genauso wie der Code, den ich hier im Forum poste zwar uneingeschränkt verwendbar ist
Lüg doch nicht. Nur weil man Code "irgendwo findet" ist er längst nicht uneingeschränkt verwendbar.
Die hier genannte Bibliothek übrigens auch nicht:

http://www.winpcap.org/misc/copyright.htm
 
Und wie kann man die ganze Seite kurz zusammenfassen?

1.) Wir übernehmen keine Verantwortung für die Software, die wir schreiben. (ist ja sowieso klar, braucht man nicht extra dazuschreiben)
2.) Man darf es nicht unter dem Namen der Herstellers weiterverbreiten. (darf man ja sowieso nicht wegen dem Markenschutz)
3.) Man darf diesen Text nicht ausbauen, weil sonst könnte ja jemand meinen, für ihn gelten die oberen zwei Zeilen nicht, weil er sie nie gelesen hat. Davon, dass man das Zeug zwingend Open Source machen muss und auf alle seine Urheberrechte verzichtet, steht nichts.

Das Copyright Statement dient also nur dazu, um sich im US-Raum, wo oft sinnlose Urteile gesprochen werden so abzusichern, dass nicht irgendwer auf die Idee kommt, Support oder Schadensersatz zu verlangen.

Weiters soll man nicht alles, was in Lizenzvereinbarungen steht so ernst nehmen. Die Lizenzvereinbarungen ist das, was der Herstellern gerne hätte, das geltendes Recht ist. Das unterscheidet sich schon einmal stark im geltenden Recht von den USA und das wiederrum noch einmal von dem Recht in Europa/Deutschland/Österreich z.B. meint MS, dass man die Windows OEM Versionen nicht verkaufen darf, in der Realität ist das jedoch bei uns erlaubt (und wird auch von vielen Händlern praktiziert).
Und dann ist noch einmal ein ordentlicher Sprung zu dem, was rechtlich wirklich sinnvoll ist und was auch praktisch gemacht wird.

Ich glaube z.B. nicht, dass www.computerbase.de oder irgendeine andere ähnliche Seite von jedem Softwarehersteller explizit die Erlaubnis bekommen hat, dass man ihre Software in der Download Rubrik verlinken darf, genauso wie man nicht einfach Bilder von der Google suche verlinken darf.

Theoretisch dürfte man auch nicht z.B. von selfhtml.de (und die Seite, die ich verlinkt habe ist fast das Gleiche) aus den Beispielen etwas in seine Homepage übernehmen, da das ja auch urheberrechtlich geschützt ist. Jetzt frage ich dich, warum es solche Seiten überhaupt gibt?
 
Zuletzt bearbeitet:
Wenn ich die exe-Datei starte, dann kommt die Fehlermeldung, dass die wpcad.dll nicht gefunden wurde.
 
Bei mir läuft das Beispielprogram unter VB.

Ich frag mich nur wie man sich die gesnifften Pakete anzeigen lassen kann.
 
@andr_gin,

(Daten selbst auslesen geht natürlich auch):

Kannst du bitte auch dafür ein kleines Beispiel schreiben?
Möchte z.B. nur bestimmte Datenpakete auslesen.
Aber wie?
 
Zuletzt bearbeitet von einem Moderator: (Überflüssiges Komplettzitat entfernt!)
Nach was willst du denn die Pakete filtern. Wenn du mir ein paar Kriterien nennst, kann ich das Ganze leichter machen?

Du bekommst hier die Binärdaten der empfangenen Pakete. Um einen Filter zu realisieren, musst du eine Ahnung der verwendeten Protokolle haben.

Grundsätzliche Funktionsweise (vereinfacht):
Die Pakete wandern auf dem Weg von den Binärdaten bis zur Applikation selbst mehrere Layer durch. Laut OSI Schichtenmodell sind es 7, aber hier sind die wichtigsten:

1.) Physical Layer: Behandelt die elektrische Codierung. Das hat dir schon die Netzwerkkarte abenommen
2.) Data-Link Layer: Hier sind die MAC Adressen zu finden
3.) Network Layer: Hier sind IP Adressen zu finden
4.) Transport Layer: Hier sind die TCP/UDP Ports zu finden. Ein Ping wäre auch auf dieser Ebene.
7.) Application Layer: Hier ist die Applikation selbst. Diese kann hier jedoch manchmal noch eigene Sublayer definieren je nach Anwendungsbereich

Üblicherweise schaut der Aufbau so aus:
Layer2: Header - Daten - eventuell hinten noch ein Teil des Headers (je nach Protokoll)
Layer3: Header - Daten - eventuell hinten noch ein Teil des Headers
usw.

Das gesamte Paket des Layer 3 sind die Daten des Layer 2. Voll eingepackt schaut das dann ca. so aus:

Header L2 - Header L3 - Header L4 - Daten - Ende L4 - Ende L3 - Ende L2

Kompliziert wird es meistens ab dem Layer4 zum Filtern, da das TCP Protokoll relativ komplex ist und sich die Daten auf mehrere Pakete verteilen.
 
Zurück
Oben