logo资料库

基于winpcap的简单抓包工具的设计 计算机网络课设.doc

第1页 / 共27页
第2页 / 共27页
第3页 / 共27页
第4页 / 共27页
第5页 / 共27页
第6页 / 共27页
第7页 / 共27页
第8页 / 共27页
资料共27页,剩余部分请下载后查看
课 程 设 计( 论 文 )任 务 书
一、任务分析与方案设计
三、关键技术与理论
四、系统功能的详细实现
五、测试及结果分析
六、课程设计总结
七、参考文献
华 东 交 通 大 学 课 程 设 计( 论 文 )任 务 书 信息学院 专 业 计算机 班 级 2008-1 一、课程设计(论文)题目 基于 winpcap 的简单抓包工具的设计 二、课程设计(论文)工作:自 2011 年 6 月 20 日起 至 2011 年 6 月 25 日止。 三、课程设计(论文)的内容要求: 1、 基于 winpcap 的简单抓包工具的设计 (1)使用 Winpcap 开发包编写自己的 Sniffer 软件,要 求具备数据包捕获,过滤存储以及读取等功能; (2)对所抓取的包尽量作详细的解析; (3)用 VC 完成程序设计; 1
学生签名: 2011 年 6 月 26 日 课程设计(论文)评阅意见 等 级 优秀 良好 中等 及格 不及格 项 目 课程设计态度评价 出勤情况评价 任务难度评价 工作量饱满评价 设计中创新性评价 论文书写规范化评价 综合应用能力评价 综合评定等级 评阅人 谢昕 职称 教授 2011 年 6 月 27 日 2
目 录 一、任务分析与方案设计 ...................... 4 二、开发环境与工具 .......................... 6 三、关键技术与理论 .......................... 7 四、系统功能的详细实现 ...................... 8 五、测试及结果分析 ........................ 225 六、课程设计总结 .......................... 226 七、参考文献 .............................. 227 3
一、任务分析与方案设计 1.实验题目与要求: 用 Winpcap 编写自己的 Sniffer. (1)使用 Winpcap 开发包编写自己的 Sniffer 软件; (2)对所抓取的包尽量作详细的解析; (3)用 VC 完成程序设计; 2.设计思路 程序在执行过程中有两个核心的工作,一是调用 Winpcap 函数库实现下层抓 包。二是对抓到的包文进行分析。下面分别列出两个核心过程的基本算法与相关的实 现代码。 抓包算法:(1):初始化 Winpcap 开发库 (2):获得当前的网卡列表,同时要求用户指定要操作的网 (3):获得当前的过滤规则,可为空 (4):将网卡的工作模式设为混杂模式,调用线程开始抓包 (5):调用库函数,pcap_loop(),同时并指定其回调函数,其中其回调函 数为数据包分析过程。 分析算法:(1):得到数据包,先将其转存到内存里,以备以后再用。 (2):分析当前的数据包,分析过程如下: 1>.数据包的前 14 个字节(Byte)代表数据链路层的报文头,其报 文格式是前 6Byte 为目的 MAC 地址,随后的 6 个 Byte 为源 Mac 地址,最后的 2Byte 代表上层协议类型这个数据很重要,是我们分析上层协议的依据。 2>.根据 1>.得到的协议类型进行类似的迭代运算这样就可以得到 各层中的报文头信息和数据信息。 (3):结束本次分析。 4
3.实验流程图 5
二、开发环境与工具 开发环境:winpcap 开发包,microsoft visual C++ 6.0,pc 机 工具:winpcap,microsoft visual C++ 6.0 1.winpcap 简介: windows packet capture,是 windows 平台下一个免费,公共的网络访问系统。 是网络数据包捕获库函数,工作于驱动层直接访问网络,为应用程序提供了一组 API 接口,编程容易,源码级移植方便,网络操作高效。 2.WinPcap 主要功能: (1)捕获原始数据包 (2)将数据包发送给应用程序之前,按照用户规定的规范过滤数据包 (3)将捕获到的数据包输出到文件中,并可以对这些文件进行再分析 (4)向网络发送原始数据包 (5)搜集网络传输统计数据 3.编程环境设定 (1) 下 载 安 装 包 和 开 发 包 http://winpcap.polito.it Winpcap 的 安 装 包 (Winpcap_3_1.exe),程序员开发包(WpdPack_3_1.zip),运行 Winpcap_3_1.exe. (2)运行 Visual C++ 6.0, 打开 WpdPack_3_1\WpdPack\Examples-pcap\下的 任一项目(本例用 basic_dump 目录下 basic_dump.dsw) (3)在“工程->设置-> Link->对象/库模块” 中加入 wsock32.lib ws2_32.lib wpcap.lib;在“工具->选择->目录”的 include files 和 library files 设置中引入 winpcap 开发包中的 Include 和 Lib 目录 (4) 编译,运行程序 6
三、关键技术与理论 Sniffer(嗅探器)设计原理 嗅探器是一种常用的收集有用数据的方法,嗅探器是利用计算机的网络接口截 获目的地为其它计算机的数据报文的一种工具。由于组网方式不同,嗅探器的工作原 理也有所不同,总共可以分为三类: (1) 基于网卡混杂模式的嗅探原理; (2) 基于 ARP 欺骗的网络嗅探原理; (3) 基于中间人攻击的嗅探原理。 本次课程设计就是利用第一种方式来实现嗅探器的功能,可见监听到所有流经同 一以太网网段的数据包,这是一种被动嗅探的方式。从以太网的工作原理来看,数据 传输是基于“共享”的,所有的同一本地网范围内的计算机共同接收到相同的数据包, 这意味着计算机直接的通讯都是透明可见的。正是因为这样的原因,以太网卡都构造 了硬件的“过滤器”,这个过滤器将忽略掉一切和自己无关的网络信息,事实上时忽略 掉了与自身 MAC 地址不符合的信息。从网卡原理上来说,在一个实际的系统中,数据 的收发是由网卡来完成的,网卡接收到传输来的数据包,网卡内的单片程序接收数据 帧的目的 MAC 地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收, 认为该接收就接收后产生中断信号通知 CPU,认为不该接收就丢掉不管,所以不该接 收的数据网卡就截断了,计算机根本就不知道。对于网卡来说一般有四种接收模式: (1) 广播方式:该模式下的网卡能够接收网络中的广播信息; (2) 组播方式:设置在该模式下的网卡能够接收组播数据; (3) 直接方式:在这种模式下,只有目的网卡才能接收该数据; (4) 混杂模式:在这种模式下的网卡能够接收一切通过它的数据。 而本次设计嗅探工具正是利用了这个特点,把网卡设置为“混杂模式”。因此,嗅 探程序就能够接收到整个以太网内的网络数据信息了,而不管该数据是否是传给它的。 7
四、系统功能的详细实现 1.获取设备列表:获得合适的网络适配器。Libpcap 提供 pcap_findalldevs() 函 数完成这个功能。这个函数返回一个相连的 pcap_if 结构的列表,列表的每一项包含关 于适配器的复杂的信息。 InitPacp() {pcap_if_t *alldevs,*d; int i=0; char errbuf[PCAP_ERRBUF_SIZE]; if (pcap_findalldevs(&alldevs, errbuf) == -1) { //查找设备 fprintf(stderr,"Error in pcap_findalldevs: %s\n", errbuf); exit(1); } for(d=alldevs;d;d=d->next) { //打印设备列表 printf("%d. %s", ++i, d->name); if (d->description) else printf(" (%s)\n", d->description); printf(" (No description available)\n");} if(i==0){ printf("\nNo interfaces found! Make sure WinPcap is //没找到设备显示错误 installed.\n"); return; } pcap_freealldevs(alldevs); //释放 } 2.开始捕获数据包:开始打开适配器捕获数据,这是本实验最重要的一步。 (1)设置线程进行数据捕获控制 DWORD WINAPI MyCaptureThread(LPVOID lpParameter) {LPDWORD ThreadID=NULL; m_ThreadHandle=CreateThread(NULL,0,MyCaptureThread,this,0,ThreadID); if(m_ThreadHandle==NULL) 8
分享到:
收藏