WinPcap是Windows平台下一个专业网络数据包捕获开发包,是为Libpcap在Windows平台下实现数据包的捕获而设计的。在设计WinPcap时参照了Libpcap,使用方法与LibPcap相似。使用WinPcap开发包,可以把在Linux下基于Libpcap的程序很容易地移植到Windows平台下。WinPcap是在BSD许可证下发布地,它主要由加利福尼亚地Lawrence Berkeley Laboratory开发。WinPcap地下载网址为:http://winpcap.polito.it/ 。目前有不少软件都使用了WinPcap开发包,其中最为著名的是Ethereal。它是一个免费的网络协议分析软件,其对数据包解析的细致程度甚至高于业界著名的Sniffer和WildPackets;
WinPcap有三个模块构成:
第一个模块NPF(Netgroup Packet Filter),是一个虚拟设备驱动程序文件。它的功能是过滤数据包,并把这些数据包原封不动地传给用户态模块,这个过程中包括了一些操作系统特有的代码。
第二个模块packet.dll是一组用户级的函数库,为win32平台提供了一个公共的接口。不同版本的Windows系统都有自己的内核模块和用户层模块。Packet.dll用于解决这些不同。调用Packet.dll的程序可以运行在不同版本的Windows平台上,而无需重新编译。
第三个模块数据包高级驱动程序库(wpcap.dll)与操作系统无关,它提供了更加高层、抽象的函数,含有诸如产生过滤器,用户级缓冲等高级功能。
Libnet是一个专业的网络数据包构造和发送开发包,它是一个高层次的API函数库,允许开发者构造和发送网络数据包。Libnet提供了一个对底层网络数据包进行构造、修改和发送的高级接口。它隐藏了很多底层细节,省去了很多麻烦,如多路技术、缓冲区管理、网络数据包头信息、字节流顺序、操作系统兼容性,以及校验和计算问题等。Libnet主要提供了在IP层和链路层构造网络数据包的功能和一些非常有用的辅助功能。使用Libnet可以非常轻松、快捷地构造任何形式的网络数据包,开发各种各样的网络安全应用程序,甚至非常复杂的程序。Libnet主要用C语言写成,提供了低层网络数据报的构造、处理和发送功能.他的主要特点是:
.高层接口:Libnet主要用C语言写成
.数据报构造:Libnet提供了一系列的TCP/IP数据报文的构造函数以方便用户使用。
.数据报的处理:Libnet提供了一系列的辅助函数,利用这些辅助函数,帮助用户简化那些烦琐的事务性的编程工作
.数据报发送:Libnet允许用户在两种不同的数据报发送方法中选择。
另外Libnet允许程序获得对数据报的绝对的控制,其中一些是传统的网络程序接口所不提供的。
Libnet提供两种将数据报发送到网络的接口:原始套接字(raw socket)接口和链路层(Link Layer)接口。本文选取的是链路层接口进行设计的。