数据包捕获与解析
- 格式:doc
- 大小:558.00 KB
- 文档页数:16
数据包捕获与解析课程设计报告
学生姓名:董耀杰
学号:1030430330
指导教师:江珊珊
数据包捕获与分析
摘要本课程设计通过Ethereal捕捉实时网络数据包,并根据网络协议分析流程对数据包在TCP/IP各层协议中进行实际解包分析,让网络研究人员对数据包的认识上升到一个感性的层面,为网络协议分析提供技术手段。最后根据Ethereal的工作原理,用Visual C++编写一个简单的数据包捕获与分析软件。
关键词协议分析;Ethereal;数据包;Visual C++
1引言
本课程设计通过技术手段捕获数据包并加以分析,追踪数据包在TCP/IP各层的封装过程,对于网络协议的研究具有重要的意义。Ethereal是当前较为流行的图形用户接口的抓包软件,是一个可以用来监视所有在网络上被传送的包,并分析其内容的程序。它通常被用来检查网络工作情况,或是用来发现网络程序的bugs。通过ethereal对TCP、UDP、SMTP、telnet和FTP等常用协议进行分析,非常有助于网络故障修复、分析以及软件和协议开发。,它以开源、免费、操作界面友好等优点广为世界各地网络研究人员使用为网络协议分析搭建了一个良好的研究平台。
1.1课程设计的内容
(1)掌握数据包捕获和数据包分析的相关知识;
(2)掌握Ethreal软件的安装、启动,并熟悉用它进行局域网数据捕获和分析的功能;
(3)设计一个简单的数据包捕获与分析软件。
1.2课程设计的要求
(1)按要求编写课程设计报告书,能正确阐述设计结果。
(2)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作精神。
(3)学会文献检索的基本方法和综合运用文献的能力。
(4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。
1.3课程设计平台
Windows XP;Visual C++
2用Visual C++设计一个简单的数据包捕获和分析软件2.1Visual C++简介
Visual C++即VC,微软公司出品的高级可视化计算机程序开发工具。他提供了一套开发环境:Visual Studio,Visual Studio本身包括一个文本编辑器、资源编辑器、工程编译工具、一个增量连接器、源代码浏览器、集成调试工具,以及一套联机文档,借助这套工具,用户可以随心所欲地开发出各种功能的应用软件以及借助OpenGL和DirectX技术开发游戏软件。Visual C++可以识别C/C++并编译,支持MFC类库,并提供了一系列模板,常用的MFC AppWizard(EXE/DLL),MFC ActiveXControlWizard,Win32Application,Win32ConsoleApplication,ATLCOMAppWi zard。这种可视化编程环境可以令程序员花更多精力在程序功能的实现上,而不是底层的建设上,这就大大加快了程序开发速度和效率,这也是Visual C++一个显著的特点。利用Visual C++编译出的程序空间小,运行快,比其他的编译工具编译出的软件占据较多优势。现在常用的版本有Visual C++ 6.0/.Net/2005[5]。
2.2WinPcap简介
WinPcap是一个在Windows操作系统下的免费、公开的用于直接访问网络的开发工具包(编程API)。大多数Windows网络应用程序都是通过Winsock API(Windows套接口)这类高级编程接口访问网络的。这种方法允许在网络上进行简单的数据传送,因为操作系统的TCP/IP协议栈实现软件会处理底层细节(协议操作、流程重组等等),并提供一个类似于读写文件的函数接口。然而,有时候“简便方法”并不能满足实际需要。有些程序希望绕过TCP/IP协议栈,直接处理底层网络中的通信数据,它们需要对网络进行底层进行直接访问,即在没有类似协议栈(TCP/IP协议栈)的实体介入条件下对网络进行原始访问。基于Winsock API编程,应用程序是通过调用操作系统提供的编程接口访问TCP/IP协议栈实现网络通信的。基于WinPcap编程,网络程序实际上是绕开操作系统的TCP/IP协议栈直接通过底层网络发送数据,因此网络程序可以实现一些更低级、更灵活的功能[6]。
2.3建立工程
在VC++ 6.0下创建一个单文档的MFC应用程序,工程名:Sniffer如图3-1->图3-2->图3-3。
图2-1建立工程
图2-2选中单文档
图2-3自动生成的类列表
到/devel.htm下载WinPcap 4.0.2.zip,然后解压,解压缩就可以看见Includelib;在"Project->Settings"标签栏中选择"C/C++",在"Preprocessor
definitions"的输入框里添加"WPCAP";再选择"Link",在"Object/library modules"的输入框里添加"wpcap.lib "。然后再设置VC++环境变量:选择Tools->options->Directories的include里面加入下载的winpcap开发包解压以后的include文件选择Tools->options->Directories的lib里面加入下载的winpcap开发包解压以后的lib文件夹[7]。
2.4进行界面的设计
工程建好了,下面进行界面的设计:
首先,对菜单栏进行修改,去掉原来单文档所自带的“文件”、“编辑”菜单选项,保留“查看”和“帮助”,新建“文件”,下面有“开始抓包(ID_FILE_START)”、“停止抓包(ID_FILE_STOP)”、“退出(ID_APP_EXIT)”三个菜单选项。再建“适配器”菜单,下面有“选择适配器(ID_ADP_CHOOSE)”选项,并对每个新建的选项进行注释说明。如图3-4:
图2-4 菜单栏
然后,打开Sniffer.rc文件,对工具栏进行修改。自做了一个工具栏图片Toolbar1.bmp 来代替原来工程的Toolbar.bmp,然后将多余的复制粘贴等工具按钮信息删除掉,回到界面处,再对每个按钮图标进行ID设置。如图:,从左向右依次是:开始抓包、停止抓包、选择适配器、帮助图标按钮。
最后,新建一个选择适配器的基本对话框,ID标识为IDD_ADP_DIALOG,双击此对话框新建一个类:CAdpterDlg。在此基本对话框上拖入一个Tree Contrl控件和List Contrl控件,对控件属性界面进行调整,打开类向导,将Tree Contrl成员变量设置为:m_treeCtrl,List Contrl成员变量设置为m_listCtrl。如图3-5: