收藏 分享(赏)

网络数据包监听与分析工具的模拟实现--毕业论文.doc

上传人:dzzj200808 文档编号:2813026 上传时间:2018-09-28 格式:DOC 页数:37 大小:544.62KB
下载 相关 举报
网络数据包监听与分析工具的模拟实现--毕业论文.doc_第1页
第1页 / 共37页
网络数据包监听与分析工具的模拟实现--毕业论文.doc_第2页
第2页 / 共37页
网络数据包监听与分析工具的模拟实现--毕业论文.doc_第3页
第3页 / 共37页
网络数据包监听与分析工具的模拟实现--毕业论文.doc_第4页
第4页 / 共37页
网络数据包监听与分析工具的模拟实现--毕业论文.doc_第5页
第5页 / 共37页
点击查看更多>>
资源描述

1、毕业设计网络数据包监听与分析工具的模拟实现大学年 6 月毕业设计网络数据包监听与分析工具的模拟实现学 生:指导教师:专 业:计算机科学与技术所在单位:计算机科学与工程学院答辩日期: 年 6 月 19 日 大学毕业设计( 论文)- I -摘 要如今,网络已经渗透到了生活的方方面面,购物、旅行、医疗等等都在网络的支撑下变的更加便捷。网络的发展有目共睹,但是网络的效率和安全问题也不容忽视。网络的兴盛,也使得很多不法分子为了利益方面的追求而破坏网络规则,通过网络来窃取用户信息,甚至造成财产损失,这就需要网络监听工具。本文实现了基于数据包的监听系统,该系统可以对数据包进行捕获,通过设置硬路由器的监听端口

2、,利用以太网络的广播特性,拦截所有经过该机器的网络上传送的数据。数据包过滤采用 TCP/IP 协议来筛选数据,并根据端口号来选择特定数据包分析主要用来对过滤之后得到的数据进行分析。该系统能进行TCP,UDP,HTTP 协议分析使用 VC+作为开发工具。系统利用 Winsock 钩子截获 Winsock 调用,从而拦截 TCP/IP 数据包,再利用 TCP/IP 协议的封包结构分析所截获的数据,提取需要的数据对其进行控管规则的检查认证,从而确定Socket 连接是否允许通过。通过将网卡设置为混合模式来实现数据包的捕获,在捕获数据包后,利用TCP/IP 协议的详细设计对抓到的数据包进行分析。本设计

3、还提供了过滤,和把数据包存入数据库功能,使得本设计的使用范围和可依赖度极大的提高。工具使用 VC6.0 进行开发,通过 MFC 设计界面,总体功能完善,外观简洁大方。当捕获到数据包后,对数据进行分析,可以使每一项清晰的显示在界面中。关键词 数据包捕获;数据包监听; Winsock大学毕业设计( 论文)- -AbstractToday,the Internet has penetrated into every aspect of ourlife,our life in the big and small need notwork participation,shopping,travel,he

4、alth and so on in network support becomes more convenient. Network development is obvious to people,but the efficiency and the security problem of neteork can not be ignored.With the further development of network more applications will need the support of network,the application scope will be more

5、widely,which requires more rapid and efficient network.The rise of the network,also makes a lot of lawless people in order to benefiit pursuit and destruction of network rules,to steal the user information through the Internet,and even cause the user propertty loss.In order to build an efficient,fas

6、t,secure network environment requires an efficient paker capture toll.And through the data packet statistics we can know the datatraffic in the network, then we can kown the congestion. This design also provides filtering, rataing disk and other funcitions,the range of use of this design can be grea

7、tly improved andit will bbe more reliable.The design called WinPcap devalipument kit to capture packet, then use the well designed TCP/IP protocol to analyse the packets which we have captrured. This design use the VC6.0 to develop and use the design interface by using MFC.It functions well and have

8、 a simple appearance. After packets captured andanalised, the analysis of data of each packet will be clearly displaryed in the interface.Key words Data packet Capture; Data packet listening; Winsock大学毕业设计( 论文)- -目 录摘 要 .IIABSTRACT .II第 1 章 绪论 11.1 选题意义 .11.2 选题来源与目的 .1第 2 章 开发工具简介 32.1 开发环境介绍 .32.1

9、 Access 数据库介绍 32.2 Winsocket 编程技术 .42.3 网络监听工具技术简介 .5第 3 章 监听工具简介 73.1 网络数据包监听与分析工具 .73.2 网络监听工具的工作环境 .73.3 网络监听工具的工作原理 .8第 4 章 系统需求分析概述 114.1 数据库需求分析 .114.1.1 数据库概述 114.2 系统需求分析 .124.3 系统流程 .13第 5 章 网络监听工具系统设计与实现 155.1 总体设计 .155.2 详细设计 .165.2.1 数据包捕获模块 165.2.2 数据包过滤模块 165.2.3 数据包分析模块 175.3 系统实现 .18

10、5.3.1 数据包捕获模块实现 185.3.2 数据包分析模块实现 19第 6 章 系统测试 236.1 系统测试概述 .236.2 系统测试 .246.2.1 系统界面测试 246.2.2 数据包捕获测试 256.2.3 数据包的过滤测试 26总结 28致谢 29大学毕业设计( 论文)- I -参考文献 30大学毕业设计(论文)-1-第 1 章 绪论1.1 选题意义随着科学技术的不断提高,计算机科学日渐成熟。网络监听工具成为一个保证网络信息安全的工具不断被应用,通过使用网络监听工具可以把网卡设置于混杂模式,并可实现对网络上传输的数据包的捕获与分析。可以有效地探测在网络上传输的数据包信息,通过

11、对这些信息的分析利用是有助于网络安全维护的,为此我们很有必要基于网络监听工具原理,对构建网络信息安全系统做以探讨,以利于构建“文明网络 ”、 “绿色网络”,确保上网的信息安全。网络监控就是对网络内到达本地服务器的所有数据包进行截取和分析,掌握当前网络总流量,控制当前网络数据流量,同时可以根据不同的需要对特定端口或特定外部地址进行监视,防止非法入侵,以保障本地网络系统的安全和稳定。它的主要意义在于实现了网络监控。随着内部网络的规模与容量的日渐扩大,保持系统的正常运作将会变得越来越重要。网络监控能使系统及时地发现网络流量异常的现象,使服务器在发现非法入侵后能立即做出反应,来保护自己的服务器不被破坏

12、,以求获得安全性的同时,提高网络性能。网络监控系统可以用来发现并解决网络交流问题,规划网络流量,进行网络优化。该系统能捕获所以通过它的网络流量,并把它们翻译出来进行解码,还可以翻译正在使用的不同协议。1.2 选题来源与目的近年来,随着互联网的迅速普及,网络已经进入了千家万户,网络通信也逐渐成为人们通信的首选方式,海量信息都在网络上大量流通着,给人们的工作、学习、生活带来诸多便利。伴随着网络的发展,也产生了各种各样的问题,其中安全问题尤为突出。了解网络面临的各种威胁,防范和消除这些威胁,实现真正的网络安全已成了网络发展中最重要的事情。为了保障对数据信息的高效、安全传输,利用网络监听技术对网络的使

13、用情况进行监控,从而减少网络的负面作用就显得非常必要。网络数据包监听与分析的合理运用与信息安全防护已越来越受到人们的重视。网络数据包捕获、监听与分析技术是网络安全维护的一个基础技术同时也是网络入侵的核心手段,研究有关数据包捕获和分析技术对保证网络的健康、安全运行是很有意义的,可以弥补传统安全技术的不足。当网络给人们提供便利的同时,网络技术的发展方向似乎都趋向于网络的便大学毕业设计(论文)-2-利性和实用性,因而留下了太多的技术、管理和基础设施的漏洞。课题针对网络数据的监听与分析技术进行相关研究和探讨,有利于网络管理、网络故障排除以及网络入侵检测系统的进一步发展,对于维护整个网络的安全和性能稳定

14、有着重要的作用。 大学毕业设计(论文)-3-第 2 章 开发工具简介2.1 开发环境介绍Visual C+6.0 由 Microsoft 开发 1, 它不仅是一个 C+编译器,而且是一个基于 Windows 操作系统的可视化集成开发环境(integrated development environment,IDE) 。Visual C+6.0 由许多组件组成,包括编辑器、调试器以及程序向导 AppWizard、类向导 Class Wizard 等开发工具。 这些组件通过一个名为 Developer Studio 的组件集成为和谐的开发环境。Microsoft 的主力软件产品。Visual C+

15、是一个功能强大的可视化软件开发工具。自 1993 年 Microsoft 公司推出 Visual C+1.0 后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了 Visual C+.NET(Visual C+7.0),但它的应用有很大的局限性,只适用于 Windows 2000,Windows XP 和 Windows NT4.0。所以实际中,更多的是以 Visual C+6.0 为平台。Visual C+6.0 以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译

16、被修改的代码,而不必重新启动正在调试的程序。其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link) 著称。这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。2.1 Access 数据库介绍Microsoft Office Access 是微软把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理。它是微软 OFFICE 的一个成员,在包括专业版和更高版本的 office 版本里面被单独出售。2012 年 12 月 4 日,最新的微软OfficeAccess2013 在微软 Office2013 里发布,微软 OfficeAccess

17、2010 是前一个版本。MSACCESS 以它自己的格式将数据存储在基于 AccessJet 的数据库引擎里。它还可以直接导入或者链接数据。软件开发人员和数据架构师可以使用MicrosoftAccess 开发应用软件,“ 高级用户”可以使用它来构建软件应用程序。和其他办公应用程序一样,ACCESS 支持 VisualBasic 宏语言,它是一个面向对象的编程语言,可以引用各种对象,包括 DAO(数据访问对象 ),ActiveX 数据对象,以及许多其他的 ActiveX 组件。可视对象用于显示表和报表,他们的方法和属性是在VBA 编程环境下,VBA 代码模块可以声明和调用 Windows 操作系

18、统函数。本程序采用 Visual C+ 6.0 作为开发工具,数据库采用 Access,运行环境为Windows 7/XP。大学毕业设计(论文)-4-Visual C+ 6.0 中的 MFC 用来构造 Win32 应用程序的 C+类库。该库的主要优点是效率高。它减少了大量在建立 Windows 程序时必须编写的代码。同时它还提供了所有一般 C+ 编程的优点 2,例如继承和封装,MFC 是可移植的 3。2.2 Winsocket 编程技术Winsock 是微软公司以 Berkeley Socket 规范为范例,定义的 Windows Socketes 规范 4。这是 Windows 操作系统环境

19、下的套接字网络应用程序编程接口(API) 。利用这套 API,在 Windows 环境下,网络应用程序开发者可以轻松地与 Internet 协议族相连接,显现网络中进程之间的通信。Winsock 2 的传输服务提供者是以动态链接库的形式(DLL )存在的,它是通过 WSPStartup 函数为上层函数提供接口,而其他的传输服务提供者函数则是通过分配表的方式来访问 WS2_32.DLL。传输服务提供者的动态链接库只有在应用程序需要时才由 Ws2_32.dll 来装入内存中的,在不需要时则会被自动卸载。WinsocketAPI 的网络 I/O 函数如表 2-1 所示:表 2-1 Winsocket

20、 API 的网络 I/O 函数函数 功能Send 通过连接的 Socket 传送数据,使用特殊的标志控制 Socket 的行为。Sendto 将数据传送给 Socket 地址结构指定的主机,传送时使用一个简单的报文缓冲区。Recvform 从 Socket 接收数据,选择发送主机的网络地址,传送时使用一个简单的报文缓冲区。函数 描述Gethostbyaddr 根基网络地址获得域名和 IP 地址。Gethostbyname 根据主机名字获得域名和 IP 地址。Gethostname 获得本地主机的域名。Getprotoyname 根据名字获得协议,返回其正式名字和一个表示此协议的数。Getpro

21、tobynameker 根据特定的数获得相应的协议名字。Getseverbyname 获得与服务名字相应的协议端口。大学毕业设计(论文)-5-表 2-2 Winsocket API 的数据库函数2.3 网络监听工具技术简介网络监听工具是一种常用的收集有用数据方法,这些数据可以是用户的帐号和密码,可以是一些商用机密数据等等。网络监听工具可以作为能够捕获网络报文的设备,ISS 为网络监听工具这样定义:网络监听工具是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种工具。网络监听工具的正当用处主要是分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的

22、发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器来作出精确的问题判断。 在合理的网络中,网络监听工具的存在对系统管理员是致关重要的,系统管理员通过网络监听工具可以诊断出大量的不可见模糊问题,这些问题涉及两台乃至多台计算机之间的异常通讯有些甚至牵涉到各种的协议,借助于网络监听工具系统管理员可以方便的确定出多少的通讯量属于哪个网络协议、占主要通讯协议的主机是哪一台、大多数通讯目的地是哪台主机、报文发送占用多少时间、或着相互主机的报文传送间隔时间等等,这些信息为管理员判断网络问题、管理网络区域提供了非常宝贵的信息。以太网网络监听工具是指对以太网设备上传送的数据包进行侦听,发现感兴趣的包

23、。如果发现符合条件的包,就把它存到一个 log 文件中去。通常设置的这些条件是包含字“username”或“password”的包。它的目的是将网络层放到promiscuous 模式,从而能干些事情。Promiscuous 模式是指网络上的所有设备都对总线上传送的数据进行侦听,并不仅仅是它们自己的数据。根据第二章中有关对以太网的工作原理的基本介绍,可以知道:一个设备要向某一目标发送数据时,它是对以太网进行广播的。一个连到以太网总线上的设备在任何时间里都在接受数据。不过只是将属于自己的数据传给该计算机上的应用程序。利用这一点,可以将一台计算机的网络连接设置为接受所有以太网总线上的数据,从而实现网

24、络监听工具。网络监听工具通常运行在路由器,或有路由器功能的主机上。这样就能对大量的数据进行监控。网络监听工具属第二层次的攻击。通常是攻击者已经进入了目标系统,然后使用 Sniffer 这种攻击手段,以便得到更多的信息。网络监听工具除了能得到口令或用户名外,还能得到更多的其他信息,比如一个其他重要的信息,在网上传送的金融信息等等。Sniffer 几乎能得到任何以太网上的传送的数据包。黑客会使用各种方法,获得系统的控制权并留下再次侵入的后门,以保证网络监听工具能够执行。在 Solaris2.x 平台上,网络监听工具程Getseverbyport 根据特定的协议端口获得服务名字。大学毕业设计(论文)

25、-6-序通常被安装在/usr/bin 或/dev 目录下。黑客还会巧妙的修改时间,使得网络监听工具程序看上去是和其它系统程序同时安装的。大多数以太网 Sniffer 程序在后台运行,将结果输出到某个记录文件中。黑客常常会修改 ps 程序,使得系统管理员很难发现运行的 Sniffer 程序。以太网 Sniffer 程序将系统的网络接口设定为混合模式。这样,它就可以监听到所有流经同一以太网网段的数据包,不管它的接受者或发送者是不是运行Sniffer 的主机。程序将用户名、密码和其它黑客感兴趣的数据存入 log 文件。黑客会等待一段时间比如一周后,再回到这里下载记录文件。大学毕业设计(论文)-7-第

26、 3 章 监听工具简介3.1 网络数据包监听与分析工具目前存在许多网络监听工具,其中比较有代表性的几个网络监听工具介绍如下。 1. Network General:Network General 开发了多种产品。最重要的是 Expert Sniffer,它不仅仅可以 sniffing,还能够通过高性能的专门系统发送 /接收数据包。还有一个增强产品 Distrbuted Sniffer System,可以将 UNIX 工作站作为 sniffer 控制台,而将 Sniffer Agents 分布到远程主机上。 2. Misrosofts Net Monitor:对于某些商业站点,可能同时需要运行多

27、种协议如 NetBEUI,IPX/SPX ,TCP/IP,802.3 和 SNA 等。这时很难找到一种sniffer 帮助解决网络问题,因为许多 Sniffer 往往将某些正确的协议数据包当成了错误数据包。Microsoft 的 Net Monitor 可以解决这个难题。它能够正确区分诸如 Netware 控制数据包,NetBios 名字服务广播等独特的数据包。 3. VVinDump:最经典的 Unix 平台上的 tepdump 的 Windows 移植版,和tepdump 几乎完全兼容.采用命令行方式运行。 4. Sniffit:由 Lawrence Berkeley 实验室开发,运行于

28、Solaris 和 Linux 等平台。可以选择源、目标地址或地址集合,还可以选择监听的端口、协议和网络接口等。Tcpdump:最经典的网络监听工具,被大量的 Uni、系统采用。 5. 另外,还有 Iris,Linsniffer,ESniffer,So1Sniffer,Wireshark (Ethereal)等等网络监听工具。3.2 网络监听工具的工作环境网络监听工具就是能够捕获网络报文的设备。网络监听工具的正当用处在于分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用网络监听工具来作出精确的问

29、题判断。网络监听工具在功能和设计方面有很多不同。有些只能分析一种协议,而另一些可能能够分析几百种协议。一般情况下,大多数的网络监听工具至少能够分析下面的协议:1. 标准以太网大学毕业设计(论文)-8-2. TCP/IP3. IPX4. DECNet网络数据包监听工具通常是软硬件的结合。专用的嗅探器价格非常昂贵。另一方面,免费的嗅探器虽然不需要花什么钱,但得不到什么支持。网络数据包监听工具与一般的键盘捕获程序不同。键盘捕获程序捕获在终端上输入的键值,而网络数据包监听工具则捕获真实的网络报文。网络数据包监听工具通过将其置身于网络接口来达到这个目的例如将以太网卡设置成杂收模式。为了理解杂收模式是怎么

30、回事,先解释局域网是怎么工作的。数据在网络上是以很小的称为帧(Frame)的单位传输的帧由好几部分组成,不同的部分执行不同的功能。例如,以太网的前 12 个字节存放的是源和目的的地址,这些位告诉网络:数据的来源和去处。以太网帧的其他部分存放实际的用户数据、TCP/IP 的报文头或 IPX 报文头等。帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上。通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧的到达,然后对其进行存储。就是在这个传输和接收的过程中,嗅探器会造成安全方面的问题。每一个在 LAN 上的工作站都有其硬

31、件地址。这些地址唯一地表示着网络上的机器(这一点于 Internet 地址系统比较相似) 。当用户发送一个报文时,这些报文就会发送到 LAN 上所有可用的机器。在一般情况下,网络上所有的机器都可以“听” 到通过的流量,但对不属于自己的报文则不予响应换句话说,工作站 A 不会捕获属于工作站 B 的数据,而是简单的忽略这些数据。如果某在工作站的网络接口处于杂收模式,那么它就可以捕获网络上所有的报文和帧,如果一个工作站被配置成这样的方式,它包括其软件就是一个嗅探器。3.3 网络监听工具的工作原理在以太网中,所有的通讯都是广播的,也就是说通常在同一个网段的所有网络接口都可以访问在物理媒体上传输的所有数

32、据,而每一个网络接口都有一个唯一的硬件地址,这个硬件地址也就是网卡的 MAC 地址,大多数系统使用 48 比特的地址,这个地址用来表示网络中的每一个设备,一般来说每一块网卡上的MFC 地址都是不同的,每个网卡厂家得到一段地址,然后用这段地址分配给其生产的每个网卡一个地址。在硬件地址和 IP 地址间使用 ARP 和 RARP 协议进行大学毕业设计(论文)-9-相互转换。在正常的情况下,一个网络接口应该只响应这样的两种数据帧: 1. 与自己硬件地址相匹配的数据帧。2. 发向所有机器的广播数据帧。在一个实际的系统中,数据的收发是由网卡来完成的,网卡接收到传输来的数据,网卡内的单片程序接收数据帧的目的

33、 MAC 地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就接收后产生中断信号通知CPU,认为不该接收就丢掉不管,所以不该接收的数据网卡就截断了,计算机根本就不知道。CPU 得到中断信号产生中断,操作系统就根据网卡的驱动程序设置的网卡中断程序地址调用驱动程序接收数据,驱动程序接收数据后放入信号堆栈让操作系统处理。而对于网卡来说一般有四种接收模式:广播方式:该模式下的网卡能够接收网络中的广播信息。组播方式:设置在该模式下的网卡能够接收组播数据。直接方式:在这种模式下,只有目的网卡才能接收该数据。混杂模式:在这种模式下的网卡能够接收一切通过它的数据,而不管该数据是否是传给它

34、的。首先在以太网中是基于广播方式传送数据的,也就是说,所有的物理信号都要经过本地机器;再次,网卡可以置于一种模式叫混杂模式(promiscuous) ,在这种模式下工作的网卡能够接收到一切通过它的数据,而不管实际上数据的目的地址是不是他。这实际上就是 SNIFF 工作的基本原理:让网卡接收一切他所能接收的数据。网络监听工具就是一种能将本地网络客户端状(NC)态设成状态的软件,当nc 处于这种“混杂“方式时,该 nc 具备“广播地址“ ,它对所有遭遇到的每一个帧都产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包。绝大多数的 nc 具备置成 promiscuous5方式的能力。捕

35、获数据包的结构图如图 2-1 所示:图 2-1 捕获数据包的结构图大学毕业设计(论文)-10-可见,网络监听工具工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据,并且通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。值得注意的是:网络监听工具是极其安静的,它是一种消极的安全攻击。大学毕业设计(论文)-11-第 4 章 系统需求分析概述4.1 数据库需求分析4.1.1 数据库概述数据库设计是研制数据库及其应用系统设计。数据库设计通常是在一个通用的 DBMS 支持下进行的,对于一个给定的应用环境,构造最优的数据库模式,使之能够有交际地存储数据, 以及一个确

36、定数据库存储结构和存取方法的物理设计,建立起既能反映现实世界信息和信息联系,又能被某个数据库管理系统所接受,同时能实现系统目标,并有效存取数据的数据库,满足各种用户的需要。数据库是信息系统的核心基础,它将大量的数据按一定的模型组织起来,提供存储、维护、检索数据的功能。只有对数据库进行合理的逻辑设计和有郊的物理设计,才能开发出完善且高效的信息系统,用户才能方便、及时和准确地从数据库中获取所需的信息。数据库在一个系统中占有极其重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。合理的数据库也有利于程序的实现

37、。设计数据库系统时应首先充分了解用户的各个方面的需求,包括现有的以及将来可能增加的需求。用户的需求具体体现在对各种信息的提供、保存、更新和交流,这就要求数据库结构能充分满足各种信息的输出和输入 6。本系统是小型系统,因为需要存储的信息不多,Access 数据库的结构简单,适合小型系统所以本系统采用 Access 作为数据库,可以提高编码速度同时又减少应用程序消耗的存储空间。并且 Access 作为一种文件系统的数据,具有轻巧通用性高的特点,所以在本系统中具有很大的优势。 ,下表来介绍数据库中表结构的字段及其属性,如表 3-1 所示:表 3-1 表结构字段 类型 是否为空协议 char 否源地址

38、 char 否源端口 long 否目的地址 char 否目的端口 long 否大小 long 否数据 char 否大学毕业设计(论文)-12-其中,协议,源地址,目的地址和数据都是 char 类型,源端口,目的端口和数据大小是 long 类型。它们都不能为空。4.2 系统需求分析软件需求分析是指对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析是软件设计、实现测试直至维护的主要基础,良好的需求分析可以避免或尽早提出早期的错误,从而降低软件的开发成本,改进软件的质量。本设计完成的数据包监听与分析系统应该要完成以下的任务:(1) 监听数据,捕获流经本地网络的数据,显示网络协议、数据、

39、网络端口、源地址和目的地址,存储在对应的网络数据库中。(2) 对网络数据库进行操作,得到的信息可以显示在本地数据库里。用户可以对本地数据库的内容进行相应操作。(3) 该系统必须包括具体实施方案以及构建及其使用说明等方面,系统容错性好,可移植性强,易扩展。(4) 软件的核心程序通过在系统的消息队列中加入一个钩子,钩取将要发送到网络中的消息包,通过对该封包的分析,决定将其发送到网络或者丢弃。用户可以设置一些初始数据:如 HTTP、TCP、FTP 。软件的核心程序还可以产生封包监视记录,放行的连接待放行结束后显示给用户,拒绝的连接在遭到拒绝后显示给用户。显示的记录内容包括该网络连接的开始时间、结束时

40、间、协议、进出流量、进出 IP 和端口、应用程序、访问动作以及备注的一些附加信息。大学毕业设计(论文)-13-4.3 系统流程系统流程如图 3-1 所示:图 3-1 系统流程图开始设置网卡捕获数据过滤数据T c p , u d p , h t t p 协议分析分析数据存储结果是否符合过滤规则关闭网卡结束是是否否大学毕业设计(论文)-14-下面对每一步进行简要说明:1. 设置网卡:将网卡设为混杂模式。2. 捕获数据:在得到执行命令后,从网路设备驱动程序处收集数据包。3. 过滤数据:按照设置的过滤规则对捕获的数据进行过滤4. 分析数据:对缓冲区的数据包进行相应的分析,然后输出相关信息。5. 存储结

41、果:将分析得到的信息保存到数据库中。6. 关闭网卡:将网卡关闭。大学毕业设计(论文)-15-第 5 章 网络监听工具系统设计与实现5.1 总体设计整个系统需要完成网络数据包监听和分析工具的模拟实现。它可以被划分为4 个具体的模块,模块图如图 4-1 所示:图 4-1 系统模块图网络监听工具系统数据包捕获 数据包过滤 数据包分析1. 数据捕获模块:用来捕获想要的数据包。在通常情况下,网络通信的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法

42、收取与自己无关的的数据包。如果想实现截获流经网络设备的所有数据包,将网卡设置为混杂模式,这样一来,该主机的网卡就可以捕获到所有流经其网卡的数据包和帧。2. 数据过滤模块:主要用来对数据流进行有选择的控制。数据过滤通常是在数据包传送的过程中允许或阻止它们的通过,要完成过滤,需要设置规则来指定哪些类型的数据被允许通过或者被阻止通过。该系统中主要是允许 IP 数据包通过,阻止非 IP 数据包的通过。3. 协议分析模块:主要用来对过滤之后得到的数据进行分析。该系统能进行TCP,UDP,HTTP 协议分析。大学毕业设计(论文)-16-5.2 详细设计5.2.1 数据包捕获模块通过设置硬件网卡的监听端口,

43、利用以太网络的广播特性,拦截所有经过该机器的网络上传送的数据,实时分析这些数据的内容,分析网络当前状态和整体布局。数据捕获机制包含:1)数据链路提供者接口; 2)SOCK_PACKET 类型套接口;3)数据包过滤器,要实现数据链路层上的数据捕获需要使用驱动程序。数据包捕获方案采用报文 Socket 套接字机制,在创建套接字后,可以对网络数据包进行监听,对数据包的获取可采用数据报套接字,利用接收函数完成。由于应用程序只能接受和自己有关的数据包,和自己无关的数据则直接丢掉。想要监听网络中流经网卡的数据包,则需要将网卡设置为混合模式,这样目的地址不是本机的数据不会被直接丢弃掉,也就给了我们处理和捕获

44、数据包的机会,数据包的捕获正是基于这样的原理实现的。实现中先将网卡设置为混合模式接收所有到达网卡的数据包,然后系统绑定一个 Socket 套接字,并设置为原始流套接字,接收 ip 数据包,即完成了数据包的捕获。数据包模块图如图 4-2 所示:图 4-2 数据包捕获模块图数据包捕获数据监听 数据捕获5.2.2 数据包过滤模块在进行网络数据包捕获时人们往往需要只对一种类型的数据包进行捕获,例如 TCP 包。这样有利于对网络进行详细的分析,也有利于对网络的某一项协议进行详细的分析。在本次设计中,我们通过对 ip 数据包进行解析,分析 ip 数据头中的协议字段,来判读是哪种协议的数据包。在 ip 数据

45、包的表头中,有一个大学毕业设计(论文)-17-协议字段用来描述数据包的类别。就是在 IP 头部表示出三层以上用的是什么协议。 三层以上封装的什么协议,缺省值就置为相应的数字。因此程序中通过设置相应的协议类别来过滤不同的数据包。如果选择了 TCP 协议,则只有当协议号为 6 的数据包才会传到上层去,然后被解析。以此这样既可完成了数据包的过滤操作。数据包过滤模块图如图 4-3 所示:图 4-3 数据包过滤模块图数据包过滤U D P H T T PT C P5.2.3 数据包分析模块数据包的分析是本次设计的关键环节,本次设计中,当捕获到数据包时,获取源 MAC 地址和目的 MAC 地址。然后,在数据

46、链层获取协议类型代码,当数据包在网络层的协议是 IP 协议,进行网络层的分析,获取上层协议类型,当协议类型是 UDP 是,分析应用层协议是否为 DNS 协议。当传输协议类型是 TCP是,分析应用层协议是 HTTP 或 FTP。并根据 ip 头中记录的协议编号来按不同的协议进行解析,将解析后得到的数据显示出来,并将数据存入数据库中。数据包分析模块图如图 4-4 所示:图 4-4 数据包分析模块图大学毕业设计(论文)-18-数据包分析数据链层分析应用层分析网络层分析5.3 系统实现5.3.1 数据包捕获模块实现网络监听工具作为一种网络通讯程序,也是通过对网卡的编程来实现网络通讯的,对网卡的编程也是

47、使用通常的套接字(socket)方式来进行。但是,通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达的数据包。而网络监听工具的目的恰恰在于从网卡接收所有经过它的数据包,这些数据包即可以是发给它的也可以是发往别处的。显然,要达到此目的就不能再让网卡按通常的正常模式工作,而必须将其设置为混杂模式。具体到编程实现上,这种对网卡混杂模式的设置是通过原始套接字(rawsocket)来实现的,这也有别于通常经常使用的数据流套接字和数据报套

48、接字。在创建了原始套接字后,需要通过 setsockopt()函数来设置 IP 头操作选项,然后再通过 bind()函数将原始套接字绑定到本地网卡。为了让原始套接字能接受所有的数据,还需要通过 ioctlsocket()来进行设置,而且还可以指定是否亲自处理 IP 头。至此,实际就可以开始对网络数据包进行监听了,对数据包的获取仍由套接字或数据报套接字那样通过 recv()函数来完成。根据上文的设计思路,不难写出网络监听工具的实现代码,下面就给出一个简单的示例,该示例可以捕获到所有经过本地网卡的数据包,并可从中分析出协议、IP 源地址、IP 目标地址、TCP 源端口号、TCP 目标端口号以及数据

49、包长度等信息。由于前面已经将程序的设计流程讲述的比较清楚了,因此这里就不在赘述了,下面就结合注释对程序的具体是实现进行讲解,同时为程序流程的清晰起见,去掉了错误检查等保护性代码。主要代码实现为:/检查 Winsock 版本号,WSAData 为 WSADATA 结构对象大学毕业设计(论文)-19-WSAStartup(MAKEWORD(2,2),/创建原始套接字sock=socket(AF_INET,SOCK_RAW,IPPROTO_RAW);/设置 IP 头操作选项,其中 flag 设置为 ture,亲自对 IP 头进行处理setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(char*)/获取本机名gethostname(char*)LocalName,sizeof(LocalName)-1);/获取本地 IP 地址pHost=gethostbyname(char*)LocalName);/填充 SOCKADDR_IN 结构addr_in.sin_addr=*(in_addr*)pHost-h_addr_list0;/IPaddr_in.sin_family=AF_INET;addr_in.sin_port=htons(57274);/把原始套接字 sock

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报