基于WinPcap的网络数据包捕获与分析

合集下载

winpcap捕捉网络数据包

winpcap捕捉网络数据包

利用WIPCAP捕捉IP数据包分析局域网流量1、背景知识1.1、IP协议IP(Internet Protocol,互联网协议)协议是TCP/IP协议族中最为核心的协议,所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。

IP协议把传输层送来的消息封装成IP数据包,并把IP数据包传递给数据链路层。

IP协议制定了统一的IP数据报格式,向传输层屏蔽了通信子网的差异,从而为消息的收发双方提供了一条透明的传输通道。

IP数据包结构如图1-1:图1-1 IP包结构1.版本IP数据报的第一个域是版本域,其长度为4bit,表示所使用的IP协议的版本。

通信双方使用的IP协议的版本必须一致。

版本域值为4则表示IPv4;版本域值为6则表示IPv6。

当前的版本为IPv4。

2.报头长度报头长度域长度为4bit,它以4个字节为计算单位表示报头的长度,该长度不包含数据部分。

报头中除了IP选项域与填充域之外,其他各项是定长的。

因为很少使用IP选项功能,所以,该域的值一般为5,意味着报头的长度是5个4字节,也就是20个字节。

协议规定:IP数据报的报头长度必须是4字节的整数倍。

当IP报头长度不是4字节的整数倍时,必须利用最后一个填充域“添0”来加以填充。

3.服务类型如图1-2所示,该字段占8bit,包括3bit的优先级字段,4bit的服务类型(type of service,TOS)字段和1bit的保留位,保留位必须置0。

该字段用于指示路由器如何处理该数据报。

图1-2 服务类型字段结构3bit的优先级表示数据报的重要性,共分8级,数值越大等级越高,优先级越高则表示数据报越重要(该字段值现在已被忽略)。

4bit的TOS字段分别表示:最小时延(D)、最大吞吐量(T)、最高可靠性(R)和最小费用(C)。

每个位都有0或1两个值,但4bit中最多只能有一个位的值为1。

如果所有4 bit均为0,那么就意味着是一般服务。

4.总长度总长度域占16 bit,它以字节为单位具体说明包括报头在内的整个IP数据包的总长度。

基于Winpcap的数据包捕获和协议分析系统的设计与实现

基于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平台上,而无需重新编译。

使用Wincap编制一个简单的网络数据包监听与捕获程序

使用Wincap编制一个简单的网络数据包监听与捕获程序
u_char proto; //协议(Protocol)
u_short crc; //首部校验和(Header checksum)
ip_address saddr; //源地址(Source address)
ip_address daddr; //目的地址(Destination address)
u_int op_pad; //选项与填充(Option + Padding)
使用pcap_open()函数打开适配器,将这个函数的snaplen参数设为65535,这比能遇到的最大的MTU还要大,以保证能收到完整的数据包。另一个参数flag设为PCAP_OPENFLAG_PROMISCUOUS,意为混杂模式,不管这个数据包是不是发给本机的,都会去捕获。参数to_ms指定读取数据的超时时间,这里设置为1000ms,在适配器上进行读取操作都会在to_ms毫秒时间内响应。
ih = (ip_header *) (pkt_data +
14); //以太网头部长度
/*打印协议类型*/
int i;
for(i = 0; i < 10; i++){
if(protocol[i].number == ih->proto){
break;
}
}
if(i <= 9)
printf("%5s ", protocol[i].name);
return 0;
}
/*回调函数,当收到每一个数据包时会被libpcap所调用*/
void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data)

基于WinPcap的数据包捕获及应用

基于WinPcap的数据包捕获及应用

-1649-0引言Internet 的飞速发展使网络用户及规模骤然增大,对网络管理和网络安全提出了更大的挑战,因此对网络分析需求越来越迫切。

网络分析程序依赖于一套捕获数据包的原函数,这就是所谓的包捕获软件,许多单位或组织都投人了对捕获技术的研究,并推出了各自的成果。

1993年初,S.McCanne and V.Jacobson 等人推出了著名的BSD 包过滤器(BPF ),它可以免费获得,目前己被许多版本的Unix 系统所采用,另外在Win-dows 平台上,近几年也陆续有多种捕获工具面世,如Netmon API ,PCAUSA 等,与BPF 不同的是,这些产品是商业性质的。

而WinPcap (作者也称之为NPF )则是Windows 平台上为数不多的功能强大且可免费获得的包捕获接口软件之一,它是由意大利人Fulvio Risso 和Loris Degioanni 等人提出并实现的[1],它对于广大的Windows 平台下的网络分析程序开发人员提供了一条便捷的途径。

1网络数据包捕获原理以太网具有共享介质的特征,信息是以明文的形式在以太网络上传输的,当网卡被设置为混杂模式时,可以捕获任何一个在同一冲突域上传输的数据包。

运用这一原理使网络数据包捕获系统能够拦截到我们所要的信息,这是捕获数据包的物理基础。

网卡具有4种工作模式:广播模式,多播传送模式,直接模式,混杂模式[2]。

网卡的缺省工作模式包含广播模式和直接模式,即它只接收广播帧和发给自己的帧。

如果采用混杂模式,网卡将接受同一网络内所有主机所发送的数据包,这样就可以到达对所有数据包进行捕获的目的。

2Windows 平台下数据包捕获机制(1)Winsock2提供了一种机制,允许用户编写服务提供者接口程序SPI (service provider interface )。

Winsock2的运行需要SPI 的支持,所有对Winsock2的请求都会先发送到SPI 程序中,利用SPI 找到相应的服务提供者完成网络通信。

基于winpcap的网络抓包系统

基于winpcap的网络抓包系统
在主程序 中,进行 H o o k函数 的调用 。 3 通过 S r e 2 im p和 B p S r a . c e n B ta m 2 t e m两个函数的应用 , 可实现程序 的屏幕抓取 。S r e2 im p可对 屏幕进行截取 , cenBta
术、多线程技术 、S C E O K T技术的应用 ,在 C/s模式中有效地 进行 计算 机的监控 。 客户端进行信息的收集 , 并将信息发送给 服务端,在完整的呈现给管理人员 , 整个过程都在监控系统 的 进行下有序 良好的进行 , 使管理人员在局域 网内能够实现正常 的管理和监测 ,进而促使 了计算机管理 的准确性和 高效性 。
dm f l = c p dm u p i ep a up
— — —
(n i n d c a 木 d m f l ) u s g e h r ) u p ie :
回调函数 ,用来处理数据包 木 /
v i a k t h n l r u c a * u p i e odpce l ade ( h r d m f ,

_
1 3 1 9 0端 口的数据 识别为 H T 17 、10 T P协议 。还有一种方法是 基 于正则表达式识别 , 通过大量 的统计分析 , 得到某种应用层 协议 的特 征表达式 ,然后利用正则表达式 匹配 引擎进行 识别。 它们 两者 各有 优缺点,基于端 口号的识别虽然效率 比较高 , 但 是对 于一些不常见的协议不容易识别 出来 。 而基于正则表达式 的识 别对 应用 层协议的识别范围 比较广 。 我们 的系 统结合了上述 这两种方法,利用各 自的优点 。 我 们 自己研 究出来一些协议的正则表达式 。 其对 D S的识别率 尤 N
… 刘海林, 陈世欣, 龚仕华. 于 HO K技术 的计算机监控 基 O

计算机网络技术与实验——数据包的捕获与分析

计算机网络技术与实验——数据包的捕获与分析

计算机⽹络技术与实验——数据包的捕获与分析计算机⽹络技术与实验——数据包的捕获与分析1. 实验介绍本次实验的⽬的在于学习WinPcap的使⽤⽅法,利⽤它捕获以太⽹中的数据包并进⾏简单的解析,最终使⽤MFC画界⾯,展⽰捕获后解析出来的信息。

2. 使⽤WinPcap + MFC进⾏数据包的捕获与分析2.1 WinPcap简单介绍WinPcap是⼀个开源的数据包捕获体系结构,它的主要功能是进⾏数据包捕获和⽹络分析。

它包括了内核级别的包过滤、低层次的动态链接库(packet.dll)、⾼级别系统⽆关的函数库(wpcap.dll)等。

在编写程序之前我们先按以下步骤配置好WinPcap的开发环境。

下载WinPcap并安装打开VS2015,新建->项⽬->MFC应⽤程序(基于对话框,经典菜单)在项⽬上,右键->属性⼯具->属性->项⽬和解决⽅案-> VC++⽬录->包含⽂件->添加WinPcap开发包中的Include⽬录⼯具->属性->项⽬和解决⽅案-> VC++⽬录->库⽂件->添加WinPcap开发包中的lib⽬录项⽬->项⽬属性->配置属性->预处理定义->添加WPCAP和HAVE_REMOTE项⽬->项⽬属性->配置属性->连接器->命令⾏->附加选项框中加⼊wpcap.lib在程序中要加⼊pcap.h头⽂件#include pcap.h2.2 WinPcap程序设计思路使⽤WinPcap捕获数据包⼀般有三个步骤:获取设备列表打开⽹络适配器在打开的⽹络适配器上捕获⽹络数据包2.2.1 获取设备列表在开发以WinPcap为基础的应⽤程序时,第⼀步要求的就是获取⽹络接⼝设备(⽹卡)列表。

这可以调⽤WinPcap提供的pcap_findalldevs_ex()函数,该函数原型如下:int pcap_findalldevs_ex(char * source; //指定从哪⼉获取⽹络接⼝列表struct pcap_rmauth auth; //⽤于验证,由于是本机,置为NULLpcap_if_t ** alldevs; //当该函数成功返回时,alldevs指向获取的列表数组的第⼀个//列表中每⼀个元素都是⼀个pcap_if_t结构char * errbuf //错误信息缓冲区);在上⾯注释中提到的pcap_if_t结构定义如下:struct pcap_if{struct pcap_if *next; //指向链表中下⼀个元素char *name; //代表WinPcap为该⽹络接⼝卡分配的名字char *description; //代表WinPcap对该⽹络接⼝卡的描述struct pcap_addr* addresses; //addresses指向的链表中包含了这块⽹卡的所有IP地址u_int flags; //标识这块⽹卡是不是回送⽹卡}2.2.2 打开⽹卡在获取设备列表之后,可以选择感兴趣的⽹卡打开并对其上的⽹络流量进⾏监听。

实验3:WinPcap技术的使用

实验3:WinPcap技术的使用

实验3:WinPcap技术的使用1实验目的和要求学习使用WinPcap开发包实现网络数据包的捕获、过滤和分析的功能,具体要求如下:1)WinPcap开发包的下载和安装;2)使用WinPcap获取与网络适配器绑定的设备列表;3)使用WinPcap获取网络适配器的高级属性信息;4)使用WinPcap打开网络适配器并实现抓包功能5)使用WinPcap过滤数据包、分析数据包。

2实验设备及材料1)Windows主机2)Visual Studio 2005或Visual Studio 20083实验内容本实验学习WinPcap开发包的使用,利用WinPcap实现网络数据包捕获、过滤和分析的功能,实验内容如下。

3.1 WinPcap开发包的下载和安装下载并安装WinPcap开发包,下载地址:/archive/。

1)4.1.1-WinPcap.exe的安装;2)4.1.1-WpdPack.zip的下载和使用。

3.2获取与网络适配器绑定的设备列表信息pcap_findalldevs_ex()函数的使用。

调用pcap_findalldevs_ex()函数,获取的网络设备信息将存储在结构体pcap_if_t中,然后打印网卡设备列表信息,包括网络适配器名称和描述。

3.3获取网络适配器的高级属性信息在3.2的基础上,除打印本地主机所有网络适配器的名称、描述外,还打印是否回环地址、协议簇类型、协议簇名称、IP地址、子网掩码、广播地址和目标地址等信息。

3.4打开网络适配器并通过事件处理器来捕获数据包pcap_open()函数和pcap_loop()函数的使用。

程序的运行过程如下:1)调用pcap_findalldevs_ex()函数获取并打印本机的网络设备列表。

2)要求用户选择用于捕获数据包的网络设备。

3)使用for语句跳转到选中的网络设备,以便在后面的程序中打开该设备,并在该设备上捕获数据。

4)调用pcap_open()函数打开选择的网络设备。

基于WINPCAP的GOOSE报文捕获分析工具开发

基于WINPCAP的GOOSE报文捕获分析工具开发

WINPCAP网络开发包是一个免费、基于Windows平台、访问网络链路层的工具,它允许各种应用程序绕过协议栈捕捉并传送网络数据包,同时还包括一些其他功能,如包过滤、网络流量统计以及远程捕获等。

基于这一开发包,可以方便地开发出面向通用对象的变电站事件(GOOSE)报文的捕捉工具,进而根据ASN.1/BER对报文进行解码并分析。

文中介绍了如何基于WINPCAP开发包开发一个完整的GOOSE报文捕获工具,以及整个的设计思路和实现过程,并提出了一些可能的应用。

0 引言当前,国内厂商对IEC 61850的开发工作已经从以制造报文规范(MMS)为核心的客户/服务器(C/S)服务实现转到面向通用对象的变电站事件(GOOSE)和IEC 61850-9-1/2的实现上来。

GOOSE通信及其应用是IEC 61850的一个亮点,其出发点是功能的分布式实现口],GOOSE应用的建立需要多方面配合,同时也是一个较为烦琐的工程。

在工程的调试过程中,对GOOSE报文的分析是一个必不可少的步骤,即检查数据发送是否正确及其时间特性。

因此,如果有一个简捷的工具来捕捉与分析IEC 61850报文,将会有助于工程调试的顺利进行。

WINPCAP(Windows packet capture)网络开发包是一个免费、基于Windows 平台、访问网络链路层的工业标准工具,它允许各种应用程序绕过协议栈捕捉并传送网络数据包,同时还包括一些其他功能,如包过滤、网络流量统计以及远程捕获等。

基于这一开发包,可以方便地开发出GOOSE报文的捕捉工具,进而根据ASN.1/BER对报文进行解码并分析。

本文介绍了如何基于WINPCAP开发包开发一个完整的GOOSE报文捕获工具,以及整个设计思路和实现过程,并提出了一些可能的应用。

希望能够为IEC 61850标准在中国的推广做出一些贡献。

1 WINPCAP简介1.1 内部结构WINPCAP是一个Win32平台下用于抓包和分析的系统,其基本构成如图1所示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于WinPcap的网络数据包捕获与分析一、WinPcap介绍1.WinPcap简介WinPcap是一个在Windows操作系统下的免费、公开的用于直接访问网络的开发工具包(编程API)。

大多数Windows网络应用程序都是通过Winsock API(Windows套接口)这类高级编程接口访问网络的。

这种方法允许在网络上进行简单的数据传送,因为操作系统的TCP/IP协议栈实现软件会处理底层细节(协议操作、流程重组等等),并提供一个类似于读写文件的函数接口。

然而,有时候“简便方法”并不能满足实际需要。

有些程序希望绕过TCP/IP协议栈,直接处理底层网络中的通信数据,它们需要对网络进行底层进行直接访问,即在没有类似协议栈(TCP/IP协议栈)的实体介入条件下对网络进行原始访问。

基于Winsock API编程,应用程序是通过调用操作系统提供的编程接口访问TCP/IP协议栈实现网络通信的。

基于WinPcap编程,网络程序实际上是绕开操作系统的TCP/IP协议栈直接通过底层网络发送数据,因此,网络程序可以实现一些更低级、更灵活的功能。

2.WinPcap的组成与结构如图 1.1,WinPcap由一个数据包监听设备驱动程序(NPF)、一个底层的动态连接库(packet.dll)和一个高层的不依赖于操作系统的静态库(wpcap.dll)共三个部分构成。

这里,NPF在操作系统的内核级,packet.dll、wpcap.dll在用户级。

1)数据包监听设备驱动程序Array技术实现上,为了实现抓包,系统必须绕过操作系统的协议栈来访问在网络上传输的原始数据包(rawpacket)。

这就要求WinPcap的一部分运行在操作系统核心内部,直接与网络接口驱动交互。

由于这个部分是系统依赖(system dependent)的,在Winpcap的解决方案中它被视为是一个设备驱动,称作NPF(Netgroup Packet Filter)。

图1.1 WinPcap的组成和结构2)底层的动态连接库(packet.dll)和高层静态库(wpcap.dll)为了方便编程,WinPcap必须提供一个编程接口(API),这就是WinPcap的底层的动态连接库(packet.dll)和高层静态库(wpcap.dll)。

这里,packet.dll提供了一个底层API,伴随着一个独立于Microsoft操作系统的编程接口,这些API可以直接用来访问驱动的函数;wpcap.dll导出了一组更强大的与libpcap一致的高层抓包函数库(capture primitives),这些函数使得数据包的捕获以一种与网络硬件和操作系统无关的方式进行。

底层动态链接库运行在用户层,它将应用程序和数据包监听设备驱动程序隔离开来,使得应用程序可以不加修改地在不同的WINDOWS系统上运行。

高级的静态链接库和应用程序编译在一起,它使用低级动态链接库提供的服务,向应用程序提供完善的监听接口。

3.WinPcap的基本原理抓包是WinPcap的基本功能,也是NPF最重要的操作。

在抓包的时候,驱动(例如NIC Driver)使用一个网络接口监视着数据包,并将这些数据包完整无缺地投递给用户级应用程序。

如图1.4,WinPcap的NPF抓包主要依靠两个组件。

1)数据包过滤器(filter)。

数据包过滤器决定是否接收进来的数据包并把数据包拷贝给监听程序。

数据包过滤器是一个有布尔输出的函数。

如果函数值是true,抓包驱动拷贝数据包给应用程序;如果是false,数据包将被丢弃。

NPF数据包过滤器更复杂一些,因为它不仅决定数据包是否应该被保存,而且还决定要保存的字节数。

被NPF驱动采用的过滤系统来源于BSD Packet Filter(BPF),一个虚拟处理器可以执行伪汇编书写的用户级过滤程序。

应用程序采用用户自定义的过滤器并使用wpcap.dll将它们编译进BPF程序。

然后,应用程序使用BIOCSETF IOCTL写入核心态的过滤器。

这样,对于每一个到来的数据包该程序都将被执行,而满足条件的数据包将被接收。

与传统解决方案不同,NPF不解释(interpret)过滤器,而是执行(execute)它。

由于性能的原因,在使用过滤器前,NPF提供一个JIT编译器将它转化成本地的80x86函数。

当一个数据包被捕获,NPF调用这个本地函数而不是调用过滤器解释器,这使得处理过程相当快。

2)循环缓冲区(Buffer)。

NPF的循环缓冲区用来保存数据包以免丢失(如果一个包符合过滤器的要求,就被复制到循环缓冲区)。

一个保存在缓冲区中的数据包有一个头,它包含了一些主要的信息,例如时间戳和数据包的大小,注意:它不是协议头。

另外,循环缓冲区以队列插入的方式来保存数据包,提高数据的存储效率。

程序员可以以组的方式将数据包从NPF 缓冲区拷贝到应用程序,这样就提高了性能,因为它降低了读的次数。

如果一个数据包到来的时候缓冲区已经满了,那么该数据包将被丢弃,这时就发生了丢包现象。

3)Network Tap 是一个用于探听网络中所有数据流的函数。

4)数据统计如图1.4,为了提高数据处理的速度,WinPcap 将统计和监听功能移到内核中,这样避免了将任何数据都传递给用户。

WinPcap 通过使用从NPF 中得到的过滤器来执行一个内核级的可编统计模块,这使其变成一个强大的分级引擎,而不只是个简单的包过滤器。

应用程序可以构造这个模块来监听网络活动的任意方面(例如:网络负荷、两台主机间的流量、每秒web 请求的次数等等),并在预定的时间间隔内接收内核传来的数据。

统计模式避免了复制数据包并且执行0-copy 机制(当包仍存放在NIC (网络接口卡)驱动的内存中时开始进行统计,随后丢弃这个包)。

而且,环境转换的次数可以保持最低,这是因为结果通过一次系统调用就可以返回给用户。

它不需要缓冲区(内核或用户),因此图1.4 Wincap 的内部结构和原理基于Winpcap 的监控程序 packet.dll wpcap.dll NIC Driver (NDIS3.0或更高) 核心层 网络层 数据包 基于Winpcap 的应用程序1Filter1 Filter2 Filter3 … Buffer1 Buffer2 统计引擎 Network Tap TCP/IP 协议栈 其他协议栈实现 User- Buffer1 User- Buffer2 基于Winpcap的应用程序2 NPF调用packet.dll API 的程序 直接访问 NPF 的程序 用户层当监听开始时不用为它分配内存。

可见,统计模式是一种很有效的网络监听方式,在高速网络中利用libpcap来工作也没任何问题。

WinPcap为程序员提供了一套系统调用和高层函数来进行网络监听,这使得已经知道libpcap API的程序员能很容易使用。

5)构造数据包BPF和NPF都提供了构造包的函数,使用户可以将原始数据包发送到网络中。

然而,Unix程序员一般不用libpcap提供的这些函数,因为在Unix平台上,应用程序可以使用原始套接字来发送伪造的数据包。

在Windows环境下,只有Windows2000提供了原始套接字,而且非常有限。

因此在Windows环境下,WinPcap就成为首选的构造数据包的函数库,它提供了一套标准稳定的函数。

另外,NPF增加了一些新的函数,这些函数可以使数据包通过一次用户和内核模式之间的转换就发送几次。

数据复制到内核中,然后通过调用一次NDIS 将包发送到网络中。

尽管WinPcap提供了一套新的函数来开发这些特性,但它没有提供那些强大的创建数据包的抽象函数,这需要通过其它现有的工具来实现。

程序员可以利用著名的Libnet Packet Assembly Library的Windows版本实现,这个函数库增加了数据包结构层并在WinPcap上构造数据包。

二、基于Winpcap的数据包捕获与分析程序开发流程1.程序分析本课程设计采用VC++,基于应用程序Winpcap来实现数据包的捕获与分析。

界面采用MFC实现一个单文档的程序,用户区分为左右两个视图,左边视图是一个列表,显示捕获数据包的简要信息,右边视图是一个树形图,显示选中数据包的详细信息。

由菜单项中的按钮触发操作,同时改进了程序自带的保存、另存为等图标,成功加上了自己的图标,并与按钮ID相匹配。

这个程序基本实现了预期功能,下面是程序开发的过程。

2.建立工程在VC++ 6.0下创建一个单文档的MFC应用程序,工程名:Sniffer,如图2.1->图2.2->图2.3。

图2.1 建立工程图2.2 选中单文档图2.3 自动生成的类列表到/devel.htm下载WinPcap 4.0.2.zip,然后解压,解压缩就可以看见Include和lib;在"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文件夹。

3.界面设计工程建好了,下面进行界面的设计:首先,对菜单栏进行修改,去掉原来单文档所自带的“文件”、“编辑”菜单选项,保留“查看”和“帮助”,新建“文件”,下面有“开始抓包(ID_FILE_START)”、“停止抓包(ID_FILE_STOP)”、“退出(ID_APP_EXIT)”三个菜单选项。

再建“适配器”菜单,下面有“选择适配器(ID_ADP_CHOOSE)”选项,并对每个新建的选项进行注释说明。

如图2.4:图2.4 菜单栏然后,打开Sniffer.rc文件,对工具栏进行修改。

自做了一个工具栏图片Toolbar1.bmp来代替原来工程的Toolbar.bmp,然后将多余的复制粘贴等工具按钮信息删除掉,回到界面处,再对每个按钮图标进行ID设置。

如图:,从左向右依次是:开始抓包、停止抓包、选择适配器、帮助图标按钮。

最后,新建一个选择适配器的基本对话框,ID标识为IDD_ADP_DIALOG,双击此对话框新建一个类:CAdpterDlg。

相关文档
最新文档