使用Winpcap示例程序的时候解疑_第1页
使用Winpcap示例程序的时候解疑_第2页
使用Winpcap示例程序的时候解疑_第3页
使用Winpcap示例程序的时候解疑_第4页
使用Winpcap示例程序的时候解疑_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

使用Winpcap示例程序的时候,会出现很多错误(转)WINPCAP编程环境设置2008-05-1912:41一、WINPCAP编程环境设置在正式WinPcap编程之前,要配置运行环境。1、运行环境设置Win32平台下WinPcap应用程序需要以下四个动态链接库才能正常运行:wpcap.dllPacket.dllWanPacket.dllpthreadVC.dll这四个动态链接库在WinPcap驱动程序里。如果没有这个驱动程序,需要到WinPcap官方网站上下载,下载地址为:www.WinP如果应用程序出现一下提示,那就是没有安装驱动程序的原因了。也可以不安装WinPcap驱动程序。但是需要把上面提到的四个动态链接库文件拷贝到系统分区/WINDOWS/system32目录下。(似乎有些问题)2、配置编程环境。1>从WWW.WINPCAP.ORG上下载WINPCAPSDK-WpdPack,WinPcapSDk里面包含库文件,头文件,文档文件和一些例子。解压到一个指定的目录。解压缩后把Include目录添加到IDE的包含文件中(VC6.0Tools->Option->Directory;VS2003/2005工具->选项->项目和解决方案/项目->VC++目录);lib目录添加为新的库文件目录(VC6.0Tools->Option->Directory;VS2003/2005工具->选项->项目和解决方案/项目->VC++目录)如下图所示。

2>如果一个源文件使用了WinPcap提供的库函数,那么就需要在该文件开始的位置添加pcap.h包含文件(或者在引用的文件中),即#1nclude"pcap.h”也许会出现下面的错误:fatalerrorC1083:无法打开包括文件:"pcap.h”:Nosuchfileordirectory这个错误表明找不到pcap.h文件,这个头文件在驱动程序安装完成后也是没有的,它是开发包里面的一个头文件,所以,如果要运行程序还需要到官方网站上去下载WinPcapSDK,并按步骤1添加到项目中。3>在程序中添加wpcap.lib。如果出现下面错误errorLNK2019:无法解析的外部符号_pcap_findalldevs_ex,该符号在函数XXX中被引用,如果发生上面的错误就表明缺少库文件,需要添加wpcap.lib到工程中(VC6.0Project->Settings->Link->Object/librarymodules;VS2003/2005项目->添加现有项->所有文件)如下图所示:

4>新的版本里WinPcap支持远程数据包获取,所以还应当添加一个头文件remote-ext.h,ip#include"remote-ext.h"(记住这条语句要放在#include"pcap.h”之后,否则会出错!)否则会发生下面的错误errorC2065:“PCAP_SRC_IF_STRING”:未声明的标识符errorC3861:"pcap_findalldevs_ex":找不到标识符errorC2065:“PCAP_OPENFLAG_PROMISCUOUS”:未声明的标识符errorC3861:"pcap_open":找不到标识符5>或者不用添加#inelude"remote-ext.h".在VC.NET提供的IDE环境中,可以通过执行“项目”菜单中的的“属性”进入该项目的属性配置页,通过选择"配置属性”树中的“C/C++预处理哭选项就增加'WPCAP和'HAVE_REMOTE'两个标号。如下图所示:6>如果还有问题,可以到WinPcaP官方网站上找FAQ。二、WINPCAP编程入门利用WINPCAP捕获数据包一般要经过以下几个步骤1、获取网络接口列表通常,一个基于WinPcap的应用程序所要做的第一件事,就是获得适合的网络接口的列表.pcap_findalldevs()(或者pcap_findalldevs_ex())函数就是干这活的:这个函数返回一个pcap_if结构的列表,每个元素都记录了一个接口的信息.其中,name和description以人类可以阅读的形式,记录了设备的信息.2、获取设备的高级信息WinPcap也可以为我们提供关于接口的更多信息.由pcap_findalldevs()函数返回的pcap_if结构也包含了一个pcap_addr结构的列表,它记录了以下信息:接口的地址列表接口的掩码列表(与地址列表对应)接口的广播地址列表(与地址列表——对应)目标地址列表(与地址列表对应)3、打开一个接口并捕捉流量现在我们已经知道如何获取一个接口的有关信息了,我们可以来点真家伙了--打开一个接口并捕捉流量.接下来我们会编译一个程序,它将捕捉网络中所有的数据包并输出他们的一些相关信息。我们使用函数pcap_open_live()来打开一个捕捉设备.这里,我们需要解释一下snaplen,promisc和to_ms参数.函数原型:pcap_t*pcap_open_live(char*device,intsnaplen,intpromisc,intto_ms,char*ebuf)"snaplen"参数指定了要捕捉的数据包的部分.在某些操作系统中(如xBSD和Win32),驱动程序提供了只捕捉每个数据包其中一部分的可能性:这样就降低了要处理的数据的量,从而提高了捕捉程序的效率.在例子中,我们使用一个高出MTU最大值的值(65536)以确保可以捕捉到成个数据包."promise"=1表明接口将会被设置为混杂模式.一般情况下,接口只处理目标地址为自己的数据;到其他主机的数据包将会被忽略.然而当一个接口处于混杂模式时,它将会处理全部的流量:也就是说,在共享媒介,例如非交换型以太网(比如基于集线器的网络)中,WinPeap可以捕捉到所有主机的数据包.混在模式是多数捕捉程序的默认模式,所以我们在例子中也采用这种模式."to_ms"用以设置超时,单位是毫秒.一个从接口读取(Y-捕捉)的操作,(例如pcap_dispatch()或者pcap_next_ex()),如果没有捕捉到数据包,那么在超过指定的时间以后就会返回.进一步说,如果接口处在静态模式中,to_ms也定义了静态报告的间隔时间(参阅"GatheringStatisticsonthenetworktraffic"以获取更多信息).设置to_ms为0,则说明永远不会超时,如果没有数据包到达,那么捕捉操作将会永远不会返回,而将其值设置为-1则会立刻返回.以上取与网络中的环境配置。事实上还有许多错误,需要解决。如:错误3errorC3163:“_vsnprin属性与以前的声明不一致d:\programfiles'microsoftvisualstudio9.0\vc\include'stdio.h358iflist有人说解决办法是这个:"VC9CRT的vsnprintf与其他第3方定义的冲突,导致VS2008编译错误"errorC3163:'_vsnprintf':attributesinconsistentwithpreviousdeclaration比如wpdpack\include\pcap-stdinc.h定义了,要注释掉〃#definevsnprintf_vsnprintf或#if_MSC_VER<1500#definesnprintf_snprintf#definevsnprintf_vsnprintf#endif但是并没有发现可以解决问题。最后解决办法是这个:没这么麻烦!既然PCAP.h包的stdio.h的头文件有问题,就先把stdio.h包进来。亠【、'-1^.IV-就这样:#inelude<stdio.h>#ineludevpcap.h>不是头文件有问题,只是winpcap对系统的stdio.h进行了重定议,两个版本间出现了一点小小的磨擦.4、有时即便是按上面的方法都做了也解决不了,比如我这次就是还出现下面的问题:错误3errorLNK2019:无法解析的外部符号_pcap_loop,该符号在函数_wmain中被引用错误8errorLNK2019:无法解析的外部符号_pcap_freealldevs,该符号在函数_wmain中被引用但是我用了下面的语句即可解决了:#pragmacomment(lib,"wpcap.lib")5、如果出现下面的问题:错误3errorLNK2019:无法解析的外部符号__imp__ntohs@4,

温馨提示

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

评论

0/150

提交评论