原作者姓名 落叶夏日
文章原始出处 黑客防线(12期)转载请和作者联系原作者姓名 落叶夏日
想必大家对小榕时光等扫描器都非常熟悉了,有没有自己写一个的冲动。最近微软推实施了.NET战略方案,C#是主推语言,你们是否有兴趣用C#来实现对局域网IP地址的扫描,尝试一下自己写的快乐,那么请跟我来。
先介绍一下使用的类:
1.DNS类:在.net中的System.net命名空间下,主要的功能是从 Internet 域名系统 (DNS) 检索关于特定主机的信息。
2.IPHostEntry类:将一个域名系统 (DNS) 主机与一组别名和一组匹配的 IP 地址关联,和DNS类一起使用。
3.IPAddress 类:IP 网络上的地址。
使用的命名空间有:
System.Net 命名空间为当前网络上使用的多种协议提供了简单的编程接口.
System.IO命名空间包含允许在数据流和文件上进行同步和异步读取及写入的类型。
System.Thread 命名空间主要是用来多线程序编程。
程序实现以下几个功能:
1.获取本地主机IP地址
//对Button控件的事件的响应
private void buttion1_click(object sender,System.Event.Args e)
{
IPHostEntry myHost = new IPHostEntry();
Try
{
// Dns.GetHostName()获取本地计算机的主机名
// Dns.GetHostByName()获取指定 DNS 主机名的 DNS 信息
//得到本地主机的DNS信息
myHost = Dns.GetHostByName(Dns.GetHostName());
//显示本地主机名
textBox1.Text = myHost.HostName.ToString();
//显示本地主机的IP地址表
for(int i=0; i<myHost.AddressList.length;i++)
{
richTextBox1.AppendText(“本地主机IP地址à”+myHost.AddressList[i].ToString()+”\r”);
}
catch(Exception error)
{
MessageBox.Show(error.Message);
}
}//private
2.远程查询
private void buttion2_click(object Sender,System.EventArgs e)
{
IPHostEntry myDnsToIP = new IPHostEntry();
//Dns.Resolve 方法: 将 DNS 主机名或以点分隔的四部分表示法格式的 //IP 地址解析为 IPHostEntry实例
myDnsToIP =Dns.Resolve(textBox2.Text.ToString());
//显示此域名的IP地址的列表
for(int i=0;i<myDnsToIPAddressList.Length;i++)
{
rich.TextBox1.AppendText(textBox2.Text+”的IP地址是”+myDnsToIP.AddressList[i].ToString()+”\r”);
}
}
3.实现网段的扫描,确定网络中正在使用的主机数目。这里使用了多线程技术,增加了一个线程,为了防止程序扫描的时间过长,影响程序的响应。不过在.net中由于使用了垃圾收集技术所以对线程的控制也不是很复杂的。
private void button3_click(object sender, System.EventArgs e)
{
//Thread 类: 创建并控制线程
Thread thScan = new thread(new ThreadStrart(ScanTarget));
//Thread.Start 方法:启动线程
thScan.Strart();
}
private void ScanTarget()
{
//构造IP地址的31-8BIT 位,也就是固定的IP地址的前段
// numericUpDown1是定义的System.Windows.Forms.NumericUpDown控件
string strIPAddress=numericUpDown1.Text+”.”+numericUpDown2.Text+”.”+numericUpDown3.Text+”.”;
//开始扫描地址
int nStrat = Int32.Parse(numericUpDown4.Text);
//终止扫描地址
int nEnd =Int32.Parse(numericUpDown5.Text);
//扫描的操作
for(int i=nStrat;i<=nEnd;i++)
{
string strScanIPAdd = strIPAddress +i.ToString();
//转换成IP地址
IPAddress myScanIP = IPAddress.Parse(strScanIPAdd);
try
{
//你可以加入自已的,增强功能
// Dns.GetHostByAddress 方法: 根据 IP 地
//址获取 DNS 主机信息。
IPHostEntry myScanHost =
Dns.GetHostByAddress(myScanIP);
//获取主机的名
string strHostName =myScanHost.HostName.ToString();
richTextBox1.AppendText(strScanIPAdd+”à”+strHostName+”\r”);
}
catch(Exception error)
{
MessageBox.Show(error.Message);
}
}//for
}//private
到此为止一个简单用C#实现扫描器的主要功能就完成了,试一下你可以看到你的网络上的主机,有没有成就感了:),如果有疑问请到 www.vchelp.net论坛的C#或是.NET版面和我讨论,或发信给我 chenweijun_sh@etang.com,当然你也可以和黑防联系。
落叶夏日
2002-07-29
分享到:
相关推荐
【C#实现网段扫描】 在C#中实现网段扫描涉及到网络编程的基本概念和技术,主要是通过使用.NET框架中的System.Net命名空间提供的类。本文将详细介绍如何利用C#进行网络扫描,包括获取本地主机IP地址、远程查询以及...
C#实现网段扫描的源码 本文将介绍如何使用C#语言实现对局域网IP地址的扫描。该扫描器可以检测到网络中正在使用的主机数目,并提供了详细的实现代码和解释。 一、使用的类 在本实现中,我们使用了以下几个类: 1....
通过以上步骤,你可以构建一个基本的C#网段扫描程序。当然,实际应用中还需要考虑更多的因素,比如遵守网络使用政策,避免对网络造成过大的负担,以及可能的网络安全问题。 请注意,尽管C#是实现网段扫描的一种强大...
这个"网段扫描练习_C#网段扫描练习_visualstudio2019_"项目是使用C#编程语言,在Visual Studio 2019开发环境中实现的一个实践案例。通过这个练习,我们可以学习如何利用C#进行网络编程,探测指定IP网段内的活动主机...
C#是一种广泛使用的编程语言,能够方便地实现各种网络操作,包括网段扫描。本篇文章将详细探讨如何使用C#的Ping类来实现这一功能,并结合VS2010开发环境进行实践。 首先,我们需要了解`System.Net.Network...
在本主题"多任务网段扫描练习"中,我们将探讨如何利用多线程技术来提高网段扫描的效率,同时根据扫描到的IP地址解析出对应的主机域名。这涉及到的知识点包括网络编程、多线程处理以及IP与域名的转换。 首先,我们要...
在本实验中,我们将深入探讨如何使用C#语言进行多任务网段扫描。"多任务网段扫描"是指同时对多个IP地址范围进行扫描,以查找活动的主机、开放的端口或其他网络服务。这种技术在网络安全分析、系统管理以及网络故障...
这个实例源码提供了一个C#实现的工具,能够扫描局域网内的所有活跃设备,帮助我们获取到网络中的设备信息。 C#局域网IP扫描涉及的主要知识点包括: 1. **IP地址和子网掩码**:局域网IP扫描首先需要理解IP地址的...
C#网络应用编程第三版(人民邮电出版社)课后上机练习实验 实验二 多任务网段扫描 关键技术是将任务托管给线程池。代码在数据验证部分写得比较麻烦(本来是想拿数据绑定写的,后来放弃了),主要实现功能部分异常...
本项目“C#多任务网段扫描练习”旨在通过编程实践来掌握这一技术,特别是利用C#语言实现多任务并发扫描。下面将详细阐述相关知识点。 1. **C#编程基础**: C#是一种面向对象的编程语言,由微软开发,广泛应用于...
本示例"**C#多任务网段扫描**"着重介绍了如何利用C#编程语言实现对指定IP地址范围内的主机进行多任务扫描。这涉及到网络通信、并发处理以及IP地址验证等多个知识点。 首先,我们来详细讨论IP地址的验证。在描述中...
《IP多任务网段扫描器》是基于C#编程语言设计的一个网络应用示例,它在C#网络编程领域中具有重要实践价值。这个程序的主要功能是对指定的多个网段进行快速扫描,检测并报告网段内的活动IP地址。在这个过程中,我们...
本文档主要介绍了使用C#语言实现ARP扫描局域网主机IP和MAC地址的方法。该方法通过获取本机IP和子网掩码,计算出整个网段的IP范围,然后利用ARP包获取每个IP对应的MAC地址,并使用多线程技术和委托技术来提高程序的...
在C#编程语言中,我们可以利用System.Threading命名空间中的类来实现多线程操作。本项目以"C#多线程端口扫描"为主题,旨在设计一个Windows应用程序,用于探测局域网内特定主机的开放TCP和UDP端口。以下将详细介绍...
【标题】:多线程网段扫描 在计算机网络中,网段扫描是一种常见的网络管理与安全检测技术,用于发现网络上活动的设备。多线程网段扫描是指利用多个线程并行处理来提高扫描速度,使得扫描过程更加高效。这种技术常...
网段扫描通常涉及遍历特定IP地址范围,例如从192.168.1.1到192.168.1.254,然后尝试连接到每个IP地址的特定端口。这可以通过`TcpClient`或`Socket`类实现。使用`ConnectAsync`方法尝试建立连接,并通过查看连接结果...
5. **C#实现网段扫描**:网络扫描是网络安全和管理中的常见任务。使用C#可以编写扫描同一网段内活动设备的程序,涉及Socket编程和IP地址处理。 6. **C#处理鼠标和键盘事件**:事件驱动编程是GUI应用的核心。理解...
总之,C#多线程局域网扫描器是通过利用C#的多线程功能和网络编程API,实现高效且灵活的网络扫描工具。开发者可以根据需求选择合适的扫描模式,同时,对程序进行优化以确保稳定性和性能。通过深入学习这些技术,...
通过分析和学习《C#落雪无痕IP端口扫描器》的源码,开发者不仅可以掌握C#的网络编程技巧,还能了解到如何实现一个实用的网络扫描工具,这对于网络安全分析和系统管理员来说是非常有价值的实践。