千家信息网

Forerunner怎么使用

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容主要讲解"Forerunner怎么使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Forerunner怎么使用"吧!ForerunnerFore
千家信息网最后更新 2026年10月31日Forerunner怎么使用

本篇内容主要讲解"Forerunner怎么使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Forerunner怎么使用"吧!

Forerunner

Forerunner是一个快速的、轻量级的并且可扩展的网络库,它可以帮助研究人员开发一个以网络为中心的健壮的应用程序,比如说IP扫描器、端口扫描器、客户端以及服务器等等。当前版本的Forerunner,能够支持针对端口和IP地址进行同步或异步扫描,并收集关于目标设备的地理位置信息和终端信息,比如说IP地址是否在线以及设备的物理MAC地址等等。这个库是一个完全面向对象和基于事件的库,这意味着扫描数据都将包含在精心编制的"scan"对象之中,而这些对象旨在处理涵盖从结果到异常的所有数据。

工具依赖

1、.NET Framework v4.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次IsHostAlive("192.168.1.1", 5, 1000);
GetAveragePingResponse获取目标主机的平均ping响应GetAveragePingResponse("192.168.1.1", 5, 1000);
IsPortOpen通过TCP&UDP来ping单个端口IsPortOpen("192.168.1.1", 45000, new TimeSpan(1000), false);

工具下载

广大研究人员可以使用下列命令将项目源码克隆至本地:

git clone https://github.com/jasondrawdy/Forerunner.git

工具使用样例

IP扫描

在网络安全研究过程中,扫描一个网络是一种非常常见的任务了,因此我们应该通过尽可能简单的方法来实现这个目标,以方便未来的安全研究人员去做同样的事情。Forerunner是一个完全面向对象的功能库,因此非常适合所谓"即插即用"的情况。其中,用于IP扫描的对象被称之为IPScanObject,这个对象包含了下列几种参数属性:

Address (String)

IP (IPAddress)

Ping (Long)

Hostname (String)

MAC (String)

isOnline (Bool)

Errors (Exception)

有了对象的概念之后,我们可以尝试创建一个新的对象,并使用它来执行一次扫描任务。最简单的方法就是先创建一个新的Scanner对象,并通过它来访问我们的扫描方法。接下来,创建一个IPScanObject对象,并使用目标IP地址来设置其Scan方法。

同步扫描:

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!")        }    }}

端口扫描

跟IP地址扫描一样,端口扫描可以通过一组预定义的端口来尝试进行端口连接,并检查目标端口是否真正开启。它将尝试通过与每个端口进行连接并发送数据包来进行端口探测。这个功能同样是通过一个自定义对象来实现的,即"Port Knock Scan Object",简称为"PKScanObject"。 PKScanObject对象实际上包含一个PKServiceObjects列表,该列表将保存返回的全部端口数据,该服务对象包含下列参数属性:

IP (String)

Port (Int)

Protocol (PortType)

Status (Bool)

首先,我们需要创建一个Scanner对象,然后创建一个新的PKScanObject对象并使用目标IP来设置PortKnock方法,然后工具将显示扫描结果给我们。

同步扫描:

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);            // 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!")           // Display our results.           foreach (PKServiceObject port in result.Services)           {                Console.WriteLine("[+] IP: " + port.IP + " | " +                                  "Port: " + port.Port.ToString() + " | " +                                  "Protocol: " + port.Protocol.ToString() + " | " +                                  "Status: " + port.Status.ToString());           }           // Allow the user to exit at any time.           Console.Read();        }    }}

异步扫描:

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.PortKnockAsyncProgressChanged += new PortKnockAsyncProgressChangedHandler(PortKnockAsyncProgressChanged);            s.PortKnockAsyncComplete += new PortKnockAsyncCompleteHandler(PortKnockAsyncComplete);            // Start a new scan task with our ip.            TaskFactory task = new TaskFactory();            task.StartNew(() => s.PortKnockAsync(ip));            // Allow the user to exit at any time.            Console.Read();        }        static void PortKnockAsyncProgressChanged(object sender, PortKnockAsyncProgressChangedEventArgs e)        {            // Display our progress so we know the ETA.            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)        {            // Tell the user that the port knock was complete.            Console.WriteLine("[+] Port Knock Complete!");            // Check if we resolved an error.            if (e.Result == null)                Console.WriteLine("[X] The port knock did not return any data!");            else            {                // Check if we have any ports recorded.                if (e.Result.Services.Count == 0)                    Console.WriteLine("[!] No ports were open during the knock.");                else                {                    // Display our ports and their details.                    foreach (PKServiceObject port in e.Result.Services)                    {                         Console.WriteLine("[+] IP: " + port.IP + " | " +                                          "Port: " + port.Port.ToString() + " | " +                                          "Protocol: " + port.Protocol.ToString() + " | " +                                          "Status: " + port.Status.ToString());                    }                }            }        }    }}

许可证协议

Forerunner项目的开发和发布遵循MIT开源许可证协议。

到此,相信大家对"Forerunner怎么使用"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

对象 端口 地址 方法 目标 信息 工具 数据 网络 研究 人员 功能 单个 研究人员 程序 同步 尝试 安全 主机 事件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海挚品互联网科技有限公司 伟宏互联网科技 重庆互联网络科技 互联网科技金融 广州宏创互联网科技 西安互联网科技公司 深圳卡尔迅互联网科技有限公司怎么样 互联网科技公司需要的职位 农村开互联网科技讲堂 互联网金融科技公司干啥的 浙江互联网科技研学营 崇明区互联网教育科技诚信经营 黑科技闪耀互联网之光 科技类公司包括互联网吗 迪庆互联网科技招生 互联网金融科技名词解释 梅州GM互联网络科技有限公司 皮皮虾互联网科技有限公司 杭州融税互联网科技有限公司 六子台科技互联网展会 互联网科技企业 广州为想互联网科技有限公司 互联网医疗科技 易互联网科技有限公司 青岛中康互联网医疗科技有限公司 重庆互联网医院沙龙医盟信息科技 昭通互联网科技选哪家 城市宝互联网科技有限公司 互联网科技接地气 绵阳真晨互联网科技有限公司
0