| 

.NET C# Java Javascript Exception

3
Ich würde, wie schon im Topic geschrieben, gerne einen eigenen virtuellen Netzwerktreiber in C# programmieren.

Die primäre Aufgabe dieses Treibers wird es sein die an der physikalisch vorhandenen Netzwerkkarte ankommenden RAW Packete einem von mir Programmierten Tool für eine Auswertung zur Verfügung zu stellen.

Nur wo fang ich da an? Ich finde zu dem Thema nicht wirklich viel und würde mich freuen wenn mir jemand ein paar Seiten, Bücher, Tutorials oder ähnliches empfehlen könnte.
17.09.2009
The_Holy_One 393 1 6
4 Antworten
2
Wie knivil bereits sagte, ist C# ungeeignet da du mit C# keinen direkten Zugriff auf die Hardware unter dir hast. C# ist als Hochsprache für Buisness-Anwendungen gedacht. Mit C# soll es möglich sein, schnell und ohne viel Aufwand, große Anwendungen zu schreiben wobei sich der Entwickler nicht um Pointer und Zieger oder Bufferoverlows kümmern braucht.
Hierfür ist eine gewisse Abstraction notwendig. Das .net-Framework auf dem C# basiert, bietet diese Abstraction und verlangt diese auch von den Sprachen die auf ihm aufbauen.

Um mit der Hardware kommunizieren zu können, wirst du direkt in C, C++ oder einer anderen Sprache arbeiten müssen die es dir erlaubt, mit Pointern und Zeigern zu arbeiten.

Du kannst jedoch in C# DLL's verwenden die in C und C++ geschrieben sind. Dadurch wird es wieder doch möglich, über C# auf die Hardware zuzugreifen, wobei der direkte Zugriff, wie oben beschrieben, nicht Funktioniert und der Umweg über andere Frameworks oder DLL's gegangen werden muss. Zum Beispiel ist die Kommunikation mit der Grafikkarte über DirectX möglich. DirektX ist im wesentlichen ein Framework für die Kommunikation mit Grafikkarten.
17.09.2009
Floyd 14,6k 3 9
Wenn man die oben genannte Idee von mir jedoch weiterspielt dann möchte ich eigentlich nur einen PassTrough Treiber für eine Hardwaretechnisch nicht existente und somit virtuelle Netzwerkkarte. Wozu brauch ich dann noch zugriff auf die Hardware? Oder muss ich per Hardwarezugriff den Netzwerkstrom über den dann existenten vNIC Treiber lenken?
The_Holy_One 17.09.2009
Da bin ich überfragt.
Floyd 17.09.2009
1
C# ist dafuer wohl ungeeignet.

Unter Linux gibt es die Moeglichkeit das Netzwerkinterface in den Promiscuous mode zu schalten. Vielleicht gibt es sowas auch unter Windows. Um eine eigene dll kommst du wahrscheinlich nicht herum, um den low-level-Zugriff zu gewaehrleisten.
17.09.2009
knivil 209 2
1
Schau mal unter http://www.winpcap.org.
Das ist eine Library zum 'Abhören' des Traffics.
Eventuell kannst Du die ja in C# ansprechen.
17.09.2009
DaSpors 4,2k 2 8
0
Danke @DaSpors,

letztendlich haben die mit Winpcap genau das realisiert was ich auch möchte - auch wenn ich nicht weiss ob mit einem eigenen Treiber oder nicht. Nur geht es mir hierbei nicht um eine Lösung "irgendwie" den Traffic auszulesen, sondern eben um einen eigenen vNIC Treiber der die notwendige Funktion bereitstellt :S
18.09.2009
The_Holy_One 393 1 6

Stelle deine .net-Frage jetzt!