日期:2014-05-16 浏览次数:20498 次
//技术手册:http://www.ferrisxu.com/WinPcap/html/index.html
|
? |
Winpcap配置编程环境:
安装Winpcap,接着:
1> 从WWW.WINPCAP.ORG
上下载WINPCAP SDK -WpdPack,WinPcap SDk 里面包含库
文件,头文件,文档文件和一些例子。解压到一个指定的目录。解压缩后把Include 目录添
加到IDE 的包含文件中(VC6.0 Tools->Option->Directory; VS 2003/2005/2008 工具->选项->项目
和解决方案/ 项目->VC++ 目录); lib 目录添加为新的库文件目录( VC6.0
Tools->Option->Directory; VS 2003/2005/2008 工具->选项->项目和解决方案/项目->VC++目录);
添加wpcap.lib和ws2_32.lib(工程属性->链接器->输入->附加依赖项)
?
2> 如果一个源文件使用了WinPcap 提供的库函数,那么就需要在该文件开始的位置添加
pcap.h 包含文件(或者在引用的文件中),即#include “pcap.h”
也许会出现下面的错误:
fatal error C1083: 无法打开包括文件:“pcap.h”: No such file or directory
这个错误表明找不到pcap.h 文件,这个头文件在驱动程序安装完成后也是没有的,它是开
发包里面的一个头文件,所以,如果要运行程序还需要到官方网站上去下载WinPcap SDK,
并按步骤1 添加到项目中。
3> 在程序中添加wpcap.lib。如果出现下面错误
error LNK2019: 无法解析的外部符号_pcap_findalldevs_ex,该符号在函数XXX 中被引用,
如果发生上面的错误就表明缺少库文件, 需要添加wpcap.lib 到工程中(VC6.0
Project->Settings->Link->Object/library modules; VS 2003/2005/2008 项目->添加现有项->所有文件)
?
4> 新的版本里WinPcap 支持远程数据包获取,所以还应当添加预处理定义WPCAP和HAVE_REMOTE
添加时注意必须以如下图的格式为好:
否则会发生下面的错误
error C2065: “PCAP_SRC_IF_STRING”: 未声明的标识符
error C3861: “pcap_findalldevs_ex”: 找不到标识符
error C2065: “PCAP_OPENFLAG_PROMISCUOUS”: 未声明的标识符
error C3861: “pcap_open”: 找不到标识符
5> 如果还有问题,可以到WinPcaP 官方网站上找FAQ。
?
?
snaplen:需要保留的数据包的长度。对每一个过滤器接收到的数据包,第一个‘snaplen’字节的内容将被保存到缓冲区,并且传递给用户程 序。例如,snaplen等于100,那么仅仅每一个数据包的第一个100字节的内容被保存。简言之就是从每一个包的开头到snaplen的那段内容将被 保存。
flags:保存一些由于抓包需要的标志。Winpcap定义了三种标志:
l?????????PCAP_OPENFLAG_PROMISCUOUS:1,它定义了适配器(网卡)是否进入混杂模式(promiscuous?mode)。
l?????????PCAP_OPENFLAG_DATATX_UDP:2,它定义了数据传输(假如是远程抓包)是否用UDP协议来处理。
l????????