基于WinPcap的测试软件设计
- 格式:pdf
- 大小:217.71 KB
- 文档页数:3
计算机与信息学院《计算机网络系统实践》报告设计题目:嗅探器的设计与实现学生姓名:***学号:2010****专业班级:信息安全****2013 年9 月25一、设计要求1.不限平台,可以使用Libpcap、WinPcap 或 Linux的原始套接字;2.实现一个功能比较简单的、具有图形界面的Sniffer,主线程响应用户界面操作,工作线程完成抓包等工作;3.能够解析出IP层和传输层的协议头,能够过滤TCP、UDP等数据包;4.能够输出文本方式传送的数据包的内容;5.能够进行简单的流量统计。
二、开发环境与工具操作系统:windows7开发工具:visual studio开发语言:C++附加库:Winpcap三、设计原理网络嗅探器是一种常用的监听网络的工具。
所谓嗅探器( Sniffer) ,是一种利用计算机网络接口截获网络数据的软件或硬件,可用于网络管理、网络协议分析以及网络安全等众多方面。
嗅探器不同于一般的键捕获工具,后者只能捕获当地终端控制台上的按键内容,而嗅探器所“嗅”到的是动态的以信息包形式( 如IP 数据包或者以太网包) 封装的信息流。
其中可能携带了重要数据或敏感信息。
可以将这些捕获到的信息包存档,以利用相应工具可以作进一步分析。
计算机网络的设计为嗅探器的使用创造了最基本的条件。
在目前的网络环境中,所有计算机节点都是共享传输介质,任意节点发出或发往任意节点的数据帧必将经过网内每一个节点的网络接口,此时只需对嗅探节点的网络接口( 网卡) 进行适当的设置便可为实现嗅探的做好准备工作。
在计算机网络系统中,网卡是用来接收网络上其他节点发来的数据帧,其内嵌的单片处理程序会检测数据帧来源的MAC 地址,并根据网卡所设置的接收方式来是否接收处理数据,如果认为应该处理,则网卡就会产生中断信号通知中央处理器,接收该数据帧并传输给操作系统处理。
否则就简单丢弃,所对应节点的网卡就截断,计算机的中央处理器并不参与。
课程设计Ⅰ设计报告题目:基于Winpcap的网络嗅探器的实现学号:姓名:学院:专业班级:指导教师:设计时间:指导老师评语:评定成绩: 签名: 日期:目录1 概述 (3)1.1课程设计的目的 (3)1.2设计任务与要求 (3)1.3开发环境 (3)2系统设计的基本概念与原理 (3)2.1IP协议基本知识 (3)2.2TCP协议基本知识 (6)2.3UDP协议基本知识 (9)2.4 WINPCAP基本知识 (9)2.5 WINPCAP基本原理 (14)2.6MFC编程框架 (16)3 基于WINPCAP的单文档网络嗅探器的设计与分析 (19)3.1系统设计实现的基本原理与过程 (19)3.2系统功能设计 (21)3.3系统架构设计 (22)3.4子系统与模块设计 (23)3.4.1网络嗅探器设置模块 (23)3.4.2网络数据包的捕获模块 (23)3.4.3解析和显示模块 (23)4 系统详细设计与实现 (24)4.1数据结构的设计 (24)4.2全局变量与函数的声明 (25)4.3嗅探器界面设计 (25)4.4嗅探器捕获模块的设计与实现 (26)4.5网络数据包捕获模块的设计与实现 (31)4.6解析和显示模块的设计与实现 (32)4.6.1列表视图初始化设置 (32)4.6.2从读取离线数据包并在列表视图中显示 (33)4.6.2响应用户鼠标消息,解析对应行的数据包信息。
(36)5 系统调试与运行 (38)5.1 WINPCAP函数库的安装 (38)5.2 SNIFFER网络嗅探器的测试与运行 (38)6 课程设计总结 (39)参考文献 (40)1 概述1.1 课程设计的目的目的:设计一个GUI程序,实现IP、TCP、UDP数据包的捕获和解析。
通过编程了解各类数据报的结构,掌握网络编程的基本原理和方法。
1.2 设计任务与要求本课程设计的基本内容是捕获IP,TCP,UDP数据包,通过解析数据包,理解和掌握各类数据包的结构(1)设计一个GUI程序,完成局域网数据包的捕获和IP、TCP、UDP数据包的解析;(2)捕获几个网络数据报,给出实例并分析各数据包各字段的含义;(3)说明基于Winpcap编程的基本原理、程序的总体框架,绘制每个函数的详细设计流程图。
1、Winpcap概述1.1 Winpcap简介Winpcap(windows packet capture)是由意大利人Fulvio Risso和LorisDegioanni提出并实现的[1]。
它是一个Windows平台下捕包和网络分析的体系架基于Winpcap的数据包捕获和协议分析系统的设计与实现李延会 岳彩祥 徐金艳 李亚斐 长春工业大学研究生院 130012构。
它具有访问底层的能力,提供了捕获原始数据包,按照一定规则过滤数据包,以及发送原是数据包的功能. WinPcap 为用户级的数据包提供了Windows下的一个平台。
WinPcap是BPF模型和Libpcap函数库在Windows平台下网络数据包捕获和网络状态分析的一种体系结构,这个体系结构是由一个核心的包过滤驱动程序,一个底层的动态连接库Packet.dll和一个高层的独立于系统的函数库Libpcap组成。
底层的包捕获驱动程序实际为一个协议网络驱动程序,通过对NDIS中函数的调用为Win95、Win98、WinNT和Win2000提供一类似于 UNIX 系统下 Berkeley PacketFilter 的捕获和发送原始数据包的能力。
Packet.dll 是对这个 BPF 驱动程序进行访问的API接口,同时它有一套符合Libpcap接口(UNIX下的捕获函数库)的函数库。
WinPcap的主要结构图如图1。
1.2 winpcap构成WinPcap 主要有三个模块构成[2,3]:第一个模块NPF(Netgroup Packet Filter),是一个虚拟设备驱动程序文件。
它的功能是过滤数据包,并把这些数据包原封不动地传给用户态模块,这个过程中包括了一些操作系统特有的代码。
第二个模块packet.dll为win32平台提供了一个公共的接口。
不同版本的Windows系统都有自己的内核模块和用户层模块。
Packet.dll用于解决这些不同。
调用Packet.dll的程序可以运行在不同版本的Windows平台上,而无需重新编译。
实验一、基于WinPcap的网络嗅探器设计1、目的与要求◆掌握基于WinPcap的网络编程模式。
◆理解并能应用WinPcap设计并实现网络数据包的捕获、解析。
2、实验设备与环境连网PC机(至少一台)。
计算机硬件要求:Intel Pentium5 处理器、256MB以上内存,Ethernet网卡,网线若干。
计算机软件要求:MS Windows 9x/2000/XP操作系统,TCP/IP协议,WinPcap430,Visual c++6.0/.net系统。
3、实验内容与步骤:在程序设计之前,请参照提供的软件安装WinPcap。
之后,按照如下步骤操作:步骤1:在VC++ 6.0下创建一个DOS命令行程序,工程名:201200824302步骤2:打开main()函数,在主程序中增加如下头文件和常量定义:头文件添加如下:#include <pcap.h>#define LINE_LEN 16代码内容如下:pcap_if_t *alldevs, *d;pcap_t *fp;u_int inum, i=0;char errbuf[PCAP_ERRBUF_SIZE];int res;struct pcap_pkthdr *header;const u_char *pkt_data;printf("pktdump_ex: prints the packets of the network using WinPcap.\n");printf("Usage: pktdump_ex [-s source]\n\n"" Examples:\n"“pktdump_ex -s file.acp\n""pktdump_ex \\Device\\NPF_{C8736017-F3C3-4373-94AC-9A34B7DAD998}\n\n"); if(argc < 3){printf("\nNo adapter selected: printing the device list:\n");// The user didn't provide a packet source: Retrieve the local device listif(pcap_findalldevs(&alldevs, errbuf) == -1){fprintf(stderr,"Error in pcap_findalldevs_ex: %s\n", errbuf);exit(1);}/* Print the list */for(d=alldevs; d; d=d->next){printf("%d. %s\n ", ++i, d->name);if (d->description)printf(" (%s)\n", d->description);elseprintf(" (No description available)\n");}if (i==0){printf("\nNo interfaces found! Make sure WinPcap is installed.\n");return -1;}printf("Enter the interface number (1-%d):",i);scanf("%d", &inum);if (inum < 1 || inum > i){printf("\nInterface number out of range.\n");/* Free the device list */pcap_freealldevs(alldevs);return -1;}/* Jump to the selected adapter */if ((fp = pcap_open_live(argv[2], // name of the device65536, // portion of the packet to capture. // 65536 grants that the whole packet will be captured on all the MACs. // promiscuous mode (nonzero means promiscuous)1000, // read timeouerrbuf // error buffer)) == NULL){fprintf(stderr,"\nError opening adapter\n");return -1;}}/* Read the packets */while((res = pcap_next_ex( fp, &header, &pkt_data)) >= 0){if(res == 0)/* Timeout elapsed */continue;/* print pkt timestamp and pkt len */printf("%ld:%ld (%ld)\n", header->_sec, header->_usec, header->len);/* Print the packet */for (i=1; (i < header->caplen + 1 ) ; i++){printf("%.2x ", pkt_data[i-1]);if ( (i % LINE_LEN) == 0) printf("\n");}printf("\n\n"); }if(res == -1){printf("Error reading the packets: %s\n", pcap_geterr(fp));return -1;}pcap_close(fp);return 0;步骤3:为编译器指定包含文件和库文件搜索目录。
基于Winpcap的网口测试软件开发摘要:网口通信常用于通信系统间收发数据,由于系统间的差异,需要在链路层进行数据的发送和接收。
本文利用Winpcap在Windows系统上开发了一个在链路层进行通信的软件,使用MFC完成界面设计,使用多线程完成同时收发的功能,具有一定的工程实用意义。
关键词:网口通信Winpcap MFC 多线程1.引言网口通信常用于各种通信系统间收发数据。
Windows系统中提供了基于TCP/IP协议的网口通信API,利用API能够收发IP数据包。
但是在Windows系统与其他系统进行网口通信时,无法通过IP进行数据的收发,需要对链路层数据进行处理。
因此,在Windows系统下开发一种能于链路层进行数据收发的软件具有重要意义。
本文在Microsoft Visual Studio 2010环境下使用MFC开发了一种基于Winpcap的网口测试软件,能够在Windows下与其他系统进行网口通信,具有一定的工程实用价值。
1.Winpcap技术1.WinpcapWinpcap是应用于Windows平台下对网络数据包捕获功能的一个开源、公共、免费的网络访问系统。
其为Windows环境下应用程序提供了直接访问网络底层的能力,常用于Windows系统下的直接网络编程[1]。
Winpcap由内核态下的NPFDevice Driver、用户态下的动态链接库peaket.dll和Wpcap.dll三部分组成,其结构如图 1所示。
图1Winpcap结构Winpcap通过3个模块提供以下功能:1)捕获原始数据包,包括在共享网络上各主机发送、接收以及相互之间交换数据包;2)在数据包发往应用程序前,按照自定义的规则将某些特殊数据包过滤掉;3)在网络上发送原始数据包;4)收集网络通信过程中的统计信息。
1.2.数据接收和发送由于本文需要在链路层进行网口数据的收发,因此本文使用Winpcap中的1、3功能,具体实现方法如下:1)使用Winpcap中pcap_findalldevs_ex函数查找计算机中所有网卡;2)使用Winpcap中pcap_open函数打开需要使用的网卡;3)使用pcap_sendpacket和pcap_next_ex函数分别实现网口的数据发送及数据接收功能。
基于WinPcap的测试软件设计
何秋阳
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2010(000)002
【摘要】介绍WinPcap的功能、软件体系结构和工作原理,结合作者基于WinPcap进行数据产品测试软件设计开发的经验,对基于WinPcap的测试软件设计方法、过程作了分析和研究.
【总页数】3页(P37-38,44)
【作者】何秋阳
【作者单位】南京邮电大学通信与信息工程学院,南京210003
【正文语种】中文
【相关文献】
1.基于Winpcap的网络嗅探器软件设计 [J], 陆进华;
2.基于WinPcap的网络化测试通信层设计 [J], 刘德胜;黄芝平;唐贵林;刘纯武
3.基于WinPcap的智能变电站继电保护测试关键技术研究 [J], 肖英伟;任庆帅;郭启伟;肖俊丽
4.基于Winpcap的网络封包软件设计与实现 [J], 钱素娟;赵晓宇
5.基于WINPCAP的GOOSE报文测试软件设计 [J], 杨坤;蒋博
因版权原因,仅展示原文概要,查看原文内容请购买。