WinPcap是Windows平台下的专业网络数据包捕获开发包,是为Libpcap在Windows平台下实现数据包的捕获而设计的。在设计WinPcap时参照了Libpcap.使用方法与LibPcap相似。使用WinPcap开发包,可以很容易地把在Linux下开发的基于Libpcap的程序移植到Windows平台下。WinPcap是在BSD许可证下发布的,主要由Lawrence Berkeley Laboratory开发。
构成
W/nPcap由3个模块构成。第个模块N P F(Netgroup Packet Filter)是一个虚拟设备驱动程序文件,它的功能是过滤数据包,并把这些数据包原封不动地传给用户态模块,这个过程包括了一些操作系统特有的代码。第二个模块packret .dll是一组用户级的函数库,为Win32平台提供一个公共的接口。不同版本的Windows系统都有自己的内核模块和用户层模块,Packet.dll用于解决这些不同。调用Packet.dll的程序可以运行在不同版本的Windows平台上,而无需重新编译。第三个模块数据包高级驱动程序库(wpcap.dll)与操作系统无关,它提供了更加高层、抽象的函数,含有诸如产生过滤器、用户级缓冲等高级功能。
核心过程
1. 获得网卡的名称。
2.设置网卡为混杂模式。
3.截获数据包并保存为文件。
4.分析数据包,格式化输出。
代码分析
注意事项
1、为了导入wpcap.dll,每个程序必须包含pcap.H。
2、必须包含wpcap.Iib库,否则无法链接成功。
3、添加WPCAP和HAVE_REMOTE预定义。这很重要,否则会编译失败。
4、有时我们也需要添加winsock2.h和ws2_32.lib库。