Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Forerunner — Schnelle und erweiterbare Netzwerkscan-Bibliothek mit Multithreading, Ping-Probing und Scan-Fetcher. | Kitploit
Tools/GitHubGitHub/jasondrawdy/forerunner
AufklärungNetzwerkkartierungPort-ScanningInformationsbeschaffungDienstprogramme & Frameworks
GitHubjasondrawdy/forerunner

Forerunner

Schnelle und erweiterbare Netzwerkscan-Bibliothek mit Multithreading, Ping-Probing und Scan-Fetcher.

Repository anzeigen
391416vor 6 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Forerunner

Die Forerunner-Bibliothek ist eine schnelle, leichte und erweiterbare Netzwerkbibliothek, die zur Entwicklung robuster netzwerkzentrierter Anwendungen wie IP-Scanner, Port-Knocker, Clients, Server usw. entwickelt wurde. In ihrem aktuellen Zustand kann die Forerunner-Bibliothek sowohl synchron als auch asynchron IP-Adressen scannen und Port-Knocking durchführen, um Informationen über das Gerät an diesem Endpunkt zu erhalten, z. B. ob die IP online ist, die physische MAC-Adresse usw. Die Bibliothek ist vollständig objektorientiert und ereignisbasiert aufgebaut, was bedeutet, dass Scandaten in speziell entwickelten "Scan"-Objekten enthalten sind, die alle Daten von Ergebnissen bis hin zu Ausnahmen verarbeiten sollen.

Voraussetzungen

  • .NET Framework 4.6.1

Funktionen

MethodeBeschreibungVerwendung
ScanScannt eine einzelne IP nach InformationenScan("192.168.1.1");
ScanRangeScannt einen IP-Bereich nach InformationenScanRange("192.168.1.1", "192.168.1.255")
ScanListScannt eine Liste von IPs nach InformationenScanList("192.168.1.1, 192.168.1.2, 192.168.1.3")
PortKnockPingt jeden Port einer einzelnen IPPortKnock("192.168.1.1");
PortKnockRangePingt jeden Port in einem IP-BereichPortKnockRange("192.168.1.1", "192.168.1.255");
PortKnockListPingt jeden Port unter Verwendung einer Liste von IPsPortKnockList("192.198.1.1, 192.168.1.2, 192.168.1.3");
IsHostAlivePingt einen Host N-mal für X MillisekundenIsHostAlive("192.168.1.1", 5, 1000);
GetAveragePingResponseErmittelt die durchschnittliche Ping-Antwortzeit für einen HostGetAveragePingResponse("192.168.1.1", 5, 1000);
IsPortOpenPingt einzelne Ports über TCP und UDPIsPortOpen("192.168.1.1", 45000, new TimeSpan(1000), false);

Beispiele

IP-Scanning

Das Scannen eines Netzwerks ist eine alltägliche Aufgabe in diesem digitalen Zeitalter, und ich habe mir die Freiheit genommen, dies für jeden zukünftigen Programmierer, der so etwas auf einfache Weise tun möchte, so einfach wie möglich zu gestalten. Die Forerunner-Bibliothek ist vollständig objektorientiert und daher ideal für Plug-and-Play-Situationen; das Objekt für das IP-Scanning heißt IPScanObject und enthält tatsächlich einige Eigenschaften:

  • Address (String)
  • IP (IPAddress)
  • Ping (Long)
  • Hostname (String)
  • MAC (String)
  • isOnline (Bool)
  • Errors (Exception)

Mit diesem Objekt im Hinterkopf wollen wir nun ein neues Objekt erstellen und damit einen Scan durchführen. Es gibt mehrere Möglichkeiten, dies anzugehen, aber der einfachste Weg, um loszulegen, besteht darin, zuerst ein neues Scanner-Objekt zu erstellen, um auf unsere Scan-Methoden zugreifen zu können. Erstellen Sie als Nächstes ein IPScanObject und setzen Sie es auf die Scan-Methode mit der IP, die Sie auflisten möchten; zum Beispiel:

Synchron
root@kitploit:~
using System;
using Forerunner; // Denken Sie daran, unsere Bibliothek zu importieren.

namespace Example
{
    class Program
    {
        static void Main(string[] args)
        {
            // Unsere IP, die wir scannen möchten.
            string ip = "192.168.1.1";

            // Ein neues Scanner-Objekt erstellen.
            Scanner s = new Scanner();

            // Ein neues Scan-Objekt erstellen und einen Scan durchführen.
            IPScanObject result = s.Scan(ip);

            // Ausgabe, dass der Scan abgeschlossen ist.
            if (result.Errors != null)
                Console.WriteLine("[x] Während des Scans ist ein Fehler aufgetreten.");
            else
                Console.WriteLine("[+] " + ip + " wurde erfolgreich gescannt!")

            // Dem Benutzer erlauben, jederzeit zu beenden.
            Console.Read();
        }
    }
}

Eine andere Möglichkeit, die meine bevorzugte Vorgehensweise ist, besteht darin, ein Scanner-Objekt zu erstellen und die Event Handler von Dingen wie ScanAsyncProgressChanged oder ScanAsyncComplete zu abonnieren, sodass ich die volle Kontrolle über meine asynchronen Methoden habe; ich kann steuern, wie sich ihre Fortschrittszustände auf meine Anwendung auswirken usw.; zum Beispiel:

Asynchron
root@kitploit:~
using System;
using System.Threading.Tasks;
using Forerunner; // Denken Sie daran, unsere Bibliothek zu importieren.

namespace Example
{
    class Program
    {
        static void Main(string[] args)
        {
            // Unsere IP, die wir scannen möchten.
            string ip = "192.168.1.1";

            // Unser Scanner-Objekt einrichten.
            Scanner s = new Scanner();
            s.ScanAsyncProgressChanged += new ScanAsyncProgressChangedHandler(ScanAsyncProgressChanged);
            s.ScanAsyncComplete += new ScanAsyncCompleteHandler(ScanAsyncComplete);

            // Eine neue Scan-Aufgabe mit unserer IP starten.
            TaskFactory task = new TaskFactory();
            task.StartNew(() => s.ScanAsync(ip));

            // Dem Benutzer erlauben, jederzeit zu beenden.
            Console.Read();
        }

        static void ScanAsyncProgressChanged(object sender, ScanAsyncProgressChangedEventArgs e)
        {
            // Hier etwas mit e.Progress tun, oder Sie könnten dieses Ereignis
            // abbestellen, sodass Sie nichts tun müssten.
        }

        static void ScanAsyncComplete(object sender, ScanAsyncCompleteEventArgs e)
        {
           // Etwas mit dem IPScanObject, auch bekannt als e.Result, tun.
            if (e.Result.Errors != null)
                Console.WriteLine("[x] Während des Scans ist ein Fehler aufgetreten.");
            else
                Console.WriteLine("[+] " + e.Result.IP + " wurde erfolgreich gescannt!")
        }
    }
}

Port-Knocking

Ich weiß, was Sie denken. Port-Knocking? Ja und nein. Der Begriff bedeutet nicht Port-Knocking im herkömmlichen Sinne des Verbindens über eine vordefinierte Reihe von Ports, sondern vielmehr nur das Überprüfen, ob überhaupt Ports geöffnet sind. Es ist buchstäblich ein "Anklopfen" an einem Port in jeder Hinsicht, indem versucht wird, eine Verbindung zu jedem Port herzustellen und Daten zu senden. Genau wie beim IP-Scanning verwendet das Port-Knocking ein benutzerdefiniertes Objekt, das "Port Knock Scan Object" oder kurz PKScanObject genannt wird. Das PKScanObject enthält tatsächlich eine Liste von PKServiceObjects, die wiederum unsere Portdaten enthalten; das Serviceobjekt enthält die folgenden Eigenschaften:

  • IP (String)
  • Port (Int)
  • Protocol (PortType)
  • Status (Bool)

Das Port-Knocking erfolgt auf ähnliche Weise wie das IP-Scanning. Erstellen Sie zuerst ein Scanner-Objekt. Erstellen Sie als Nächstes ein neues PKScanObject und setzen Sie es auf die PortKnock-Methode mit der IP Ihrer Wahl, und zeigen Sie dann Ihre Ergebnisse an; zum Beispiel:

Synchron
root@kitploit:~
using System;
using Forerunner; // Denken Sie daran, unsere Bibliothek zu importieren.

namespace Example
{
    class Program
    {
        static void Main(string[] args)
        {
            // Unsere IP, die wir scannen möchten.
            string ip = "192.168.1.1";

            // Ein neues Scanner-Objekt erstellen.
            Scanner s = new Scanner();

            // Ein neues Scan-Objekt erstellen und einen Scan durchführen.
            PKScanObject result = s.PortKnock(ip);

            // Ausgabe, dass der Scan abgeschlossen ist.
            if (result.Errors != null)
                Console.WriteLine("[x] Während des Scans ist ein Fehler aufgetreten.");
            else
                Console.WriteLine("[+] " + ip + " wurde erfolgreich gescannt!")

           // Ergebnisse anzeigen.
           foreach (PKServiceObject port in result.Services)
           {
                Console.WriteLine("[+] IP: " + port.IP + " | " +
                                  "Port: " + port.Port.ToString() + " | " +
                                  "Protocol: " + port.Protocol.ToString() + " | " +
                                  "Status: " + port.Status.ToString());
           }

           // Dem Benutzer erlauben, jederzeit zu beenden.
           Console.Read();
        }
    }
}

Abschließend zeige ich Ihnen ein einfaches Beispiel für asynchrones Port-Knocking. Es ist im Wesentlichen dasselbe wie synchrones Port-Knocking, außer dass Sie Ereignisse zu Ihrem Vorteil nutzen können. Sie können Fortschrittsaktualisierungen erhalten, ohne sich um abstürzende Benutzeroberflächen oder gesperrte Systeme sorgen zu müssen; zum Beispiel:

Asynchron
root@kitploit:~
using System;
using System.Threading.Tasks;
using Forerunner; // Denken Sie daran, unsere Bibliothek zu importieren.

namespace Example
{
    class Program
    {
        static void Main(string[] args)
        {
            // Unsere IP, die wir scannen möchten.
            string ip = "192.168.1.1";

            // Unser Scanner-Objekt einrichten.
            Scanner s = new Scanner();
            s.PortKnockAsyncProgressChanged += new PortKnockAsyncProgressChangedHandler(PortKnockAsyncProgressChanged);
            s.PortKnockAsyncComplete += new PortKnockAsyncCompleteHandler(PortKnockAsyncComplete);

            // Eine neue Scan-Aufgabe mit unserer IP starten.
            TaskFactory task = new TaskFactory();
            task.StartNew(() => s.PortKnockAsync(ip));

            // Dem Benutzer erlauben, jederzeit zu beenden.
            Console.Read();
        }

        static void PortKnockAsyncProgressChanged(object sender, PortKnockAsyncProgressChangedEventArgs e)
        {
            // Fortschritt anzeigen, damit wir die voraussichtliche Restzeit kennen.
            if (e.Progress == 99)
            {
                Console.Write(e.Progress.ToString() + "%...");
                Console.WriteLine("100%!");
            }
            else
                Console.Write(e.Progress.ToString() + "%...");
        }

        static void PortKnockAsyncComplete(object sender, PortKnockAsyncCompleteEventArgs e)
        {
            // Dem Benutzer mitteilen, dass das Port-Knocking abgeschlossen ist.
            Console.WriteLine("[+] Port-Knocking abgeschlossen!");

            // Prüfen, ob ein Fehler aufgetreten ist.
            if (e.Result == null)
                Console.WriteLine("[X] Das Port-Knocking hat keine Daten zurückgegeben!");
            else
            {
                // Prüfen, ob Ports aufgezeichnet wurden.
                if (e.Result.Services.Count == 0)
                    Console.WriteLine("[!] Während des Knockings waren keine Ports offen.");
                else
                {
                    // Ports und ihre Details anzeigen.
                    foreach (PKServiceObject port in e.Result.Services)
                    {
                        Console.WriteLine("[+] IP: " + port.IP + " | " +
                                          "Port: " + port.Port.ToString() + " | " +
                                          "Protocol: " + port.Protocol.ToString() + " | " +
                                          "Status: " + port.Status.ToString());
                    }
                }
            }
        }
    }
}

Danksagungen

Icon: monkik
https://www.flaticon.com/authors/monkik

Lizenz

Copyright © ∞ Jason Drawdy

Alle Rechte vorbehalten.

Die MIT-Lizenz (MIT)

Hiermit wird jeder Person, die eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die "Software") erhält, kostenlos die Erlaubnis erteilt, die Software ohne Einschränkung zu nutzen, einschließlich und ohne Einschränkung der Rechte zur Nutzung, Vervielfältigung, Änderung, Zusammenführung, Veröffentlichung, Verteilung, Unterlizenzierung und/oder zum Verkauf von Kopien der Software, und Personen, denen die Software zur Verfügung gestellt wird, dies unter den folgenden Bedingungen zu gestatten:

Der obige Urheberrechtshinweis und dieser Genehmigungshinweis müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein.

DIE SOFTWARE WIRD "WIE BESEHEN" ZUR VERFÜGUNG GESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND DER NICHTVERLETZUNG VON RECHTEN DRITTER. IN KEINEM FALL SIND DIE AUTOREN ODER URHEBERRECHTSINHABER HAFTBAR FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER ANDERE VERPFLICHTUNGEN, OB AUS VERTRAG, UNERLAUBTER HANDLUNG ODER ANDERWEITIG, DIE AUS ODER IM ZUSAMMENHANG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN GESCHÄFTEN MIT DER SOFTWARE ENTSTEHEN.

Sofern nicht in diesem Hinweis enthalten, darf der Name des obigen Urheberrechtsinhabers nicht für Werbung oder zur Förderung des Verkaufs, der Nutzung oder anderer Geschäfte mit dieser Software ohne vorherige schriftliche Genehmigung verwendet werden.

Tool herunterladen