WinPcap编程
WinPcap是一个开源的、运行于Win32平台下的体系结构,它的主要功能是进行数据包捕获和网络分析。它允许应用程序通过协议栈捕获和传输网络数据包,也包括内核级别的数据包过滤、网络静态引擎和支持远程数据包捕获等有用的功能。
WinPcap由两部分组成:
1. 驱动程序: 扩展操作系统功能提供低层次的网络访问
2. 动态链接库:运行在Win32平台上的应用程序可以非常方便地访问网络低层次的数据。
Ethereal是大名鼎鼎的捕获数据包专业软件,它的运行是在WinPcap的支持之下的,如果没有安装WinPcap,Ethereal也无法正常捕获数据包。
在正式WinPcap编程之前,要配置运行环境。
Win32 平台下WinPcap应用程序需要以下四个动态链接库才能正常运行:
wpcap.dll
Packet.dll
WanPacket.dll
pthreadVC.dll
这四个动态链接库在
WinPcap驱动程序里。
如果没有这个驱动程序,需要到
WinPcap官方网站上下载,下载地址为:www.WinPcap.org
如果应用程序出现一下提示,那就是没有安装驱动程序的原因了。
![](https://p-blog.csdn.net/images/p_blog_csdn_net/liganglover888/a.bmp)
![](https://p-blog.csdn.net/images/p_blog_csdn_net/liganglover888/ad.bmp)
也可以不安装
WinPcap驱动程序。但是需要把上面提到的四个动态链接库文件拷贝到系统分区/WINDOWS/system32目录下
或者
接下来配置编程环境。
如果一个源文件使用了WinPcap提供的库函数,那么就需要在该文件开始的位置添加pcap.h包含文件(或者在引用的文件中),即#include “pcap.h”
也许会出现下面的错误:
fatal error C1083:
无法打开包括文件:“pcap.h”: No such file or directory
这个错误表明找不到
pcap.h文件
这个头文件在驱动程序安装完成后也是没有的,它是开发包里面的一个头文件
所以,如果要运行程序还需要到官方网站上去下载WinPcap SDK―
WpdPack
WinPcap SDk里面包含库文件,头文件,文档文件和一些例子。
解压缩后把Include目录添加到IDE的包含文件中(VC6.0 Tools->Option->Directory; VS 2003/2005 工具->选项->项目和解决方案/项目->VC++目录)
error LNK2019:
无法解析的外部符号_pcap_findalldevs_ex,该符号在函数XXX 中被引用
如果发生上面的错误就表明缺少库文件,需要添加
wpcap.lib到工程中(VC6.0 Project->Settings->Link->Object/library modules; VS 2003/2005 项目->添加现有项->所有文件)
error C2065:
“PCAP_SRC_IF_STRING”: 未声明的标识符
error C3861:
“pcap_findalldevs_ex”: 找不到标识符
error C2065:
“PCAP_OPENFLAG_PROMISCUOUS”: 未声明的标识符
error C3861:
“pcap_open”: 找不到标识符
新的版本里WinPcap支持远程数据包获取,发生上面的错误很有可能是新的版本导致不兼容的问题,所以还应当添加一个头文件remote-ext.h ,即
#include "remote-ext.h"
如果还有问题,可以到
WinPcaP官方网站上找FAQ。
一般情况下应该没有问题了。接下来,开始动手做抓包分析吧。