当前位置:文档之家› 试谈简单的网络嗅探器

试谈简单的网络嗅探器

成都信息工程学院课程设计报告简单的网络嗅探器姓名:纪红专业:信息安全班级:信安084班提交日期:2011-12-13简单的网络嗅探器摘要计算机网络嗅探器是能够窃听计算机程序在网络上发送和接收到的数据,程序实现了对抓取到的本机在网络中的通信数据的协议类型、源地址、目的地址、端口和数据包的大小加以简单的分析,改程序应用C#语言编写,实现了一个简单的网络嗅探功能。

其中一个窗体显示主页面,另一个窗体显示详细信息关键词:网络嗅探器;发送和同意到的数据;协议类型;源地址;目地地址;端口和数据包;分析;C#言语目录论文总页数:9页1 引言1.1 课题背景随着社会信息化的不断深入,计算机啊网络差不多渗入到社会的每一个角落,人们已无时无刻离不开网络。

专门多人经常上网购物,学习,玩游戏,然而网络上的一些不良信息专门可能阻碍到互联网用户尤其是青青年的身心健康。

基于以上的现实问题,我开发了这款网络嗅探器。

能够用来实现对计算机程序在网络上发送和接收到的数据的分析。

1.2 研究现状网络嗅探器不管是在网络安全依旧在黑客攻击方面扮演了专门重要的角色。

通过使用网络嗅探器能够把网卡设置于混杂模式,并能够对网络上传输的数据包的捕获和分析。

此分析结果可供网络安全分析之用,但如为黑客所利用也能够为其发动进一步的攻击提供有价值的信息。

可见,嗅探器实际上是一把双刃剑。

尽管网络嗅探器技术被黑客所利用后会对网络构成一定的威胁,但嗅探器本身的危害并不是专门大,要紧是用来为其他黑客软件提供网络情报,真正的攻击要紧是由其它黑客软件来完成的。

而在网络安全方面,网络嗅探手段能够有效地探测在网络上传输的数据包信息,通过对这些信息的分析利用有助于网络安全的维护。

1.3 本课题研究的意义当我们处理自身网络问题的时候,一个信息包嗅探器向我们展示出正在网络上进行的一切活动。

因此,借助一定的知识,我们就能够确定问题的根源所在。

但必须记住的是,网络嗅探器并可不能告诉你问题究竟是什么,而只会告诉你究竟发生了什么。

对网络嗅探器的研究我加深了对通信协议的理解,网络数据结构的理解。

对网络嗅探器的深入研究更重要的是能够让我们的互联网世界更安全、信息更健康。

1.4 本课题的研究方法嗅探侦听要紧有两种途径,一种是将侦听工具软件放到网络连接的设备或者放到能够操纵网络连接设备的电脑上,(比如网关服务器,路由器)——因此要实现如此的效果可能也需要通过其他黑客技术来实现:比如通过木马方式将嗅探器发给某个网络治理员,使其不自觉的为攻击者进行了安装。

另外一种是针对不安全的局域网(采纳交换hub实现),放到个人电脑上就能够实现对整个局域网的侦听,那个地点的原理是如此的:共享hub获得一个子网内需要接收的数据时,并不是直接发送到指定主机,而是通过广播方式发送到每个电脑,关于处于同意者地位的电脑就会处理该数据,而其他非同意者的电脑就会过滤这些数据,这些操作与电脑操作者无关,是系统自动完成的,然而电脑操作者假如有意的话,他是能够将那些原本不属于他的数据打开!2系统设计2.1 程序实现的功能该程序实现了抓取本机在网络通信数据并加以简单的分析的功能,实现了一个简单的网络嗅探器。

其中有一个主页面,另一个详细显示包信息的页面。

2.2 要紧软件需求本程序使用Visual Studio 2010开发平台,使用C#语言编写,编译成功后的可执行文件需要在装有Visual Studio 2010的平台上才能运行。

测试平台:装有Visual Studio 2010的Windows XP系统使用软件:Visual Studio 20102.3功能模块与系统结构(1)获得计算机的IP地址(2)开始监听,获得数据包的协议类型、源端口、目地端口和大小(3)停止监听,程序将暂停运行(4)清空列表,显示列表被清空(5)关心,弹出关心对话框,显示作者信息(6)详细信息,双击列表中的任意行,显示数据包的详细信息3 系统功能程序设计3.1功能函数部分1、猎取计算机的IP地址,并以列表的形式显示出来IPAddress[] hosts =Dns.Resolve(Dns.GetHostName()).AddressList;if (hosts.Length == 0)throw new NotSupportedException("This computer does not have non-loopback interfaces installed!");for (int i = 0; i < hosts.Length; i++){MonitorMenuItem.MenuItems.Add(hosts[i].ToString(), new EventHandler(this.OnHostsClick));HostsMenu.MenuItems.Add(hosts[i].ToString(), new EventHandler(this.OnHostsClick));}m_PacketMonitors = newPacketMonitor[HostsMenu.MenuItems.Count];for (int i = 0; i < m_PacketMonitors.Length; i++){m_PacketMonitors[i] = newPacketMonitor(hosts[i]);m_PacketMonitors[i].NewPacket += new NewPacketEventHandler(this.OnNewPacket);}m_Packets = new ArrayList();}2、开始监测,停止监听,清晰列表public void OnToolBarClick(object sender, ToolBarButtonClickEventArgs e) {if (e.Button == StopButton) {for(int i = 0; i < m_PacketMonitors.Length; i++) {m_PacketMonitors[i].Stop();HostsMenu.MenuItems[i].Checked = false;MonitorMenuItem.MenuItems[i].Checked = false;}StatusBar.Text = "停ª¡ê止1监¨¤测a";} else if (e.Button == StartButton) {for(int i = 0; i < m_PacketMonitors.Length; i++) {try {m_PacketMonitors[i].Start();} catch (Exception ex) {MessageBox.Show(this, "界?面?出?现?一°?个?错䨪误¨®" + m_PacketMonitors[i].IP.ToString() + "\r\n\r\n[" + ex.Message + "]", " Packet Monitor", MessageBoxButtons.OK, MessageBoxIcon.Error);}HostsMenu.MenuItems[i].Checked = true;MonitorMenuItem.MenuItems[i].Checked = true;}StatusBar.Text = "检¨¬测a所¨´有®D端?口¨²";} else if (e.Button == ClearButton) {PacketList.Items.Clear();m_Packets.Clear();StatusBar.Text = "清?空?列¢D表À¨ª";} else if (e.Button == AboutButton) {AboutForm af = new AboutForm();af.ShowDialog(this);}3、把猎取到的字节流转换成字符public string ToString(bool raw) {StringBuilder sb = newStringBuilder(Raw.Length);if (raw) {for(int i = 0; i < Raw.Length; i++) {if (Raw[i] > 31)sb.Append((char)Raw[i]);elsesb.Append(".");}} else {string rawString = this.ToString(true);for(int i = 0; i < Raw.Length; i += 16) {for(int j = i; j < Raw.Length && j < i + 16; j++) {sb.Append(Raw[j].ToString("X2") + " ");}if (rawString.Length < i + 16) {sb.Append(' ', ((16 - (rawString.Length % 16)) % 16) * 3);sb.Append(" "+ rawString.Substring(i) + "\r\n");} else {sb.Append(" " + rawString.Substring(i, 16) + "\r\n");}。

相关主题