Laden...

eEx Net Lab & Network Library

Erstellt von Emiswelt vor 14 Jahren Letzter Beitrag vor 14 Jahren 2.206 Views
Emiswelt Themenstarter:in
32 Beiträge seit 2010
vor 14 Jahren
eEx Net Lab & Network Library

Schönen Tag liebe C#-Community

In den letzten Monaten hat sich im Rahmen eines Schulprojektes durch meine Hand ein etwas größeres C#-Basieres Softwareprojekt entwickelt. Es handelt sich dabei um ein Tool, mit dem sich Netzwerkfunktionen grafisch zusammenstellen lassen. Die Oberfläche ermöglicht es dem Benutzer, verschiedene Komponenten, wie Router, Netzwerkkarten, Geschwindigkeitsmesser und vieles mehr einfach mit der Maus aus dem sich links befindenden Werkzeugkasten auf die Arbeitsfläche in der Mitte zu ziehen und diese dort miteinander zu verbinden oder zu konfigurieren. Auch komplexe Funktionen lassen sich auf einfachste Weise zusammenstellen und verstehen, da sämtlicher, durch das Programm laufender Netzwerktraffic visualisiert wird und auch aufgezeichnet werden kann.

Eins Screenshot der GUI befindet sich im Dateianhang.

**Was für die User diese Community allerdings eher von Intresse sein dürfte sind folgende Fakten:***Das Tool ist Plug-In Fähig *Alle Funktionen des Tools sind in einer eigenen Library gekapselt, die für eigene Software (Allerdings nur nichtkommerziell) verwendet werden darf.

**Die Features dieser Library und des Tools belaufen sich im Moment auf 😗*
*Layer 2 Sniffing und Injection (WinPcap) *Routing (statisch und RIP) *Network Mapping *Proof-of-concept Attacken *Analyse von Protokollen *Geschwindikeitsmessung *NAT *Plug-In Fähigkeit *Laden und Speichern von Versuchen *WAN Emulation *ARP Scanning *Parsing von verschiedenen Protokollen (Ethernet, IP, TCP, UDP, ARP, OSPF, RIP, ICMP, DHCP, DNS) *Vieles mehr!

Das ganze ist natürlich zu 100% objektorientiert und erleichtert Tasks rund um die Netzwerkprogrammierung ungemein. Um ein Beispiel zu bringen, hier der Code für einen einfachen Softwarerouter basierend auf der Network Library:

    public class Program
    {
        static void Main(string[] args)
        {
            //Query all interfaces
            WinPcapInterface[] arWpc = WinPcapIPInterface.GetAllPcapInterfaces();

            //Create handler classes
            Router rRouter = new Router();
            TrafficSplitter tsSplitter = new TrafficSplitter();

            //Start handlers
            rRouter.Start();
            tsSplitter.Start();

            //Let the router forward traffic from the interfaces to the traffic splitter
            rRouter.OutputHandler = tsSplitter;
            //Let the traffic splitter forward received traffic back to the router
            tsSplitter.OutputHandler = rRouter;

            //Create the properties of the routing entry
            IPAddress ipaDestination = IPAddress.Parse("0.0.0.0");
            IPAddress ipaGateway = IPAddress.Parse("192.168.0.1");
            Subnetmask smMask = Subnetmask.Parse("0.0.0.0");
            int iMetric = 10;

            //Create the routing entry
            RoutingEntry rEntry = new RoutingEntry(ipaDestination, ipaGateway, iMetric, smMask, RoutingEntryOwner.UserStatic);

            //Add some event handlers
            rRouter.FrameDropped += new EventHandler(rRouter_FrameDropped);
            rRouter.FrameForwarded += new EventHandler(rRouter_FrameForwarded);
            rRouter.FrameReceived += new EventHandler(rRouter_FrameReceived);
            rRouter.ExceptionThrown += new TrafficHandler.ExceptionEventHandler(rRouter_ExceptionThrown);

            //Create a list for the interfaces
            List<WinPcapIPInterface> wpcInterfaces = new List<WinPcapIPInterface>();

            //Foreach WinPcapInterface of this host
            foreach (WinPcapInterface wpc in arWpc)
            {
                //Create a new interface handler and start it
                WinPcapIPInterface ipInterface = new WinPcapIPInterface(wpc);
                ipInterface.Start();

                //Then add it to the router and to our list
                wpcInterfaces.Add(ipInterface);
                rRouter.AddInterface(ipInterface);
            }

            Console.WriteLine("Loading complete...");

            //Run until 'x' is pressed
            while (Console.ReadKey().Key != ConsoleKey.X) ;

            //Start the cleanup process for all handlers
            rRouter.Cleanup();
            tsSplitter.Cleanup();

            //Start the cleanup process for all interfaces
            foreach (WinPcapIPInterface ipInterface in wpcInterfaces)
            {
                ipInterface.Cleanup();
            }

            //Stop all handlers
            rRouter.Stop();
            tsSplitter.Stop();

            //Stop all interfaces
            foreach (WinPcapIPInterface ipInterface in wpcInterfaces)
            {
                ipInterface.Stop();
            }
        }

        static void rRouter_ExceptionThrown(object sender, ExceptionEventArgs args)
        {
            Console.WriteLine("Router error: " + args.Exception.Message);
        }

        static void rRouter_FrameReceived(object sender, EventArgs e)
        {
            Console.WriteLine("Frame received!");
        }

        static void rRouter_FrameForwarded(object sender, EventArgs e)
        {
            Console.WriteLine("Frame forwarded!");
        }

        static void rRouter_FrameDropped(object sender, EventArgs e)
        {
            Console.WriteLine("Frame dropped!");
        }
    }

Warum das Ganze?

Der einfache Grund, warum ich diese Software und die Library hier bekannt machen will ist, weil es mich wirklich sehr freuen würde, wenn eventuell ein paar Projekte damit entstehen würden. Ich bitte um rege Rückeldung, falls Projekte mit dieser Software erstellt werden beziehungsweise um Kritik und Feedback.

Das Net Lab und die Network Library befinden sich im Moment noch in einer fortlaufenden Entwicklungsphase. Auch, wenn das 1.0 Release relativ stabil ist, ist es dennoch zu erwarten, dass noch einige Features dazukommen, die Dokumentation verbessert (Ja, die ganzen Tipp- und Rechtschreibfehler) und vergrößert wird.

Download

Neugierig geworden? Download gibts hier. Auf dieser Seite gibt es auch zwei Tutorials und weitere Infos.

Die Library, API-Dokumentation und ein Quickstart-Guide auf Deutsch befinden sich im Projektordner bwz. sind über den Startmenüeintrag erreichbar.

Für Fragen stehe ich hier oder via E-Mail gerne zur Verfügung.

mit freundlichen Grüßen, emiswelt

#define struct union[

Emiswelt Themenstarter:in
32 Beiträge seit 2010
vor 14 Jahren

*thread fest anpack*

*push*

Hi

Nachdem doch schon ~180 User auf meinen ersten Beitrag geklickt und auch mein Download schon einige Hits verzeichnen konnte, wollte ich fragen, ob es denn wirklich keine Kommentare zu diesem Projekt gibt?

Feedback? Beschwerden? Anregungen? Wünsche? Lob? Ideen für neue Features? Ideen für Projekte?

Bin für so ziemlich alles dankbar.

lg, emiswelt

#define struct union[