Winpcap的网络嗅探器的设计与实现提供大家参考
第6期 成 俊 李 芳:基于Winpcap的网络嗅探器的设计与实现
23
性。Winpcap的主要功能在于独立于主机协议
(如TCP/IP)而发送和接收原始数据包。
3 网络嗅探器总体设计
网络嗅探器的整体结构按功能分为3个部分,自底向上分别是数据捕获模块、协议解析模块和用户显示模块。网络嗅探器的总体结构如图1所示
。
2 网络嗅探器的基本原理
网络嗅探器是一种常用的网络数据收集软件,简单地说,它是在广播式网络环境下利用计算机网络接口截获目的地为其它计算机的数据报文的一种工具。
在以太网中,信息是以明文的形式在网络上传输
[2]
,当将网络适配器设置为混杂模式时,由于
采用以太网广播信道争用的方式,使得监听系统与正常通信的网络能够并联连接,并可以捕获任何一个在同一冲突域上传输的数据包。
IEEE802.3标准的以太网采用的是持续CSMA的
方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点可以获得其他站点发送的数据。运用这一原理使信息捕获系统能够拦截我们所要的信息,这是捕获数据包的物理基础。首先,络上传输的原始数据包,分运操作系统核心络接动交互。这个部分是系的,Winpcap的解决方案里它被认为是一个设备驱动,称作NPF(Netgroup
PacketFilter)。
Winpcap提供了两个不同的库:Packet.dll和Wpcap.dll。Wpcap.dll提供了更加友好、功能更加
图1 数据捕获模块的主要功能是进行数据采集,这是整个系统的基础和数据来源。程序使用Win2
pcap来捕获网络中原始数据包。具体数据包捕获
流程如图2所示
[3]
。
强大的函数调用。WinPcap的优势在于提供了一套标准的抓包接口,与libpcap兼容,可使得原来许多UNIX平台下的网络分析工具快速移植过来,便于开发各种网络分析工具,充分考虑了各种性能和效率的优化,包括对于NPF内核层次上的过滤器支持,支持内核态的统计模式,提供了发送数据包的能力。前者提供了一个底层API,伴随着一个独立于Microsoft操作系统的编程接口,这些
API可以直接用来访问驱动的函数;后者导出了
图2 数据包捕获流程图
一组更强大的与libpcap一致的高层抓包函数库
(captureprimitives)。这些函数使得数据包的捕获
以一种与网络硬件和操作系统无关的方式进行。
网络嗅探器工作在网络环境的底层,拦截所有正在网络上传送的数据,并且通过相应的解析处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体拓扑布局。
4.1 获得本地网络驱动器列表
获取一个已经绑定的网卡列表,然后Winpcap对捕获网络数据端口进行设定。
通过pcap引擎找出并设定监听的网络接口。Winpcap提供了pcap_findalldevs_ex()函数,这个函数返回一个指向pcap_if结构的链表,其中的每一项都包含了一个己经绑定的适配器(网卡)的全部信息。其中name和description这两项分别包