Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Forerunner — Быстрая и расширяемая библиотека для сканирования сетей, поддерживающая многопоточность, проверку ping и сборщики сканирования. | Kitploit
Инструменты/GitHubGitHub/jasondrawdy/forerunner
РазведкаКартирование сетиСканирование портовСбор информацииУтилиты и фреймворки
GitHubjasondrawdy/forerunner

Forerunner

Быстрая и расширяемая библиотека для сканирования сетей, поддерживающая многопоточность, проверку ping и сборщики сканирования.

Репозиторий
3914286 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Forerunner

Библиотека Forerunner представляет собой быструю, легковесную и расширяемую сетевую библиотеку, созданную для помощи в разработке надежных сетевых приложений, таких как: IP-сканеры, port knockers, клиенты, серверы и т.д. В текущем состоянии библиотека Forerunner способна как синхронно, так и асинхронно сканировать и выполнять port knocking IP-адресов для получения информации об устройстве, расположенном по этому адресу, такой как: доступен ли IP в сети, физический MAC-адрес и т.п. Библиотека полностью объектно-ориентирована и основана на событиях, что означает, что данные сканирования содержатся в специально созданных объектах «scan», предназначенных для обработки всех данных — от результатов до исключений.

Требования

  • .NET Framework 4.6.1

Возможности

МетодОписаниеИспользование
ScanСканировать один IP для получения информацииScan("192.168.1.1");
ScanRangeСканировать диапазон IP-адресов для получения информацииScanRange("192.168.1.1", "192.168.1.255")
ScanListСканировать список IP-адресов для получения информацииScanList("192.168.1.1, 192.168.1.2, 192.168.1.3")
PortKnockПроверить каждый порт одного IP-адресаPortKnock("192.168.1.1");
PortKnockRangeПроверить каждый порт в диапазоне IP-адресовPortKnockRange("192.168.1.1", "192.168.1.255");
PortKnockListПроверить каждый порт по списку IP-адресовPortKnockList("192.198.1.1, 192.168.1.2, 192.168.1.3");
IsHostAliveПинговать хост N раз в течение X миллисекундIsHostAlive("192.168.1.1", 5, 1000);
GetAveragePingResponseПолучить среднее время отклика хоста на pingGetAveragePingResponse("192.168.1.1", 5, 1000);
IsPortOpenПроверить отдельные порты через TCP и UDPIsPortOpen("192.168.1.1", 45000, new TimeSpan(1000), false);

Примеры

Сканирование IP

Сканирование сети — обычная задача в нашу цифровую эпоху, поэтому я взял на себя смелость сделать это максимально простым для любого будущего программиста, который пожелает сделать это простым способом. Библиотека Forerunner полностью объектно-ориентирована, что делает её идеальной для ситуаций «подключи и работай»; объект для сканирования IP называется IPScanObject, и он содержит довольно много свойств:

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

Учитывая этот объект, давайте попробуем создать новый объект и выполнить сканирование с его помощью. Есть несколько способов сделать это, однако самый простой способ начать — сначала создать новый объект Scanner, чтобы получить доступ к нашим методам сканирования. Затем создайте IPScanObject и присвойте его методу Scan с IP-адресом, который вы хотите перечислить; например:

Синхронное
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();
        }
    }
}

Другой способ, который является моим предпочтительным методом работы, — создать объект Scanner и подписаться на Обработчики событий, такие как ScanAsyncProgressChanged или ScanAsyncComplete, чтобы иметь полный контроль над моими асинхронными методами; я могу контролировать, как их состояния прогресса влияют на мое приложение и так далее; например:

Асинхронное
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

Я знаю, о чём вы думаете. Port knocking? И да, и нет. Этот термин означает не традиционный port knocking (подключение через заранее заданный набор портов), а скорее просто проверку, какие порты открыты. Это буквально «стук» в каждый порт путём попытки подключиться к каждому порту и отправки данных. Как и при сканировании IP, port knocking использует пользовательский объект, который называется «Port Knock Scan Object» или сокращённо PKScanObject. PKScanObject содержит список PKServiceObject, которые, в свою очередь, хранят данные о портах; сервисный объект содержит следующие свойства:

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

Port knocking выполняется аналогично сканированию IP. Сначала создайте объект Scanner. Затем создайте новый PKScanObject и присвойте его методу PortKnock с выбранным вами IP, после чего отобразите результаты; например:

Синхронное
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);
Скачать инструмент