安徽工业大学计算机学院毕业设计(论文)模版(word2003、WPS版)_第1页
安徽工业大学计算机学院毕业设计(论文)模版(word2003、WPS版)_第2页
安徽工业大学计算机学院毕业设计(论文)模版(word2003、WPS版)_第3页
安徽工业大学计算机学院毕业设计(论文)模版(word2003、WPS版)_第4页
安徽工业大学计算机学院毕业设计(论文)模版(word2003、WPS版)_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、安徽工业大学毕业设计(论文)说明书专 业网络工程班 级网12*班姓 名学 号129074*指导教师二 O 一 六 年 六 月 十六 日安徽工业大学毕业设计(论文)任务书课题名称*设计与实现学 院计算机科学与技术学院专业班级网络工程12*班姓 名学 号129074*毕业设计(论文)的主要内容及要求: 1)熟悉相关技术和原理; 2)熟练掌握; 3)理解; 4)完成毕业设计说明书(毕业论文)一份; 5)完成3000字左右与设计内容相关的外文资料翻译。 指导教师签字: 安徽工业大学毕业设计(论文)说明书摘 要网络技术的发展使社会进入了信息时代。在网络技术高速发展的同时,其存在的一些安全问题也困扰着工程

2、人员和广大网民。因此,研发一种可实时捕获网络数据包并进行分析的软件具有重要的意义。本软件在Linux环境下开发,使用Qt Creator开发工具和Libpcap函数库,实现了对以太网数据包的抓取和结构分析,能将数据包内部协议分层在界面以树状显示并打印数据包字符信息,且可将捕获的数据包写入文件或解析一个数据包文件,同时实现了一些简单的统计功能,包括抓包总体情况、IP流量统计和TCP流跟踪。本文针对网络数据包的捕获和分析问题进行了研究和探讨,介绍了数据包捕获中的相关技术,并对数据包捕获、数据包分析、数据包信息显示、统计等模块进行了详细叙述和说明。关键词:Linux;Qt Creator;libpc

3、ap;协议分层;数据包捕获【注意:中文摘要一般在200-300字以内,关键词3-5个】IAbstractThe development of network technique urged the society passed into age of information. The network technique developed at a rapid speed, meanwhile, nternet users and engineers were plagued by the security issue the network technique may exists. The

4、refore, it makes sence to develop a software which can capture network packets timely and analyze it.This software is developed in the Linux environment, using Qt Creator IDE and licbpcap library, accomplishing capture and structural analysis to ethernet data packet. It can show the internal protoco

5、l layer information in the form of tree in the GUI and print character information of packet. Also this software can dump packet into file and resolve a packet file. At the same time, it is able to implement some simple statistic functions, including summary, IP traffic statistic and follow TCP stre

6、am.This paper carried out study and inquiry aiming at the capture and analysis of ethernet packet, introduced some technology related to capture of packet and explicated module of packet capture, packet analysis, packet infomation display and statistic in detail.Keywords: Linux; Qt Creator; libpcap;

7、 protocal layer; packet capture【各位同学请注意:英文摘要中应采用英文标点,标点后面要跟一个空格!】II安徽工业大学毕业设计(论文)说明书目 录1.绪论11.1课题背景11.2课题意义11.3论文结构22.开发环境及相关技术介绍32.1开发环境32.2相关技术32.2.1信号和槽机制33.需求分析54.软件的总体设计64.1软件的功能分析64.2软件的流程分析74.2.1抓包分析和保存文件流程74.2.2抓包线程的流程85.软件的具体实现95.1项目配置95.2重要数据结构说明9结束语10参考文献11致谢12附录一 部分代码13附录二 系统开发环境16【注意:目录

8、的字体采用自动生成的字体】I1. 绪论1.1 课题背景Internet的最早起源于美国国防部高级研究计划署DARPA(Defence Advanced Research Projects Agency)的前身ARPAnet,当时主要用于军事用途。20世纪下半叶以来,联合计算机公司和大学加入研究,共同研制发展起来的ARPAnet网络,推动了网络技术的发展和商业化。20世纪末期,互联网在中国长出萌芽,一些科研部门和高等院校开始研究Internet联网技术。1997年至今,互联网在中国已得到了迅速的发展。在网络技术不断取得进步与普及的同时,信息化的迅猛发展也带来诸多网络安全威胁等伴生性问题,网络安全

9、和信息安全问题引起了广大网名和互联网公司的注意和担忧。国家计算机网络应急技术处理协调中心于2014发布的2014年中国互联网网络安全报告显示,2014年CNCERT/CC协调处置涉及基础电信企业的漏洞事件1578起,是2013年的3倍。CNVD8收录与基础电信企业软硬件资产相关的漏洞825个,其中与路由器、交换机等网络设备相关的漏洞占比达66.2%,主要包括内置后门、远程代码执行等类型。我国基础网络仍存在较多漏洞风险,云服务日益成为网络攻击的重点目标。域名系统面临严峻的拒绝服务攻击,针对重要网站的域名解析篡改攻击频发。网络攻击威胁日益向工业互联网领域渗透,已发现我国部分地址感染专门针对工业控制

10、系统的恶意程序事件。分布式反射型的拒绝服务攻击日趋频繁,大量伪造攻击数据包来自境外网络。针对重要信息统、基础应用和通用软硬件漏洞的攻击利用活跃,漏洞风险向传统领域、智能终端领域泛化演进。网站数据和个人信息泄露现象依然严重,移动应用程序成为数据泄露的新主体。移动恶意程序不断发展演化,环境治理仍然面临挑战。 见参考文献2.1.2 课题意义通过本课题,可以了解到TCP/IP协议栈中对各层PDU的封装格式,并通过对各层SDU的定义和解析,加深了对计算机网络中数据包封装的理解;通过抓包并分析的过程,加深了对线程的理解并提高了使用能力;通过前台界面Qt Creator开发环境的使用,提高了对Qt各种控件和

11、界面设计的理解。通过在Qt下对C和C+代码的整合与使用,加深了对面向对象思想和模块化软件设计的理解;通过本课题,可以加强发现、分析、解决和综合处理问题的能力。1.3 论文结构本论文正文内容共分为五个部分:1)绪论,主要介绍了本课题的研究背景和意义。2)相关技术介绍,主要介绍了系统开发所用相关技术。3)软件需求分析。4)软件的总体设计,主要包括各个模块(抓包模块,分析模块,打印模块等)的大体介绍。5)软件具体实现,是论文的主体部分。这部分从界面到后台详细介绍了抓包、分析、打印和统计的实现过程。第 17 页 共 16 页2. 开发环境及相关技术介绍2.1 开发环境本软件在Linux环境下开发,采用

12、的Linux发行版本为Ubuntu15.10。所使用的Qt版本为Qt Creator 3.5.0。2.2 相关技术2.2.1 信号和槽机制信号是Qt中对事件的一种抽象,当一个事件发生时,会发射信号,并执行与其相关联的槽函数。信号采用函数的形式,当所有与信号关联的函数全部返回时,信号函数才会返回。此外,信号函数只有头文件中函数的声明,而没有函数的定义。可以如此声明一个信号:signal: void Mysignal(parameter list.);可以使用emit Mysignal() 来手动发射此信号。槽是Qt中负责处理信号的实体函数。当有信号发射时,与信号相关联的槽函数会依次执行。槽也是采

13、用函数的形式,不过需要实际的定义。槽的声明形式如下:slot: void Myslot(parameter list);在Qt的基类QObject中有一个成员函数来完成信号和槽的映射,其函数原型如下:#include <QObject>Static bool QObject:connect(const QObject *sender, const char *signal,const QObject *receiver, const char *member);表2-1 部门信息表列名数据类型描述是否主键是否外键是否为空IDInt(4)编号(自增)是NumberChar(4)部门号

14、(唯一)是Namevarchar(10)部门名称SexChar(1)性别AgeInt(4)年龄 UserIDvarchar(10)身份证号否续表2-1列名数据类型描述是否主键是否外键是否为空Addressvarchar(50)家庭住址Firmvarchar(50)公司名称Hobbyvarchar(10)个人爱好3. 需求分析随着计算机成本的不断下降和性能的不断提升,以及互联网在世界范围内的普及,网络成为了在信息交换过程中被使用的最多的媒介。网络在带给人们极大的便利同时,存在着许多安全的隐患。有些不法分子,利用一些木马软件,挟持计算机的通信端口,访问一些含有不良内容的网站,或者盗取用户的个人隐私

15、和信息,这在很大程度影响了网名的生活,甚至可能造成重大的损失,如个人账户密码泄露、银行卡被盗刷、隐私泄露等。网络安全的形势不容乐观。在此情况下,网络数据抓包分析软件的重要性不言而喻。本软件的设计的目的主要在于对网卡上传输的数据包进行捕获,从中得到经过所有被监听网卡的数据包,并对数据包的各协议首部字段进行解析以大致了解数据包的内容,从而达到基本的维护网络安全的作用。PC用户和网络管理员只有对捕获的数据进行一系列的分析,才能进行可靠的网络管理。IP协议是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP协议的数据都封装在IP报文中进行传输,而且传输层中TCP和UDP两种类

16、型的数据占绝大多数。本软件着重对TCP和UDP的报文进行了解析。同时,因为ARP攻击能够在网络中产生大量的ARP通信量使网络阻塞,本软件专门针对ARP包进行了解析。同时本软件还具有完备的过滤功能,可以接收到想要的数据包而过滤掉一些无用的数据包,从而高效地进行分析。IP流量的统计算法以伪代码描述如下:while(还有数据包)从PktList中取出数据包;If 没有数据包或数据包不完整 break;If 不是IP数据包 continue;从数据包中取出源IP地址和目的IP地址;计算该数据包的IP数据报的长度size_ip;将size_ip累加到mapIn目的IP中;将size_ip累加到mapOu

17、t源IP中;下一个数据包;4. 软件的总体设计软件总体设计的主要任务就是根据总体目标和功能,划分好对应的模块,实现各自模块的功能,协调好处理模块之间的关系,并向主界面传递数据以显示。4.1 软件的功能分析本软件需要实现的功能主要有:(1) 在以太网接口上捕获数据包;(2) 可以设置过滤器对捕获到的数据包进行过滤;(3) 将捕获到的数据包的主要信息填入到QTablewiget中并在界面上显示,显示的主要信息包括:源MAC地址,目的MAC地址,源IP地址,目的IP地址,协议,报文长度。目前已能识别的协议主要有:TCP、UDP、IP、ICMP、IGMP、ARP、PPP。(4) 通过点击数据包可以在Q

18、TreeView中生成相应数据包的树形的协议字段解析。目前能够解析的数据包首部类型为:以太网数据帧首部、ARP报文、IP报文首部、TCP报文首部、UDP报文首部。(5) 在QTextEdit中显示整个数据包的十六进制信息及相应的ASCII码,使用户能够对数据包有大致的了解。(6) 能够将捕获的数据包保存至文件中,并且保存的文件可以被其他抓包分析软件(如Wireshark等)打开。(7) 可以打开其他抓包软件保存下来的数据包,并显示在界面上,并能够响应点击事件以显示协议字段的解析和数据包内容打印。(8) 实现一些简易的统计功能,主要包括:数据包文件地址及大小信息、数据包捕获时间、捕获时间跨度、操

19、作系统信息、抓包接口信息、数据包流量统计等,并能够统计各个IP地址上经过的数据包流量。(9) 可以对TCP连接进行跟踪,以观察分析TCP建立连接的3次握手、数据传输和中断连接的4次握手过程。(10) 提供一份简易的软件使用说明书。4.2 软件的流程分析4.2.1 抓包分析和保存文件流程为了更清楚地说明本软件的运行流程,使用户对本软件有一个整体上的初步认识,在此处特意给出本软件的运行流程图,如图4-1所示。主界面QTextEdit保存为文件,后缀为.pcapQTableWidget接收线程传递过来的数据并以行的表格的形式显示数据包信息QTreeviewstart运行由Qt线程和libpcap库实

20、现的抓包线程当QTableWiget中的项目被点击时,在Tree中树状显示数据包的封装层次响应点击事件打印整个数据包的十六进制信息和ASCII码信息将线程传递过来的数据包保存在一个数据包数组中以实现随机访问。图4-1 本软件的主要运行流程当点击工具栏中的start按钮时,会生成一个Qt线程,该线程会监听选择的网卡接口,负责抓包并对数据包做简单的解析。每抓到一个包,线程会将与该数据包相关的数据通过信号传递给主界面,以填充QTableWidget。同时,该线程会将抓到的数据包写入文件,已供其他抓包软件分析。当点击QTableWidget中的某一项时,会在QTreeview中以树形目录的形式显示每一

21、层的封装的首部信息,并解析对应的字段信息。同时会在QTextEdit中打印整个数据包的十六进制信息和ASCII码。4.2.2 抓包线程的流程抓包线程接收从主界面中传来的参数,包括选择的网卡接口、过滤器和已经打开的数据包捕获句柄,然后执行。每接收到一个数据包就发送一个信号给主函数,信号中包含了捕获到的数据包的部分信息。主界面中有一个与该信号相连接的槽函数,负责处理线程抓到的数据包,并予以保存和解析。其流程如图4-2所示。图4-2 抓包线程流程图 5. 软件的具体实现本部分主要介绍本软件的主要功能的实现。5.1 项目配置由于许多Linux的发行版本不自带Libpcap库,需要先安装Libpcap函

22、数库。在/下载libpcap源码(tcpdump的源码也可以从这个网站下载),解压之后用命令行安装:./configuremakesudo make install用Qt Creator创建项目后,因为Qt没有连接我们需要的Libpcap库,需要在工程配置文件中添加如下一行以手动连接到LIbpcap库:LIBS += -L/usr/local/lib -lpcap 同时,由于LIbpcap库函数的执行需要root权限,用Qt Creator编译生成可执行文件后,需进入工程的bulid目录,以sudo运行可执行文件方可正常运行。5.2 重要数据结构说明为

23、了实现对已捕获数据包的随机访问,以在QTreeView和QTextEdit中显示数据包内容,需将已捕获的数据包及某些携带信息保存在数组中。一些重要的数据定义如下:#include “capture.h” u_char PktListMAX_CAPSNAP_LEN;int LenthOfPktMAX_CAP;struct pcap_pkthdr HeadersMAX_CAPsizeof(struct pcap_pkthdr);其中字符串数组PktList存放所有已捕获数据的字符流信息,MAX_CAP和SNAP_LEN为定义在头文件capture.h中的宏,MAX_CAP等于65535,表示最大抓

24、包数为65536,即一次最多捕获这个数量的包;SNAP_LEN等于1518,为以太网帧的最大长度。Int型数组LenthOfPkt保存与其下标相对应的数据包的长度。数据包首部数组Headers保存的是与其下标相对应的数据包的一些携带信息,如数据包长度、已捕获的长度以及数据包到达的时间戳等。结束语因为大四下学期开始忙着考研复试,没有时间准备毕业设计,而且考研的一年中代码碰的很少,导致毕设的进度十分缓慢。后来在振华图书馆找了很多有关Qt编程和计算机网络方面的书,经过一段时间的编程学习,以及老师的帮助,逐渐找回了编程的感觉,毕设的工作也逐渐走上了正轨。此次毕业设计,对我来说是一次很好的磨练。从开始的

25、心浮气躁到后来的沉下心,我得到了很多提高。能够凭借自己的努力和老师的帮助完成这个软件,我得到了极大的鼓舞,不仅学到了很多新的知识,还复试了很多计算机网络方面的知识,同时我的实践操作能力也得到了很大的提高。这将对我研究生阶段的学习产生很大的帮助,包括技术方面和个人素质方面。参考文献1 (英)马修(Matthew, N.), (英)斯通斯(Stones). Linux程序设计M. 人民邮电出版社, 2015.06.2 国家计算机网络应急技术处理协调中心.2014年中国互联网网络安全报R. /AnnualReport.pdf,2015.06.3 W. Richard Stevens & St

26、ephen A.Rago. Advanced Programming in the UNIX Environment,Third EditionM.Addison-Wesley,2013-05.4 W. Richard Stevens & Bill Fenner & Andrew M. Rudoff.Unix Network Programming, Volume 1M.Addison-Wesley Professional, 2003-11.5 邱铁,周玉,张民垒.Linux环境下Qt4图形界面与MySQL编程M. 北京:机械工业出版社,2012.3.6 陆文周.Qt5开发及

27、实例M. 北京:电子工业出版社,2014.1.7 Han X, Kong X. The Designing of Serial Communication Based on RS232C Cryptography, and Network Security, Data Mining and Knowledge Discovery, E-Commerce and Its Applications, and Embedded Systems, IACIS International Symposium on. IEEE, 2010:382-384.8 谢希仁.计算机网络(第6版)M. 北京:电子工

28、业出版社,2013.6.9 闫丽丽,涂天禄,周兴涛.Libpcap数据包捕获机制剖析与研究J.网络安全技术与应用,2006(4):38-40【要求:参考文献8篇以上,其中近三年参考文献不少于3篇,外文文献不少于2篇。】【要求:外文翻译的文献应列入参考文献】致谢随着毕业设计进度逐渐完成和毕业论文字数的节节攀升,我的大学生活马上就要结束了。前一阵子拍完了毕业照,或许那是全班同学最后的一次齐聚了。在完成毕设很论文的几个月里,我在代码的世界里摸索爬行,跌跌撞撞。首先要感谢我的指导老师*老师。在毕业设计开始阶段,我跟老师说我要准备考研复试,毕设可能要推迟一点了,老师爽快的说你这个月先不用管毕设的事了,这

29、让我十分感动。在被录取后,我开始了毕业设计的工作,老师对我的工作十分关心,会定期检查我的进度。在完成毕设的过程中,遇到问题时我会积极与老师交流,老师也给我提出了很多有用的意见。其次我要感谢大学四年中每一个教导我的老师和学长学姐。他们在学习和生活上教给我很多有用的知识,提高了我的能力,这让我有能力完成毕业设计。我也要感谢我的父母,感谢他们的关心和教育。最后,我由衷的感谢评阅老师*老师,谢谢您!附录一 部分代码1. 获取网卡接口:for (device = alldevsp; device != NULL; device = device->next) sprintf(info,"

30、%d. %s - %sn", count, device->name, device->description); if (device->name != NULL) strcpy(devscount, device->name); QStandardItem *item = new QStandardItem(info); if(count % 2 = 1) QLinearGradient lg(QPointF(0,0), QPointF(200,200); lg.setColorAt(0,Qt:gray); QBrush brush(lg); item-&

31、gt;setBackground(brush); model->appendRow(item); count+; ui->listView->setModel(model);2. 抓包线程主体部分 while (1) if(run_flag = false) break; pcap_loop(g_phandle,1,pcap_handle,(u_char *)fileptr); pcap_dump_flush(fileptr); /write to file emit signalpcap(msStrSurIpInfo,msStrSurMacInfo, msStrDestIp

32、Info,msStrDestMacInfo, msStrProto,msStrPackLen,g_pPktdata,g_pHeader); 3. IP流量统计算法实现while(i < pkt_count) const u_char *packet = PktListi+; /data packet if(LenthOfPkti < 14) break; ETHHEADER *ether = (ETHHEADER*)packet; if(ntohs(ether->Etype) != PRO_IP ) continue; /build a IP packet IPHEADER

33、*iphdr = (IPHEADER*)(packet + SIZE_ETHERNET); /get src ip and dst ip QString srcIP = QString(inet_ntoa(iphdr->ip_src); QString dstIP = QString(inet_ntoa(iphdr->ip_dst); /get size of packet int ipSize = ntohs(iphdr->ip_len); /make map from ip addr and traffic if(mapIn.contains(dstIP) mapIndstIP += ipSize; else / first time mapIndstIP = 0; map

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论