网络嗅探器的设计与实现
网络嗅探器毕业设计
网络嗅探器毕业设计
网络嗅探器毕业设计
在当今数字化时代,网络安全已成为一个重要的议题。随着互联网的普及和技
术的发展,网络安全威胁也日益增加。为了保护网络的安全,许多组织和个人
都在研发各种安全工具。而网络嗅探器作为其中之一,具有重要的作用。本文
将探讨网络嗅探器的毕业设计以及其在网络安全中的应用。
网络嗅探器是一种用于监测和分析网络流量的工具。它可以截获网络数据包,
并对其进行解析和分析。通过网络嗅探器,我们可以了解网络中正在进行的活动,发现潜在的安全威胁,并采取相应的措施进行防御。
在进行网络嗅探器的毕业设计时,首先需要确定设计的目标和功能。网络嗅探
器可以有多种功能,例如实时监测网络流量、检测异常活动、分析网络协议等。根据自己的兴趣和需求,可以选择一个或多个功能进行设计。
其次,需要选择适合的硬件和软件平台。网络嗅探器需要能够截获网络数据包
的硬件设备,例如网卡。同时,还需要选择合适的操作系统和开发工具来实现
网络嗅探器的功能。常见的操作系统有Linux和Windows,开发工具可以选择Python或C/C++等。
设计网络嗅探器时,需要考虑到数据包的捕获和解析。数据包的捕获可以通过
使用网络监听模式或者混杂模式来实现。在数据包的解析方面,可以使用现有
的网络协议解析库,例如libpcap或者WinPcap。这些库可以帮助我们解析常
见的网络协议,如TCP、UDP和HTTP等。
在设计网络嗅探器的功能时,可以考虑以下几个方面:
1. 实时监测网络流量:网络嗅探器可以实时显示网络中的数据包流量,包括源
IP地址、目标IP地址、协议类型等信息。通过监测网络流量,我们可以及时发现异常活动,如大量的数据包传输或者未经授权的访问。
基于C#的网络嗅探器设计与实现【开题报告】
毕业设计开题报告
计算机科学与技术
基于C#的网络嗅探器设计与实现
一、选题的背景、意义
1.历史背景
网络嗅探器,它与当前的网络生活有很大的关系,一些网络管理员普遍采用它,也有很多黑客通过使用它来获得他们想要的信息资料。与电话线路不同,计算机网络是共享通信通道的,这就意味着计算机能够接收到发给其他计算机的信息。捕获在网络中传输的数据信息就称为“窃听” [3]。
在内部网上,黑客想要迅速获得大量的账号,最有效的手段是使用嗅探程序。这种方法要求运行嗅探器程序的主机和被监听的主机必须在同一个以太网段上。以太网窃听则是对以太网设备上传送的数据包进行侦听,来探测感兴趣的包。如果发现符合条件的包,就把它存下来[1]。网络嗅探器通常运行在路由器或有路由功能的主机,这样就能对大量的数据进行监控。
信息革命正在改造我们的生活,这场革命早在工业化进程中就开始孕育。20世纪50年代前的电报电话等基础通信技术和计算机技术的出现,为20世纪60年代计算机联网实验提供了最初的条件,20世纪70年代半导体微电子技术的飞跃以及数字技术的成熟为计算机网络走出军事的封锁环境、研究所和校园的象牙塔奠定了技术基础。美国著名的未来学家阿尔温深刻地指出:“电脑网络的建立与普及将彻底改变人类的生存及生活模式,而控制与掌握网络的人就是人类未来的主宰,谁掌握了信息,控制了网络,谁就拥有整个世界[2]。”
为了发觉信息革命的巨大潜能,美国率先提出了信息高速公路的构思,提倡实施国家信息基础设施,西方发达国家紧跟着提出全球信息基础设施的提倡。我国也大力推动信息化,普通老百姓在家里上Internet 周游世界已经成为今天的社会现实。人们热情高涨地推动着信息化,期盼着信息化带来的理想成真[6]。
课程设计--基于C#的网络嗅探器的设计和实现
网络与信息安全
课程设计
网络嗅探器的设计和实现
学院:计算机科学与技术
班级:网络工程08-1班
姓名:
学号:
指导老师:
目录
一、什么是嗅探器--------------------------------------------1
二、嗅探器的作用---------------------------------------------1
三、网络嗅探器的原理-----------------------------------------1
四、反嗅探技术----------------------------------------------7
五、网络嗅探器的设计-----------------------------------------8
六、结语---------------------------------------------------14参考书目--------------------------------------------------14
网络嗅探器的实际与实现
一、什么是嗅探器
嗅探器,可以理解为一个安装在计算机上的窃听设备它可以用来窃听计算机在网络上所产生的众多的信息。简单一点解释:一部电话的窃听装置, 可以用来窃听双方通话的内容,而计算机网络嗅探器则可以窃听计算机程序在网络上发送和接收到的数据。
可是,计算机直接所传送的数据,事实上是大量的二进制数据。因此, 一个网络窃听程序必须也使用特定的网络协议来分解嗅探到的数据,嗅探器也就必须能够识别出那个协议对应于这个数据片断,只有这样才能够进行正确的解码。
网络嗅探器的制作课件
在使用网络嗅探器之前,应对其进行合规性审查,确保其符合相关法律法规和行业标准 的要求。
安全防护措施
加密通信
使用网络嗅探器时应采取加密通信措施 ,如使用SSL/TLS等加密协议,以保护数 据的机密性和完整性。
VS
防范恶意软件
网络嗅探器可能会被用于传播恶意软件, 因此在使用时应采取防范措施,如安装杀 毒软件、定期更新操作系统等。
04
网络嗅探器的安全问题
隐私保护
保护个人隐私Байду номын сангаас
在使用网络嗅探器时,必须严格遵守隐私保护原则,不得非法获取或传播他人的个人信息。
避免侵犯他人权益
网络嗅探器可能会截获他人的通信数据,因此在使用时应确保不侵犯他人的合法权益,如隐私权、通 信自由等。
法律与合规性
遵守法律法规
在使用网络嗅探器时,必须遵守相关法律法规,不得从事非法活动,如黑客攻击、窃取 商业机密等。
选择合适的网络嗅探器软件,并进行安装。
编程语言安装
根据所选的编程语言进行安装。
网络配置
配置网络适配器,以便能够捕获网络数据包 。
测试与优化
数据包捕获测试
验证网络嗅探器是否能够成功捕获数据包。
优化配置
根据测试结果,对网络嗅探器的配置进行优化, 以提高数据包捕获的效率和准确性。
ABCD
数据包分析
网络嗅探器的制作PPT课件
m_pack.InsertColumn(1,"IP协议版本",LVCFMT_LEFT,120);
m_pack.InsertColumn(2,"协议",LVCFMT_LEFT,80);
m_pack.InsertColumn(3,"源IP地址",LVCFMT_LEFT,220);
m_pack.InsertColumn(4,"目的IP地址",LVCFMT_LEFT,220);
else
{
m_str="No description available";
m_device.SetItemText(i-1,2,m_str);
}
}
2021
42
按F5调试运行,并单击“网络适配器”你会发 现第一个列表中显示出了当前主机上的网络适 配器的相关信息
2021
ቤተ መጻሕፍቲ ባይዱ43
回到OnButtonGetDevice函数,并添加如下所 示代码:
2021
12
二、界面的简易设计
2021
13
双击左侧的Resource>MySniffer resources> IDD_MYSNIFFER_DIALOG,就可以进入图形化界 面设计
控件表
2021
14
静态文本
网络嗅探器
网络嗅探器
网络嗅探器是一种通过监听互联网上的数据流量来提取
有价值信息的软件工具。它通常用于网络安全、网络监控、网络调试等应用场景。在本文中,我们将介绍网络嗅探器的原理、工作方式、应用场景和安全风险。
一、网络嗅探器的原理
网络嗅探器主要依赖于三个基本原理:ARP协议、IP协
议和TCP协议。ARP是地址解析协议,它将网络层的IP地址
映射到数据链路层的MAC地址。当数据帧从一台计算机去往另一台计算机时,它需要知道目标计算机的MAC地址。ARP就是
解决这个问题的协议。
IP协议是Internet协议的简称,它定义了互联网的地址规范和路由规则。IP协议将数据分成若干个数据包(也称IP 包),每个包包含源IP地址、目标IP地址和数据。当一个数据包到达路由器时,路由器会查找路由表,确定数据包应该向哪条路径发送。
TCP协议是传输控制协议的简称,它定义了可靠的、有序的、基于连接的数据传输。TCP将数据分成若干个数据段(也
称TCP段),每个段包含序号、确认号、数据和控制信息。TCP会对数据的发送和接收进行可靠性检查,确保数据的完整
性和顺序性。
基于以上三个原理,网络嗅探器可以捕获和解析网络数
据包,提取其中的有用信息。它可以截获数据包并提取其中的源IP地址、目标IP地址、源端口号、目标端口号、协议类型、
数据内容等信息。一般而言,网络嗅探器可以支持以下类型的协议:
1. ARP协议
2. IP协议
3. ICMP协议
4. TCP协议
5. UDP协议
6. HTTP协议
7. FTP协议
二、网络嗅探器的工作方式
网络嗅探器通常有两种工作方式:混杂模式和非混杂模式。混杂模式是一种特殊的工作模式,它允许网络嗅探器能够监听所有经过网络接口的数据包,不论它们是否是目标接口的地址。
网络嗅探器的设计与实现
网络攻防技术实验报告
嗅探器的设计与实现
姓名:张梦学号:11054106
一、嗅探器的设计原理
嗅探器作为一种网络通讯程序,也是通过对网卡的编程来实现网络通讯的,对网卡的编程也是使用通常的套接字(socket)方式来进行。但是,通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达的数据包。而网络嗅探器的目的恰恰在于从网卡接收所有经过它的数据包,这些数据包即可以是发给它的也可以是发往别处的。显然,要达到此目的就不能再让网卡按通常的正常模式工作,而必须将其设置为混杂模式。
二、嗅探器的开发基础
1、嗅探器的实现目标
(1)实现网络嗅探器的界面。
(2)实现抓取数据包的功能。
(3)实现暂停抓取数据包功能。
(4)实现清空列表功能。
2、嗅探器的技术支持简介
(1)TCP/IP协议分析
TCP/IP 是供已连接因特网的计算机进行通信的通信协议。
TCP/IP 定义了电子设备(比如计算机)如何连入因特网,以及数据如何在它们之间传输的标准。
TCP/IP是一个四层的分层体系结构。高层为传输控制协议,它负责聚集信息或把文件拆分成更小的包。这些包通过网络传送到接收端的TCP层,接收端的TCP层把包还原为原始文件。低层是网际协议,它处理每个包的地址部分,使这些包正确的到达目的地。网络上的网关计算机根据信息的地址来进行路由选择。即使来自同一文件的分包路由也有可能不同,但最
wifi嗅探技术原理
wifi嗅探技术原理
让我们了解一下什么是wifi嗅探技术。简单来说,wifi嗅探技术是通过监听无线网络中的数据包来获取相关信息的一种技术。这些数据包中包含了发送和接收的信息,包括设备的MAC地址、IP地址、传输的数据内容等。
那么,wifi嗅探技术是如何实现的呢?
我们需要了解一下无线网络是如何工作的。无线网络是通过无线路由器将互联网信号转换成无线信号,并通过无线适配器将信号传输到设备上。当设备连接到无线网络时,会与无线路由器建立一个连接,然后通过该连接进行数据的传输。
在这个过程中,wifi嗅探技术利用了无线网络中的一些特性。它通过监听无线信道上的数据包来获取相关信息。无线信道是指无线网络中用于传输数据的频段,一般有2.4GHz和5GHz两种频段。
接下来,我们来看一下具体的实现步骤。
第一步,嗅探器需要扫描附近的无线网络。它会监听无线信道上的信号,并获取到信号的强度和频率等信息。通过这些信息,嗅探器可以判断出附近的无线网络设备。
第二步,嗅探器会监听无线信道上的数据包。当设备发送或接收数据时,会将数据封装成数据包进行传输。嗅探器可以通过监听数据
包来获取相关信息。它会解析数据包中的头部信息,包括源MAC地址、目的MAC地址、源IP地址、目的IP地址等。
第三步,嗅探器会将获取到的信息进行分析和处理。它可以将数据包中的信息保存到日志文件中,以便后续分析和使用。嗅探器还可以对数据包进行过滤,只保留特定类型的数据包,如DNS请求、HTTP请求等。
第四步,嗅探器可以进行一些高级的操作,如数据包的重组和解密。有些无线网络使用加密算法进行数据的传输,嗅探器可以对加密的数据包进行解密,以获取其中的信息。
实验1-网络嗅探实验
实验1-Sniffer网络嗅探实验
一、实验目的
掌握网络嗅探工具的使用,捕获FTP数据包并进行分析,捕获HTTP数据包并分析,通过实验了解FTP、HTTP等协议明文传输的特性,以建立安全意识。
二、实验原理
Sniffer(网络嗅探器),用于坚挺网络中的数据包,分析网络性能和故障。Sniffer主要用于网络管理和网络维护,系统管理员通过Sniffer可以诊断出通过常规工具难以解决的网络疑难问题,包括计算机之间的异常通信、不同网络协议的通信流量、每个数据包的源地址和目的地址等,它将提供非常详细的信息。
Sniffer是一种常用的收集有用数据方法,这些数据可以是用户的帐号和密码,可以是一些商用机密数据等等。Snifffer可以作为能够捕获网络报文的设备,ISS为Sniffer这样定义:Sniffer是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种工具。
Sniffer的正当用处主要是分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器来作出精确的问题判断。在合理的网络中,sniffer的存在对系统管理员是致关重要的,系统管理员通过sniffer可以诊断出大量的不可见模糊问题,这些问题涉及两台乃至多台计算机之间的异常通讯有些甚至牵涉到各种的协议,借助于sniffer%2C系统管理员可以方便的确定出多少的通讯量属于哪个网络协议、占主要通讯协议的主机是哪一台、大多数通讯目的地是哪台主机、报文发送占用多少时间、或着相互主机的报文传送间隔时间等等,这些信息为管理员判断网络问题、管理网络区域提供了非常宝贵的信息。嗅探器与一般的键盘捕获程序不同。键盘捕获程序捕获在终端上输入的键值,而嗅探器则捕获真实的网络报文。
嗅探技术实验报告
嗅探技术实验报告
引言
嗅探技术是计算机网络安全领域中的一项重要技术,主要用于监测和分析网络流量中的数据包内容。通过嗅探技术,网络管理员可以了解和监控网络中发生的数据交互过程,识别潜在的网络攻击或异常行为。本实验旨在介绍嗅探技术的基本原理和实际应用,以及常见的嗅探工具和嗅探技术。
一、嗅探技术原理
嗅探技术利用网络接口处的网卡(NIC)来嗅探网络流量,通过监听网卡上的传入和传出数据包,抓取数据包中的信息并进行分析。这些信息可以用于网络流量分析、入侵检测和网络性能评估等。
嗅探技术的原理包括以下几个方面:
1. 网络流量采集:嗅探技术通过监听网络接口处的数据包,将数据包抓取到内存中进行分析。一般情况下,嗅探技术可以监听整个网络流量,也可以通过设置过滤条件只监听指定的数据包。
2. 数据包分析:嗅探技术对抓取到的数据包进行解析和分析,提取出其中的关键信息,如源IP地址、目标IP地址、传输协议、端口号等。这些信息可以用于判断网络流量的类型和交互过程。
3. 异常检测:嗅探技术可以通过对网络流量的分析,与已知的网络行为模式进行比对,发现其中的异常行为或潜在的网络攻击。例如,根据特定的网络协议和端口号,可以判断出是否存在端口扫描行为等。
二、嗅探技术应用
嗅探技术在网络安全和网络管理中有着广泛的应用。以下是几个常见的应用场景:
1. 网络流量监测:嗅探技术可以用于监测网络中传输的数据流量,包括数据包的发送方、接收方、传输协议、端口号等信息。通过对流量的监测,网络管理员可以了解网络的状况,及时发现并解决网络故障或异常行为。
嗅探器的实现
通信网络编程实验嗅探器的实现
班级:
学号:
姓名:
一、实验目的
掌握基于Winpcap的协议分析器的设计方法
二、原理介绍
嗅探器程序一般包括内核部分和用户分析部分。
1)内核部分负责从网络中捕获和过滤数据。
2)用户分析部分负责界面、数据转化与处理、格式化、协议分析,如果在内核没有过
滤数据包,在这里还要对数据进行过滤。
一个较为完整的基于网络监听和过滤的程序一般包括以下步骤:
1)数据包捕获
2)数据包过滤与分解
3)数据分析
数据包捕获常用的方法有两种:
1)通过设置硬路由器的监听端口;
2)利用以太网络的广播特性。这种方式必须将网卡设置为混杂(promiscuous)模式。
监听程序工作在网络环境的底三层,可以拦截所有经过该机器的网络上传送的数据,然后将这些数据做相应处理,可以实时分析这些数据的内容,进而分析网络当前状态和整体布局。
基于windows的数据包捕获方案有以下几种:
1)使用原始套接字(row socket)机制。方法简单,但功能有限,只能捕获较高层的
数据包;
2)直接连接调用NDIS库函数,这种方法功能非常强大,但是比较危险,很可能导致系
统崩溃和网络瘫痪;
基于windows的数据包捕获方案有以下几种:
1)使用或者自行编写中间层驱动程序,这是微软公司推荐使用的一种方法,微软提供
的win2000 DDK中也提供了几个这样的驱动程序。在具体的实现方式上可分为用户级和内核级两类。其中内核级主要是TDI捕获过滤驱动程序,NDIS中间层捕获过滤驱动程序,NDIS捕获过滤钩子驱动程序等,它们都是利用网络驱动来实现的;而用户级的包括SPI接口,Windows2000包捕获过滤接口等;
网络嗅探器的制作
双击左侧的Resource>MySniffer resources> IDD_MYSNIFFER_DIALOG,就可以进入图形化界 面设计
控件表
静态文本
要用到的控件简介
编辑框
按钮
列表控件
创建一个静态文本,并右键点击它,选中属性, 将ID修改为“IDC_STATIC_SELECT_DEVICE”, 标题修改为“选择网络适配器序号:”
选中IDC_LIST_PACK,并点击NM_CLICK,再点 击ADD FUNCTION,添加事件响应函数
点击查看>建立类向导>Member Variables,选中列表中的 IDC_EDIT_INFORMATION,并点击ADD VARIABLE,为其添加 Value>CString型变量m_data_information,再用同样的方法为其 余的三个项添加变量
void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data) { }
找到OnButtonStart函数,为“开始”按钮添 加动作响应:
CString message_start;
//初始化相关变量 i=0;
找到OnButtonGetDevice函数,并添加如下所 示代码:
网络嗅探器的设计与实现
计算机网络课程设计报告网络嗅探器的设计与实现
目录
第一章设计目的、任务与要求 (1)
1.1设计的目的 (1)
1.2设计的任务与要求 (1)
第二章系统分析设计 (1)
2.1需求分析 (1)
2.2 原理分析 (1)
2.3网络中数据传送过程以及数据包结构 (2)
2.3.1信息传送过程 (2)
2.3.2 数据包的结构 (2)
第三章系统实现 (4)
3.1 Winpcap技术 (4)
3.2系统主要模块 (7)
3.3 实现界面 (9)
第四章心得体会 (10)
4.1 程序总结 (10)
4.2 个人总结 (10)
参考文献 (10)
附录 (11)
第一章设计目的、任务与要求
1.1设计的目的
编写程序实现捕获网络中的IP数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。
1.2设计的任务与要求
IP数据包的捕获与分析,程序能够自动的收集局域网中的IP数据包,能在程序运行时进行显示。
实现在标准输出和日志文件中写入捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。
程序的具体要求如下:
1)在标准输出和日志文件中写入捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。
2)形成记录结果的日志文件。
第二章系统分析设计
2.1需求分析
在通常情况下,网络通讯的Socket程序只能响应与自己硬件地址想匹配的或者是以广播形式发出的数据桢,对于其他形式的数据桢,比如已到达网络接口但却不是发给此地址的数据桢,网络接口在验证目的MAC并非自身地址之后,将不进行响应,也就是说应用程序无法收取与自己无关的数据包。所以,我们要想实现截获流经网络设备的所有数据包,都要采取一点特别的手段了:将网卡设置为混杂模式,这样以来,该主机的网卡就可以捕获所有流经其网卡的数据包和帧。利用基于Win32的捕获数据包和网络分析的Winpcap可以实现从网卡捕获以及分析IP数据包。
网络嗅探器
网络嗅探器的设计与实现
网络嗅探器的设计与实现
摘要:网络嗅探器是作用在网络上的一种监听程序,是利用计算机网络接口截获送往目的地为其他计算机的数据报文的一种技术。网络嗅探器是来分析网络流量,优化网络的强有力工具。入侵者也可以通过网络嗅探器来截获数据流获取敏感信息。本文阐述网络嗅探器的概念及其技术原理,探讨其在网络管理方面的有效应用,同时,对网络造成的隐患及网络安全和网络管理的防范措施。介绍在windows环境下利用visual c ++开发平台实现一个网络嗅探器程序的方法过程。
关键字:网络嗅探器,流量监控,网络安全,数据报文.
Design and pealization of Network Sniffer Abstarct:The Network sniffer role on the network is in a surveillance program, it is a technique using computer network interfaces to capture data packets which are sent to other computer . Sniffer is also a power tool for analyzing the network traffic and optimizing the network .An attacker can capture the data stream in order to get the secret information by using sniffer. The article explains the concept and technical principles of sniffer and explores its effective applications in network management. Meanwhile, considered its hidden trouble, this study also puts forword some preventive measures of network security and management.And the paper illustrates a concrete developing process for sniffer program bases on visual c ++ 6.0 development platform in windows.
网络嗅探器的设计与实现
目录
一 引言 1.1 基本原理 二 基本原理 2.1概述 2.2作用 2.3分类 2.4可能造成的危害 2.5基本工作原理 2.6工作环境 三需求分析 3.1需求说明 3.2需求分析 四概要设计 4.1编程环境 4.2模块分析 五详细设计 5.1嗅探器的具体实现过 5.2主要数据结构 六嗅探器的实现与测试 6.1实现与测试 6.2实验体会 七附录(主要代码)
在路由器,或有路由器功能的主机上。这样就能对 大量的数据进行监控。sniffer属第二层次的攻 击。通常是攻击者已经进入了目标系统,然后使用 sniffer这种攻击手段,以便得到更多的信息。如 果这样的话就能捕获网络和其他网络进行身份鉴别 的过程 2.5基本工作原理 网络嗅探器利用的是共享式的网络传输介质。 共享即意味着网络中的一台机器可以嗅探到传递给 本网段(冲突域)中的所有机器的报文。网络嗅探器 通过将网卡设置为混杂模式来实现对网络的嗅探。 一个实际的主机系统中,数据的收发是由网卡来完 成的,当网卡接收到传输来的数据包时,网卡内的 单片程序首先解析数据包的目的网卡物理地址,然 后根据网卡驱动程序设置的接收模式判断该不该接 收,认为该接收就产生中断信号通知CPU,认为不 该接收就丢掉数据包,所以不该接收的数据包就被 网卡截断了,上层应用根本就不知道这个过程。 CPU如果得到网卡的中断信号,则根据网卡的驱动 程序设置的网卡中断程序地址调用驱动程序接收数 据,并将接收的数据交给上层协议软件处理。 下面给出一个简单的图示,简单理解数据传送的原 理: _________ /.........\ /..Internet.\
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机网络课程设计
题目网络嗅探器的设计与实现
系 (部)
姓名
学号
指导教师
2015年7月18日
计算机网络课程设计任务书
网络嗅探器的设计与实现
摘要:网络嗅探器是对网络中的数据帧进行捕获的一种被动监听手段,是一种常用的收集有用数据的方法。本设计是关于网络嗅探器的设计与实现,其功能包括实现网络层抓包,对获得包的源和目的地址、端口、协议等进行分析和实现简单的包嗅探器功能。
关键字:网络嗅探器;数据包捕获; 套接字
引言
由于网络技术的发展,计算机网络的应用越来越广泛,其作用也越来越重要。计算机网络安全问题更加严重,网络破坏所造成的损失越来越大。但是由于计算机系统中软硬件的脆弱性和计算机网络的脆弱性以及地理分布的位置、自然环境、自然破坏以及人为因素的影响,不仅增加了信息存储、处理的风险,也给信息传送带来了新的问题。
嗅探器是一种常用的收集有用数据的方法,可以作为网络数据包的设备。嗅探器是通过对网卡的编程来实现网络通讯的,对网卡的编程是使用通常的套接字(socket)方式来进行。通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达的数据包。而网络嗅探器的目的恰恰在于从网卡接收所有经过它的数据包,这些数据包即可以是发给它的也可以是发往别处的。
1 基本概念
1.1 嗅探器
每一个在局域网(LAN)上的工作站都有其硬件地址,这些地址唯一地表示了网络上的机器。当用户发送一个数据包时,这些数据包就会发送到LAN上所有可用的机器。在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的数据包则不予响应。嗅探器工作在网络的底层,在网络上监听数据包来获取敏感信息。从原理上来说,在一个实际的系统中,数据的收发是由网卡来完成的,网卡接收到传输来的数据,其内的单片程序接收数据帧的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就接收后产生中断信号通知CPU,认为不该接收就丢掉不管,所以不该接收的数据网卡就截断了,计算机根本就不知道。对于网卡来说一般有四种接收模式:
a)广播方式:该模式下的网卡能够接收网络中的广播信息。
b)组播方式:设置在该模式下的网卡能够接收组播数据。
c)直接方式:在这种模式下,只有目的网卡才能接收该数据。
网络嗅探器的设计与实现
d)混杂模式:在这种模式下的网卡能够接收一切通过它的数据,而不管该数据是否是传给它的。
嗅探程序是一种利用以太网的特性把网络适配卡(NIC,一般为以太网卡)置为混杂模式状态的工具,一旦网卡设置为这种模式,它就能接收传输在网络上的每一个信息包,而不管该数据是否传给它的。
1.2 相关协议
1.2.1 IP协议
网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。IP层接收由更低层(网络接口层,例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层--TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP 数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。
1.2.2 TCP协议
如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP 层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。
TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。
1.2.3 UDP协议
UDP与TCP位于同一层,但对于数据包的顺序错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP (网落时间协议)和DNS(DNS也使用TCP)。欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。
1.3 数据包
“包”(Packet)是TCP/IP协议通信传输中的数据单位,一般也称“数据包”。TCP/IP协议是工作在OSI模型第三层(网络层)、第四层(传输层)上的,而帧是工作在第二层(数据链路层)。上一层的内容由下一层的内容来传输,所以在局域网中,“包”是包含在“帧”里的。数据包的结构非常复杂,主要由“目的IP地址”、“源IP地址”、“净载数据”等部分构成。正是因为数据包具有这样的结构,安装了TCP/IP协议的计算机之间才能相互通信。我们在使用基于TCP/IP协议的网络时,网络中其实传递的就是数据包。比如说当你上网时打开某个网页,这个简单的动作,就是你先发送数据包给那个网站,它接收到了之后,根据你发送的数据包的IP地址,返回给你网页的数据包,也就是说,网页的浏览,实际上就是数据包的交换。
2 网络嗅探器的作用
嗅探器是网络的抓包工具,可以对网络中大量数据抓取,从而方便使用者对网络中用户的一些信息进行分析,所以,通常被黑客运用于网络攻击。我们如果也能掌握网络嗅探器的原理和设计,可以将它运用与网络故障检测、网络状况的监视,还可以加强企业信息安全防护。
3 网络嗅探器原理
嗅探器作为一种网络通讯程序,也是通过对网卡的编程来实现网络通讯的,对网卡的编程也是使用通常的套接字(socket)方式来进行。但是,通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达的数据包。而网络嗅探器的目的恰恰在于从网卡接收所有经过它的数据包,这些数据包即可以是发给它的也可以是发往别处的。显然,要达到此目的就不能再让网卡按通常的正常模式工作,而必须将其设置为混杂模式。
具体到编程实现上,这种对网卡混杂模式的设置是通过原始套接字(raw socket)来实现的,这也有别于通常经常使用的数据流套接字和数据报套接字。在创建了原始套接字后,需要通过setsockopt()函数来设置IP头操作选项,然后再通过bind()函数将原始套接字绑定到本地网卡。为了让原始套接字能接受所有的数据,还需要通过ioctlsocket()来进行设置,而且还可以指定是否亲自处理IP头。至此,实际就可以开始对网络数据包进行嗅探了,对数据包的获取仍象流式套接字或数据报套接字那样通过recv()函数来完成。但是与其他两种套接字不同的是,原始套接字此时捕获到的数据包并不仅仅是单纯的数据信息,而是包含有 IP头、 TCP头等信息头的最原始的数据信息,这些信息保留了它在网络传输时的原貌。通过对这些在低层传输的原始信息的分析可以得到有关网络的一些信息。由于这些数据经过了网络层和传输层的打包,因此需要根据其附加的帧头对数据包进行分析。下面给出数据包的总体结构:
3.1 UDP数据段头
数据在从应用层到达传输层时,将添加TCP数据段头,或是UDP数据段头。其中UDP数据段头比较简单,由source port(源端口号) 、destination port(目的端口号) 、udp length(udp长度) 、udp checksum(udp校验和)组成。UDP报头结构体为:typedef struct udphdr {
unsigned short sport; /*source port(源端口号)*/
unsigned short dport; /*destination port(目的端口号)*/