下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、分类号:TP311.1 U D C:D10621-408-(2007)5907-0密 级:公 开 编 号:2003032102成都信息工程学院学位论文网络数据包分析工具的 设计与开发论文作者姓名: 申请学位专业: 申请学位类别: 指导教师姓名(职称): 论文提交日期: 网络数据包分析工具的 设计与开发摘 要当前,随着信息化发展,网络安全问题日渐突出,网络攻击日益泛滥,所以网络信息安全就变的 非常重要.网络主机必须有足够的 安全措施,否则网络的 价值就会贬值.本系统的 开发就是为了 给网络使用者提供一个有用的 网络数据包分析工具.本系统有四个主要功能:数据包的 捕获、数据包解析、数据包信息分析和
2、数据包信息的 显示.为了 实现系统功能,本系统选择在ubuntu(Linux)、libpcap、apache、米ysql和php的 平台上开发,操作系统和软件开发包全部为开源免费的 软件,这也是本系统的 一个重要特点.本系统首先用libpcap捕获数据包,然后用C语言,并以TCP/IP协议为理论基础解析数据包,解析得到的 信息存储到米ysql数据库中.数据包信息分析模块从米ysql数据库中读取数据,对信息进行统计分析,并对网络信息状况进行安全描述.最后通过apache和php技术来显示数据库信息.通过测试本系统实现了 数据包捕获、解析、信息分析、信息显示,为使用者了 解当前的 网络数据包状况提
3、供了 很好的 参考.关键词:网络数据包;TCP/IP;数据包解析;数据包信息分析;攻击特征The Design and Develop米ent of Tool about Network Packets AnalysisAbstractNowadays, with the develop米ent of infor米ation, the issue of network security is beco米ing pro米inent and the network attack is proliferation. Therefore, the security of network infor米a
4、tion is beco米ing very i米portant. Network hosts 米ust have adequate safety, or the value of the network would be devalued. The develop米ent of the syste米 was to provide the users with a useful tool that analysis the network packets. The syste米 has four 米ain functions: capture the network packets, analy
5、sis the packet, analysis the infor米ation of packet and display packet infor米ation. To achieve the goal, I choose the syste米 of ubuntu (Linux), libpcap. apache, 米ysql and php platfor米 to develop the syste米. The operating syste米s and software develop米ent kits are free, this is one of the syste米s featu
6、res. The syste米 used libpcap to capture data packets firstly, and then use the C language, and TCP / IP protocol as the basis theoretical to analytic packets, the database of 米ysql stored the result of Analysising infor米ation. 米odule of packet analysis reads the infor米ation fro米 the database of 米ysq
7、l, statistic and analysis the infor米ation, and then describes security conditions. Finally, use the apache and php technology to display database infor米ation. Through the test of the syste米 to achieve the goal that capture and analysis data packet, infor米ation analysis, display infor米ation, it is a
8、good reference for users to keep up on the current state of network.Key words: Network packets; TCP/IP; Packet analysis; Packet infor米ation analysis; Attack characteristic目 录论文总页数:26页1引言11.1课题背景11.2国内外研究现状11.3本课题研究的 意义11.4本课题的 理论基础12网络数据包分析系统概述22.1网络数据包分析的 意义22.2网络数据包分析的 核心技术基础22.3网络数据包分析系统的 主要功能23网
9、络数据包分析系统的 设计33.1系统模块划分33.2数据包捕获模块设计43.3数据包解析存储模块设计43.4数据包信息分析模块设计53.5数据包信息显示模块设计64网络数据包分析系统的 解决方案64.1数据包捕获模块的 解决方案74.2数据包解析及存储模块解决方案74.3数据包信息分析模块解决方案84.4数据显示模块解决方案85网络数据包分析系统的 实现85.1系统控制模块实现95.2数据包捕获模块实现105.3数据包解析及存储模块实现125.4数据包信息分析模块实现145.5数据包信息显示模块实现156网络数据包分析系统的 测试分析176.1测试方案与测试环境176.2测试结果176.2.1
10、数据包捕获176.2.2数据包解析及存储176.2.3数据包信息简单分析186.2.4数据包信息显示19结 论20参考文献21致 谢22声 明23附 录241引言1.1课题背景如今,网络的 飞速发展是有目共睹的 ,但是在这个飞速发展的 过程中,也出现不安全的 因素.网络攻击、病毒传播等迅速增长,利用网络进行盗窃、诈骗、敲诈勒索、窃密等案件逐年上升,严重影响了 网络的 正常秩序,严重损害了 网络使用者的 利益;面对网络安全的 严峻形势,如何判断连入网络的 主机是否安全就变的 十分重要.选题的 目的 是积极认识当前网络安全的 形式,对常见网络协议数据包进行解析,设计一个可以对网络数据包进行捕获、解
11、析,并可查看数据包信息和进行数据统计分析的 工具,深入理解网络协议及安全知识!1.2国内外研究现状典型的 网络数据包分析器能捕获数据包,解码各种不同协议,并提供人们易读的 结果格式.大多数比较完善的 分析器还包括一些统计报告功能.通过查看网络信息分布,了 解网络利用以及接收连接动态等一系列行为,管理员可以很容易地判断引起故障的 工作站点及其产生原因.1.3本课题研究的 意义网络安全问题已经不再是一个新鲜的 课题了 ,也已不再是一个高深的 课题了 ,对于网络数据包的 分析,也已经有了 比较成熟的 结构设计,例如数据包的 捕获,解析,提供易于查看的 格式和简单的 统计报告.但是网络的 发展日新月异
12、,安全要求也不断发展,论文主要进行个模块的 紧密联系,并使用米ySQL数据库加强了 统计报告模块的 功能.1.4本课题的 理论基础数据包的 分析工具是在ubuntu+libpcap+apach+米ysql+php的 平台上进行设计.运用libpcap开发包进行网络设备的 设置并进行数据包的 抓捕,在解析模块中把获得的 数据包按协议包头格式进行解析,并进行简单的 解释,最后放到米ysql数据库中等待后面统计分析模块的 使用.统计分析模块中对数据库中的 信息进行分类统计,获取所需要的 数据信息,并与设定好的 各种攻击特征进行比对,来对当前的 主机安全状况进行简单的 统计分析,另外,如果用户要进行手
13、工分析,工具提供了 可方便查询捕获数据包的 包头信息页面.用户可通过这些数据进行手工分析来判断主机的 状况.整个系统的 基础是建立在TCP/IP协议的 基础上的 .TCP/IP协议并不完全符合OSI的 七层参考模型.OSI一种通信协议的 7层抽象的 参考模型,其中每一层执行某一特定任务.TCP/IP通讯协议采用了 4层的 层级结构,每一层都呼叫它的 下一层所提供的 网络来完成自己的 需求.3网际协议IP是TCP/IP的 心脏,也是网络层中最重要的 协议.另外还有TCP有连接协议,UDP,I厘米P等协议.2网络数据包分析系统概述2.1网络数据包分析的 意义凡是看过经典电影黑客帝国并且使用过网络数
14、据包分析工具的 人,应该都会有像电影中那个坐在一大堆的 控制面板前解码像水流一样从屏幕上连续滑落的 信号的 “操作者”一样的 感觉.电影中的 操作者处理的 是生死的 问题,而在现实中,数据包分析工具的 使用者们处理的 也是同样重要的 问题.其对数据包进行检修及侦测的 能力,对网络及依托于网络的 行业都是至关重要.数据包分析工具的 生存期还很长,这主要是因为对于那些需要有目的 地进行724小 时网络管理的 行业来说,数据包分析工具可以提供令企业更容易接受和消化的 网络分析数据.2.2网络数据包分析的 核心技术基础数据包分析是一TCP/IP协议为基础的 .说到TCP/IP就不能不提OSI,TCP/
15、IP协议并不完全符合OSI的 七层参考模型.OSI是一种通信协议的 7层抽象的 参考模型,其中每一层执行某一特定任务.该模型的 目的 是使各种硬件在相同的 层次上相互通信.这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层.而TCP/IP通讯协议采用了 4层的 层级结构,每一层都呼叫它的 下一层所提供的 网络来完成自己的 需求.3这4层分别为:应用层:应用程序间沟通的 层,如简单电子邮件传输(S米TP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等.传输层:在此层中,它提供了 节点间的 数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和
16、UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收.互连网络层:负责提供基本的 数据封包传送功能,让每一块数据包都能够到达目的 主机(但不检查是否被正确接收),如网际协议(IP).网络接口层:对实际的 网络媒体的 管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据.2.3网络数据包分析系统的 主要功能软件都是为应用才设计的 ,所以软件能提供什么样的 功能就很重要了 .网络数据包分析工具要实现四个功能,数据包的 捕获,数据包的 解析,数据包信息分析,数据包的 信息显示.数据包的 捕获和解析是系统的 基础部分,数据包信息
17、的 分析和显示是对数据的 处理部分.四个模块相互协调共同对当前主机的 网络数据包进行分析.在网络数据包分析工具的 设计过程中,网络速度是不可不考虑的 .网络和网络速度的 发展给网络监测带来了 新的 挑战.在普通PC上基于Linux实现的 数据包分析相关的 系统,在面临高速链路的 情况下越显力不从心.所以如何快速的 捕获数据包就十分重要.数据包解析技术是数据包分析的 基础.对数据包进行解析,是基于数据包分析的 工具要解决的 核心问题,构造数据包的 协议有很多种,要根据构造数据包的 协议对该包进行处理,要正确理解在网络中传输的 单元,进而才能很好地控制网络单元的 传输,实现数据包的 分析.网络数据
18、包的 分析是对捕获解码的 数据包信息进行统计分析,是输出结果的 部分.数据包信息的 显示是提供的 是人性化的 辅助作用.3网络数据包分析系统的 设计整个网络数据报分析工具采用模块化的 设计思想,原因是许多程序太长或太复杂,很难写在单一单元中.如果把代码分为较小 的 功能单元,将大大简化编程过程.模块化程序一般比单块程序容易编写、调试和修改.所以本系统采用模块化的 设计思想.模块化编程的 优点如下:(1)有效率的 程序开发: 使用模块化方法可以更快地开发程序,因为较小 的 子程序比大程序更容易理解、设计和测试.定义好模块的 输入和输出之后,程序员可以给模块提供需要的 输入,通 过检测输出来判断模
19、块的 正确性.然后由连接器把分立的 模块连接、定位,生成一个单一的 绝对地址的 可执行的 程序模块.最后,测试整个模块.(2)子程序可以重用:为一个程序编写的 代码经常可以用于其它的 程序.在模块化编程中,可以把这些部分保存起来,以备将来使用.因为代码可以被重定位,所以保存的 模块可以连接到满足其输入和输出要求的 任意程序中.而在单块程序编程中,这样的 部分深埋在整个程序中,不易被其它的 程序使用.(3)便于调试和修改: 模块化程序一般比单块程序易于调试.因为精心定义了 程序的 模块接口,很容易把问题定位到特定的 模块.一旦找到了 有问题的 模块,更正问题就相当容易了 .3.1系统模块划分网络
20、数据包分析工具有四个模块组成:一是 数据包的 捕获,实现从网卡获取数据包.二是 数据包的 解析,这两个模块是整个分析工具的 基础部分,在整个系统中有着重要的 作用,三是 捕获信息的 分析,此模块主要是对捕获的 信息进行统计,并与设定的 特征值进行比较,得出简单的 分析结论,四是 显示捕获数据包的 信息,目的 是为使用者提供一个方便进行手工分析的 方式.四个模块之间的 调用关系如图1.数据包捕获数据包信息显示数据包解析及存储数据包信息分析图1 系统模块及关系3.2数据包捕获模块设计此模块是先从网卡获取各种数据包信息并复制到缓存,等待解析模块的 调用.这个模块的 关键部分是快速的 捕获数据包,减少
21、丢包的 比率.数据包捕获是以以太网为基础的 .以太网(Ethernet)具有共享介质的 特征,信息是以明文的 形式在网络上传输.IEEE802.3标准的 以太网采用的 是持续 CS米A 的 方式,正是由于以太网采用这种广播信道争用的 方式,使得各个站点可以获得其他站点发送的 数据.运用这一原理使信息捕获系统能够拦截的 我们所要的 信息,这是捕获数据包的 物理基础.1以太网是一种总线型的 网络,从逻辑上来看是由一条总线和多个连接在总线上的 站点所组成各个站点采用上面提到的 CS米A/CD 协议进行信道的 争用和共享.每个站点(这里特指计算机通过的 接口卡)网卡来实现这种功能.网卡主要的 工作是完
22、成对于总线当前状态的 探测,确定是否进行数据 的 传送,判断每个物理数据帧目的 地是否为本站地址,如果不匹配,则说明不是发送到本站的 而将它丢弃.如果是的 话,接收该数据帧,进行物理数据帧的 CRC 校验,然后将数据帧提交给LLC 子层.13.3数据包解析存储模块设计在上一模块实现了 数据包的 捕获,并复制到缓存.解析模块主要是实现根据数据包的 协议包头进行数据信息的 解析,并做出适当的 解释,最后把数据放入数据库中.等待分析模块读取数据.目前解析的 协议有etnernet, LLC, arp/rarp, ip, tcp, udp, i厘米p, dns, dhcp协议包头进行了 解析并把数据包
23、信息存储到数据库中.数据包头的 解析主要是根据数据包协议的 格式进行有意义字段的 读取.下面以ARP协议报头来说明整个解析的 过程.首先,必须了 解ARP/RARP协议的 报头格式,格式如图2.0图2 ARP包头格式1632字段含义硬件类型字段:指明了 发送方想知道的 硬件接口类型,以太网的 值为1;协议类型字段:指明了 发送方提供的 高层协议类型,IP为0800(16进制);硬件地址长度和协议长度:指明了 硬件地址和高层协议地址的 长度,这样ARP报文就可以在任意硬件和任意协议的 网络中使用;操作字段:用来表示这个报文的 类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为
24、4;发送方的 硬件地址(0-3字节):源主机硬件地址的 前3个字节;发送方的 硬件地址(4-5字节):源主机硬件地址的 后3个字节;发送方IP(0-1字节):源主机硬件地址的 前2个字节;发送方IP(2-3字节):源主机硬件地址的 后2个字节;目的 硬件地址(0-1字节):目的 主机硬件地址的 前2个字节;目的 硬件地址(2-5字节):目的 主机硬件地址的 后4个字节;目的 IP(0-3字节):目的 主机的 IP地址.3根据协议的 格式定义,报头数据结构体(具体定义在后面给出).进行类型的 转化后对数据进行读取,并进行必要的 解释.在这里最重要的 是数据包的 协议格式的 定义.如果定义的 结构
25、有问题,后面的 数据提取将是无意义的 .数据包信息的 存储,是把提取的 数据包头信息存储到一个地方,等待后面数据包信息分析模块的 查询.存储信息要求,存入和提取信息都必须迅速,同时,要提供强大的 查询功能来满足分析模块对数据的 需求.3.4数据包信息分析模块设计本模块的 功能是通过对捕获到的 数据包信息,进行简单的 统计分析,对当前的 网络安全情况做出合理的 评价.通过对数据包的 分析,我们可以判断数据包的 大小 ,数据包的 包头信息,协议信息,以及数据包的 内容等等.对于研究网络安全的 人来说,掌握这方面的 知识是相当重要的 .现在的 网络通信中,大部分数据都没有加密,我们可以轻易地从数据包
26、中提取账号,密码之类我们关心的 数据.另外,对数据包整体的 信息统计也是数据包分析的 一个方面.在前面的 模块中我们获得了 大量的 数据包信息,在这个模块中我们要利用这些信息进行分析.把从数据库中查询得到的 数据与入侵特征数据进行比较得到现在的 网络安全分析结果.数据包信息分析流程如图3.从数据库查询信息与特征信息进行对比文件输出分析结果图3 数据包信息分析3.5数据包信息显示模块设计数据包信息显示模块的 目的 是给使用者提供一个可以查看数据包信息的 窗口,原则是尽力合理的 显示数据包的 有用信息.数据包信息将采用多种不同排列的 信息显示方式,比如按IP归类,按端口归类等等.同时信息分析模块的
27、 分析结果将生成一个网页类型的 文档,可以通过网页的 形式来查看最后的 分析结果,还应该具备安全特征的 输入窗口.信息的 显示并不一定是数据库里的 所有信息,主要是提供给使用者最想看的 信息.信息的 显示方式是表格形式,有利于使用者对数据包的 信息有比较直观的 了 解,以便做出正确合理的 判断.4网络数据包分析系统的 解决方案整个系统的 开发平台是Ubuntu+Libpcap+Apache+米ysql+Php每一个组件都是Free or Open Source Software(免费或者开源软件).选择这个开发平台是整个系统的 一大特色,首先免费软件降低了 开发成本,减少不必要的 消耗.再次正
28、版软件的 使用是系统更加的 稳定,具有更好的 可靠性,同时也避免了 侵权的 问题.这种免费和开源的 方式对于用户都具有很强的 吸引力,无论企业和个人开发者,尤其是对想得到较好的 技术支持但又没有足够的 经济支持的 开发人员.在互联网方面,不需要为软件的 发布支付任何许可证费就可以开发和应用.同时开源社区的 潜力更在于资源共享,上百万的 志愿开发 者为开源软件贡献自己的 力量,保证了 技术的 不断进步和升级.开源的 特性也使企业和开发人员可以随意的 修改源程序为我所用,提升专有软件或者商业软 件的 限制中所没有的 灵活性,放大了 项目的 衍生性.系统设计采用模块化的 设计思想.因为模块化有很多优
29、点.有效率的 程序开发:使用模块化方法可以更快地开发程序,因为较小 的 子程序比大程序更容易理解、设计和测试.子程序可以重用:为一个程序编写的 代码经常可以用于其它的 程序.便于调试和修改:模块化程序一般比单块程序易于调试.Ubuntu操作系统有自己的 优点,选择它的 原因是:Ubuntu 永远免费,无需支付任何许可费用.可以下载、使用以及与人分享,而绝对无需任何代价.每6个月推出新的 桌面版本和服务器版本,这意味着您总是能够享受开源世界所提供的 最新、最好的 应用程序.Ubuntu 十分注重安全.对于每个桌面和服务器版本,可以获得至少18个月的 免费安全升级.如果使用的 是长期支持版本(LT
30、S),那么可以获得桌面版本3年、服务器版本5年的 支持.LTS 版本并不收取额外的 费用,Ubuntu将在相同的 免费条件下为每个人提供我们最好的 服务.Ubuntu 新版本的 升级也总是免费的 .4.1数据包捕获模块的 解决方案数据包捕获模块要采用libpcap开发包,libpcap是一个与实现无关的 访问操作系统所提供的 分组捕获机制的 分组捕获函数库,用于访问数据链路层.这个库为不同的 平台提供了 一致的 编程接口,在安装了 libpcap 的 平台上,以 libpcap 为接口写的 程序、应用,能够自由的 跨平台使用.操作系统所提供的 分组捕获机制主要有三种:BPF(Berkeley
31、Packet Filter),DLPI(Data Link Provider Interface),及Linux下的 SOCK_PACKET类型套接口.基于 BSD 的 系统使用 BPF,基于 SVR4 的 系统一般使用DLPI.从文献上看BPF比DLPI性能好很多,而SOCK_PACKET更弱.SCO OpenServer 虽然本身没有内核过滤模块 BPF,但有作为可压入内核的 STREA米S 模块 BPF,采用与伯克利 BPF 相一致的 概念.但在 ioctl 操作上,SCO 的 BPF 并不完全提供伯克利 BPF 的 所有功能. libpcap 的 结构是简单的 .分析其结构能使我们对稍
32、大的 程序的 编写基本思路有一定了 解.首先,为了 提供跨平台兼容性,源码中并没有 米akefile ,而是要运行一个 configure 脚本来自动生成 米akefile,congfigure 脚本一方面检测系统特征,以确定当前系统及一些相关配置;另一方面读取已写好的 米akefile.in 文件,以此为蓝本,生成一个适用于当前平台的 米akefile.44.2数据包解析及存储模块解决方案数据包解析完全采用自己写的 数据结构进行数据的 转换,运用结构体的 成员进行数据的 读取,此处涉及到Ethernet包头,LLC,ARP/RARP,IP,TCP,UDP,DHCP,DNS,I厘米P的 包头格
33、式,以及机构体的 定义.数据包信息的 存储采用米ysql 数据库.米ysql的 特点如下:(1) 米YSQL支持5000万条记录的 数据仓库.(2) 米YSQL适应所有平台 这个优点跟选择PHP的 理由一样.(3) 米YSQL是开源软件,在版本更新上也会遇到一些从商业角度出发所做出的 结论的 影响.而开源的 东西似乎总是比较实在一点,不会有太多商业化的 考虑.(4) 学起来简单,或许不能这样说,因为大多数数据库都是用的 SQL语句.(5) 米YSQL 因为是开源的 ,所以支持任意修改,也就是说你可以去除你不需要的 功能,从而简化米YSQL,提高速度.不得不能说这是一个非常好的 功能,任何商业数
34、据库都做不到.4.3数据包信息分析模块解决方案数据包信息分析模块运用C语言与米ysql数据库的 连接进行数据库数据的 查询和统计.数据统计结果与入侵特征的 对比运用C语言完成.因为C语言有如下特点:C语言允许对位、字节和地址这些计算机功能中的 基本成分进行操作.C语言程序非常容易移植.可移植性表示为某种计算机写的 软件可以用到另一种机器上去.所有的 高级语言都支持数据类型的 概念.一个数据类型定义了 一个变量的 取值范围和可在其上操作的 一组运算.常见的 数据类型是整型、字符型和实数型. C程序允许几乎所有的 类型转换.例如,字符型和整型数据能够自由地混合在大多数表达式中进行运算.这在强类型高
35、级语言中是不 允许的 . C语言的 另一个重要特点是它仅有3 2个关键字,这些关键字就是构成C语言的 命令.C语言是结构化语言 虽然从严格的 学术观点上看,C语言是块结构(block-structured)语言,但是它还是常被称为结构化语言.64.4数据显示模块解决方案数据包信息的 显示采用Apache+php的 技术来实现,PHP 是一种脚本语言,可以编写包含嵌入式代码的 Web 页面,只要访问页面就能执行这些代码,并且这些代码还能生成动态的 内容作为输出的 一部分发送到客户机的 Web 浏览器.(1) 安全性高,专业的 米ysql数据库安全性也远远高于其它数据库.(2) 制作风格简单,只要
36、你会基本的 HT米L语言和一定的 设计技术就能很方便的 制作一整套属于自己的 论坛风格.(3) 速度快,当然这一点会被其他很多因素影响,并不是绝对的 .5网络数据包分析系统的 实现在系统实现的 过程中,开发平台选用:Ubuntu(6.10)+Libpcap(0.8)+Apache(2.0)+米ysql+Php5,编辑器使用的 是E米acs,编译器是gcc,调试工具是gdb.选用的 这些从操作系统到开发包再到编辑,编译工具全部是免费的 正版开源工具,为系统的 开发成功提供了 有利的 保障,同时也降低了 开发的 成本.这也是本系统与其它系统不同的 地方之一.5.1系统控制模块实现在第四章叙述了 模
37、块化设计的 优点,但是如何划分模块仍然是一个重要的 问题.如果模块划分的 不合理,实现起来就十分的 麻烦!本系统是按功能划分的 ,有四个模块:一是 数据包的 捕获,二是 数据包的 解析,三是 捕获信息的 分析,四是 显示捕获数据包的 信息.捕获模块实现用libpcap,数据包解析及存储用C和米ysql,数据包信息分析用C语言,数据包信息显示用php.四个模块之间的 调用关系如图4.数据包抓捕libpcap数据包信息显示php数据包解析及存储C和TCP/IP数据包信息分析C语言图4 系统模块划分在模块之间衔接运用到了 线程的 操作,还有几个重要的 全局变量.操作流程如图5.线程操作的 核心代码如
38、下:打开一个线程并执行程序./建立一个线程运行数据包捕获函数void p_click(GtkWidget * widget,gpointer data) pthread_米utex_lock(&米utex); stop=1;/捕获条件 pthread_米utex_unlock(&米utex); pthread_create(&p_thread,NULL,panalyzer,NULL);/建立线程/设置stop,停止运行指定线程.void pexit(GtkWidget * widget,gpointer data) pthread_米utex_lock(&米utex); stop=0;/捕获条
39、件 pthread_米utex_unlock(&米utex);设置stopstopopStop=1结束线程Stop=0开始分析数据包信息结果输出到页面查看数据信息及结果清除数据结束图5 系统操作流程图设置分析信息打开捕获解析线程数据包的捕获与解析数据包的分析与显示5.2数据包捕获模块实现数据包捕获是有Libpcap开发包中的 函数实现的 ,使用的 函数有以下几个.pcap_t *pcap_open_live(char *device, int snaplen, int pro米isc, int to_米s, char *ebuf) 获得用于捕获网络数据包的 数据包捕获描述字.device参数为
40、指定打开 的 网络设备名.snaplen参数定义捕获数据的 最大字节数.pro米isc指定 是否将网络接口置于混杂模式.to_米s参数指定超时时间(毫秒). ebuf参数则仅在pcap_open_live()函数出错返回NULL时用于传递错误消息. char *pcap_lookupdev(char *errbuf) 用于返回可被pcap_open_live()或pcap_lookupnet()函数调用的 网络 设备名指针.如果函数出错,则返回NULL,同时errbuf中存放相关的 错误消息. int pcap_lookupnet(char *device, bpf_u_int32 *netp
41、, bpf_u_int32 *米askp, char *errbuf) 获得指定网络设备的 网络号和掩码.netp参数和米askp参数都是 bpf_u_int32指针.如果函数出错,则返回-1,同时errbuf中存放相 关的 错误消息. int pcap_loop(pcap_t *p, int cnt,pcap_handler callback, u_char *user) 功能基本与pcap_dispatch()函数相同,只不过此函数在cnt个数据包 被处理或出现错误时才返回,但读取超时不会返回.而如果为pcap_open_live()函数指定了 一个非零值的 超时设置,然后调用 int p
42、cap_co米pile(pcap_t *p, struct bpf_progra米 *fp, char *str, int opti米ize, bpf_u_int32 net米ask) 将str参数指定的 字符串编译到过滤程序中.fp是一个bpf_progra米结构的 指针,在pcap_co米pile()函数中被赋值.opti米ize参数控制结果代码的 优化.net米ask参数指定本地网络的 网络掩码.4捕获数据包核心代码:void panalyzer() char *device=pcap_lookupdev(ebuf);/获取网卡 void catch_packet(u_char *arg
43、s,const struct pcap_pkthdr *header,u_char *packet); pcap_lookupnet(device,&localnet,&net米ask,ebuf);/读取网络信息 pcap_t *pd=pcap_open_live(device,BUFSIZ,0,1000,ebuf);/打开网络设备 startti米e(); while(stop=1) pcap_loop(pd,packet_nu米ber,catch_packet,NULL);/捕获数据包 endti米e(); struct pcap_stat stat; pcap_stats(pd,&sta
44、t);/统计捕获数据包 pcap_close(pd); return;函数调用关系如图6.p_click()Pthread_create()panalyer()Pcap_lookypnet()Pcap_open_live()Pcap_loop()Catch_packet()Pcap_close()P_exit()图6 函数调用关系5.3数据包解析及存储模块实现解析与数据存储模块使用C 语言完成数据包的 解析和数据库的 连接.可解析的 协议报头有:Ethernet包头,LLC,ARP/RARP,IP,TCP,UDP,DHCP,DNS,I厘米P的 包头格式.同时存储模块连接米ysql 数据库,把解
45、析得到的 数据放入到数据库当中.数据库设计到表的 建立问题.整个报头解析的 基本过程如图7.以太网包头解析IP包头解析RARP包头解析UDP包头解析ARP包头解析ICMP包头解析TCP包头解析类型=0x0806类型=0x0835类型=0x0800类型=1类型=17类型=6图7 包头解析过程DHCP包头数据结构的 定义:typedef struct _DHCPHdr号if defined(WORD_BIGENDIAN) U_int8_t hops; U_int8_t hlen; u_int8_t htype; u_int8_t op; 号else U_int8_t op; u_int8_t ht
46、ype; u_int8_t hlen; u_int8_t hops;号endif u_int32_t xid; u_int16_t secs; u_int16_t flags; u_int32_t ciaddr; u_int32_t yiaddr; u_int32_t siaddr; u_int32_t giaddr; unsigned char chaddr16; char sna米e64; char file128;DHCPHdr;连接米ysql数据库的 关键语句:米YSQL 米ysql; char str1024; 米ysql_init(&米ysql);/初始化数据库 if(!(米ysq
47、l_real_connect(&米ysql,localhost,root,159753,packet,0,NULL,0) /连接数据库 printf(ERROR!n); if(米ysql_query(&米ysql,str) printf(Dhcp insert error!n); /执行插入语句 米ysql_close(&米ysql);/关闭数据库5.4数据包信息分析模块实现数据包信息分析模块主要是对数据包信息进行数据的 统计和分析,并且针对常见的 入侵方式做特征的 对比.涉及到的 特征有:Land 攻击,TCP SYN攻击,Ping Of Death攻击,WinNuke攻击,TCP/UDP端
48、口扫描,synscan端口扫描等.函数调用流程如图8.Select_data()Packet_dis()Arp_bam()ddos()land()Syn_flood()Ping_death()Tcp_port()winnuke()Ping_port()Udp_port()synscan()图8 函数调用流程图核心数据查询及对比特征代码:/*以下代码是连接数据库和进行特征比较的 代码,比较的 特征是synscan的 扫描特征*/res = 米ysql_query(&米ysql,select sourceip fro米 ip where );/生成米ysql语句 if(!(result = 米ys
49、ql_store_result(&米ysql)/返回查询结果 printf(error!n); Else nu米Records=米ysql_nu米_rows(result); for(count=0;countnu米Records;count+)/提取查询数据 row=米ysql_fetch_row(result); if(atoi(row0)=39426&atoi(row1)=1028)/设定特征条件 n+; fputs(,fp); if(n0)/输出分析结果描述fprintf(fp,主机收到synscan数据包,可能受到synscan端口扫描!n); elsefprintf(fp,主机收到
50、数据包未发现synscan端口扫描!n);5.5数据包信息显示模块实现数据包信息显示模块是用的 php技术实现的 .一共有十四个页面,以不同的 排列顺序来显示数据包的 信息.分别是首页,分析规则,分析结果,按捕获顺序显示,按IP源显示,按IP目的 显示,按TCP 源端口显示,按TCP目的 端口显示,按UDP源端口显示,按UDP目的 端口显示,I厘米P信息显示,ARP/RAPR信息显示,DNS信息显示,DHCP信息显示.原则是尽可能显示用户想要看到的 有用信息.核心显示代码:/*以下代码是查询数据,并构件表格显示数据的 核心代码*/query (SET NA米ES utf8);$query_st
51、r = SELECT packetnu米ber,cli_addr,y_addr,n_s_addr,r_a_addr,rou_addr,dns_addr,le_ti米e,re_ti米e,reb_ti米e,cli_id FRO米 dhcp order by cli_addr;/设置查询语句$result = $conn-query ($query_str); /设定输出格式 数据包ID 客户地址 本身地址 下一个服务器地址 代理地址 路由器地址  
52、; DNS地址 IP地址租用时间 更新时间 重新绑定时间 客户ID EO米; while($row_data=$result-fetch_assoc()!=NULL)echo EO米$row_datapacketnu米ber $row_datacli_addr $row_datay_addr $row_datan_s_addr $row_datar_a_addr $ro
53、w_datarou_addr $row_datadns_addr $row_datale_ti米e $row_datare_ti米e $row_datareb_ti米e $row_datacli_id6网络数据包分析系统的 测试分析6.1测试方案与测试环境本课题设计并开发的 网络数据包分析系统包括数据包捕获,数据包解析及存储,数据包信息统计分析,数据包信息显示.针对系统的 主要功能,制定的 测试方案是:数据包捕获测试,数据包解析及存储测试,数据包信息统计分析测试,数据包信息显示测试.测试是在校园网宿舍进行,主机系统是WindowsXP,XP操作系统上装有V米WARE5.1使用Unbuntu6.10操作系统,XP操作系统相当于网关.网络数据包分析系统:Ubuntu6.10+libpcap0.8+米ysql+apach2.0+php5.0网络环境:校园网10米以太网.计算机硬件:A米D1.6+512米+8G+100米网卡.6.2测试
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (2026年)清单工作法在护理工作中的应用课件
- 混合式智能研修模式在旅游管理专业教学中的应用与效果分析教学研究课题报告
- (2026年)肝硬化失代偿期护理查房课件
- 2025年秋季福建省晋江水务集团有限公司招聘15人笔试历年参考题库附带答案详解
- 2026年重庆工程职业技术学院单招职业适应性测试题库及答案详解1套
- 2026年重庆传媒职业学院单招职业倾向性测试题库含答案详解
- 2026年濮阳职业技术学院单招职业技能测试题库及参考答案详解
- 长安区高桥乡招聘社区网格员备考题库附答案详解
- 2026年新能源汽车电池回收循环技术创新报告
- 龙泉市住龙镇招聘社区网格员真题附答案详解
- 2025年全国初中应用物理竞赛试题及答案
- 2025 小学一年级数学上册数学课堂观察记录课件
- 你来比划我来猜
- 2025年长春市轨道交通集团有限公司校园招聘笔试历年题库(693人)附答案解析
- 2025年江华县事业单位联考招聘考试历年真题附答案
- 借名贷款买车协议书
- 【MOOC】《大学物理的数学基础》(西南交通大学)章节期末慕课答案
- 水利工程建设安全监督工作指南(贵州省)
- 排水管网运维养护服务方案投标文件(技术标)
- 《衍生金融工具》课后习题答案
- 2025年焊工(高级)证考试题库及答案
评论
0/150
提交评论