第9章Winpcap与开发剖析.ppt

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Windows平台下的包捕获技术 虽然Unix 平台上的BSD 包截获系统提供了一组供应用程序直接调用的网络数据包截获函数,允许应用程序与网卡间直接进行交互, 但在Win32 平台上, 目前主要使用WinPcap 体系结构。 WinPcap 是基于Win32 平台的网络包截获和分析的系统,它具有丰富的网络数据包处理函数,其功能比BSD 包截获系统更强,如“包监视”和“包发送”等功能函数在早先的Unix 平台上是不具备的。 WinPcap是一个重要的抓包工具,它是libpcap的Windows版本。是一个免费公开的软件系统。它用于windows系统下的直接的网络编程。 网络与协议分析器 (network and protocol analyzers) 网络监视器 (network monitors) 网络流量记录器 (traffic loggers) 网络流量发生器 (traffic generators) 用户级网桥及路由 (user-level bridges and routers) 网络入侵检测系统 (network intrusion detection systems (NIDS)) 网络扫描器 (network scanners) 安全工具 (security tools) Winpcap有些方面不能做: 它不依靠主机的诸如TCP/IP协议去收发数据包。这意味着它不能阻塞,不能处理同一台主机中各程序之间的通信数据。它只能“嗅探”到物理线路上的数据报。因此它不适用于traffic shapers,QoS调度,以及个人防火墙。 WinPcap WinPcap包括三个部分 第一个模块:内核级的包过滤驱动程序 NPF(Netgroup Packet Filter),是一个虚拟设备驱动程序文件, 是架构的核心(在Win95/98 中是一个VXD文件,在NT/2000 中是一个SYS 文件) ,它的主要功能是过滤数据包,在包上附加时间戳、数据包长度等信息。 第二个模块:低级动态链接库packet.dll,在Win32 平台上提供了与NPF 的一个通用接口。 packet.dll数据包驱动程序库是与libpcap 相兼容的一组用户级的函数库。 第三个模块:用户级的Wpcap.dll。通过调用packet.dll 提供的函数生成,它包括了过滤器生成等一系列可以被用户级调用的高级函数,另外还有诸如数据包统计及发送功能。 WinPcap体系结构 Packet.dll相关的数据结构 typedef struct _ADAPTER *LPADAPTER 描述一个网络适配器。 它包含了两个域: HANDLE hFile TCHAR SymbolicLink hFile是一个指向驱动器句柄的指针。通过该句柄,我们可以直接与驱动器进行通信,如接收或发送数据包。SymbolicLink是一个字符串,它包含了当前打开的网络适配器的名称。 Packet.dll相关的数据结构 typedef struct _PACKET *LPPACKET 描述一组网络数据包的结构。 它包含了以下几个域: OVERLAPPED OverLapped PVOID Buffer UINT Length PVOID ulBytesReceived BOOLEAN bIoComplete OverLapped是用来处理对驱动器的异步调用。Buffer是用来指向缓存的指针,该缓存包含了数据包的数据。Length是该缓存区的大小。而ulBytesReceived表明了该缓存中包含的有效数据的大小。BIoComplete是在异步调用中用来表示该Packet是否包含有效的数据。 Packet.dll相关的数据结构 struct bpf_hdr 数据报头部。 它包含以下几个域: struct timeval bh_tstamp UNIT bh_caplen UNIT bh_datalen USHORT bh_hdrlen bh_tstamp是一个时间戳,它包含两个域:tv_sec和tv_usec,用来表示报文的捕获时间。bh_caplen是封装报文后的报文长度。bh_datalen是原始报文长度。bh_hdrlen是封装报文的报头长度。 Packet.dll相关的数据结构 typedef struct NetType NetType 描述网络类型的数据结构。 typedef struct npf_if_addr npf_if_addr 描述一个网络适配器的ip地址。 Struct bpf_stat 当前捕获数据报的

文档评论(0)

花仙子 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档