Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Forerunner — Libreria di scansione di rete veloce ed estensibile con multithreading, ping probing e scan fetchers. | Kitploit
Strumenti/GitHubGitHub/jasondrawdy/forerunner
RicognizioneMappatura della ReteScansione PorteRaccolta InformazioniUtilità e Framework
GitHubjasondrawdy/forerunner

Forerunner

Libreria di scansione di rete veloce ed estensibile con multithreading, ping probing e scan fetchers.

Vedi Repository
3914286 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Forerunner

La libreria Forerunner è una libreria di rete veloce, leggera ed estensibile creata per facilitare lo sviluppo di applicazioni robuste incentrate sulla rete, come: Scanner IP, Port Knockers, Client, Server, ecc. Nello stato attuale, la libreria Forerunner è in grado di scansionare e fare port knocking sia in modo sincrono che asincrono su indirizzi IP per ottenere informazioni sul dispositivo situato a quell'endpoint, come: se l'IP è online, l'indirizzo MAC fisico, ecc. La libreria è completamente orientata agli oggetti e basata su eventi, il che significa che i dati di scansione sono contenuti in oggetti "scan" appositamente progettati per gestire tutti i dati, dai risultati alle eccezioni.

Requisiti

  • .NET Framework 4.6.1

Funzionalità

MetodoDescrizioneUtilizzo
ScanScansiona un singolo IP per ottenere informazioniScan("192.168.1.1");
ScanRangeScansiona un intervallo di IP per ottenere informazioniScanRange("192.168.1.1", "192.168.1.255")
ScanListScansiona una lista di IP per ottenere informazioniScanList("192.168.1.1, 192.168.1.2, 192.168.1.3")
PortKnockPing su ogni porta di un singolo IPPortKnock("192.168.1.1");
PortKnockRangePing su ogni porta in un intervallo di IPPortKnockRange("192.168.1.1", "192.168.1.255");
PortKnockListPing su ogni porta usando una lista di IPPortKnockList("192.198.1.1, 192.168.1.2, 192.168.1.3");
IsHostAlivePinga un host N volte per X millisecondiIsHostAlive("192.168.1.1", 5, 1000);
GetAveragePingResponseOttieni la risposta media del ping per un hostGetAveragePingResponse("192.168.1.1", 5, 1000);
IsPortOpenPinga singole porte via TCP e UDPIsPortOpen("192.168.1.1", 45000, new TimeSpan(1000), false);

Esempi

Scansione IP

Scansionare una rete è un compito comune in questa era digitale e quindi ho preso la libertà di renderlo il più semplice possibile per qualsiasi futuro programmatore che possa desiderare di fare una cosa del genere in modo facile. La libreria Forerunner è completamente orientata agli oggetti, rendendola ideale per situazioni plug and play; l'oggetto per la scansione IP si chiama IPScanObject e contiene in realtà diverse proprietà:

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

Tenendo presente l'oggetto, proviamo a creare un nuovo oggetto ed eseguire una scansione. Ci sono diversi modi per farlo, tuttavia il modo più semplice per iniziare è creare prima un nuovo oggetto Scanner in modo da poter accedere ai nostri metodi di scansione. Successivamente, crea un IPScanObject e impostalo sul metodo Scan con l'IP che desideri enumerare; per esempio:

Sincrono
using System;
using Forerunner; // Remember to import our library.

namespace Example
{
    class Program
    {
        static void Main(string[] args)
        {
            // Our IP we would like to scan.
            string ip = "192.168.1.1";

            // Create a new scanner object.
            Scanner s = new Scanner();

            // Create a new scan object and perform a scan.
            IPScanObject result = s.Scan(ip);

            // Output that we have finished the scan.
            if (result.Errors != null)
                Console.WriteLine("[x] An error occurred during the scan.");
            else
                Console.WriteLine("[+] " + ip + " has been successfully scanned!")

            // Allow the user to exit at any time.
            Console.Read();
        }
    }
}

Un altro modo, che è il mio metodo preferito di funzionamento, è creare un oggetto Scanner e iscriversi ai gestori di eventi (Event Handlers) come ScanAsyncProgressChanged o ScanAsyncComplete, in modo da avere il pieno controllo sui miei metodi asincroni; posso controllare come i loro stati di avanzamento influenzano la mia applicazione e così via; per esempio:

Asincrono
using System;
using System.Threading.Tasks;
using Forerunner; // Remember to import our library.

namespace Example
{
    class Program
    {
        static void Main(string[] args)
        {
            // Our IP we would like to scan.
            string ip = "192.168.1.1";

            // Setup our scanner object.
            Scanner s = new Scanner();
            s.ScanAsyncProgressChanged += new ScanAsyncProgressChangedHandler(ScanAsyncProgressChanged);
            s.ScanAsyncComplete += new ScanAsyncCompleteHandler(ScanAsyncComplete);

            // Start a new scan task with our ip.
            TaskFactory task = new TaskFactory();
            task.StartNew(() => s.ScanAsync(ip));

            // Allow the user to exit at any time.
            Console.Read();
        }

        static void ScanAsyncProgressChanged(object sender, ScanAsyncProgressChangedEventArgs e)
        {
            // Do something here with e.Progress, or you could leave this event
            // unsubscribed so you wouldn't have to do anything.
        }

        static void ScanAsyncComplete(object sender, ScanAsyncCompleteEventArgs e)
        {
           // Do something with the IPScanObject aka e.Result.
            if (e.Result.Errors != null)
                Console.WriteLine("[x] An error occurred during the scan.");
            else
                Console.WriteLine("[+] " + e.Result.IP + " has been successfully scanned!")
        }
    }
}

Port Knocking

So cosa stai pensando. Port knocking? Sì e no. Il termine non significa port knocking nel senso tradizionale di connettersi attraverso un insieme predefinito di porte, ma piuttosto controllare se alcune porte sono effettivamente aperte. È letteralmente "bussare" a una porta in ogni senso della parola, provando a connettersi a ciascuna porta e inviando dati. Proprio come per la scansione IP, il port knocking utilizza un oggetto personalizzato chiamato "Port Knock Scan Object" o PKScanObject in breve. Il PKScanObject contiene in realtà una lista di PKServiceObject che a loro volta contengono i nostri dati sulle porte; l'oggetto servizio contiene le seguenti proprietà:

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

Il port knocking è simile alla scansione IP. Per prima cosa, crea un oggetto Scanner. Successivamente, crea un nuovo PKScanObject e impostalo sul metodo PortKnock con l'IP di tua scelta, poi visualizza i risultati; per esempio:

Sincrono
using System;
using Forerunner; // Remember to import our library.

namespace Example
{
    class Program
    {
        static void Main(string[] args)
        {
            // Our IP we would like to scan.
            string ip = "192.168.1.1";

            // Create a new scanner object.
            Scanner s = new Scanner();

            // Create a new scan object and perform a scan.
            PKScanObject result = s.PortKnock(ip);
Scarica lo strumento