基于WinPcap旁路IP阻断方法研究与实现.docVIP

基于WinPcap旁路IP阻断方法研究与实现.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于WinPcap旁路IP阻断方法研究与实现

基于WinPcap旁路IP阻断方法研究与实现   摘要:在审计系统中,需要阻止一些非法主机和子网的连接。基于WinPcap的网络开发包,捕获流经网卡的数据包,解析以太网数据包,并对那些非法主机进行阻断。利用hash表实现快速插入和查询功能,提高了数据包的处理速度和效率,在实际中得到很好的应用。   关键词:非法阻断;包捕获;哈希表;ARP欺骗      引言      随着Internet的迅猛发展,网络安全的形势更加严峻,迫切需要行之有效的网络安全保障系统。在网络安全审计系统中需要对那些产生危害的主机进行隔离,断开其和子网的连接。本文论述了在Win32环境中利用WinPcap捕获流经网卡的数据包,对那些非法主机采用ARP欺骗实施有效阻断。      1 用WinPcap捕获数据包      1.1 WinPcap简介   WinPcap是由伯克利分组捕获库派生而来的分组捕获库,它是在Windows操作平台上来实现对底层包的截取过滤。采用WinPcap进行开发与使用Winsock相比,WinPcap具有很多优点。WinPcap是独立于网络协议的,可以分析处理所有网络设备接收的数据。此外WinPcap的标准抓包接口与libpcap兼容,使系统便于向UNIX平台移植。而且WinPcap具有发送ARP数据包的能力。   WinPcap的体系结构如图1所示。第1个模块NPF(netgroup packet filter)是一个虚拟设备驱动程序文件,它的功能是过滤数据包,并把这些数据包原封不动地传给用户态模块。第2个模块Packet.dll为win32平台提供了一个公共的接口,不同版本的Windows系统都有自己的内核模块和用户层模块。Packet.dll用于解决这些不同,调用Packet.dll的程。      序可以运行在不同版本的Windows平台上,而无需重新编译。第3个模块Winpcap.dll是不依赖于操作系统的,它提供了更加高层、抽象的函数。WinPcap提供了一套标准的抓包接口,充分考虑了各种性能和效率的优化,包括对于NPF内核层次上的过滤器支持,支持内核态的统计模式,提供了发送数据包的能力。   1.2基于WinPcap的抓包流程   在 Windows平台下使用WinPcap很容易开发出基于原始数据包的各种网络应用软件。一般情况下,我们都用winpcap.dll提供的函数,因为它的功能更强,使用也更方便。   (1)开启指定网卡。WinPcap提供了pcap_findalldevs()这个函数来获取当前机器上所配置网络接口的内容,接口的全部信息都保存在pcap_if结构的链表中,链表的每项内容含有全面的网卡信息。pcap_open_live()是专门用于打开指定网卡设备的,第3个参数如果设置为1,则代表将网卡设置为混杂模式,同时该函数如果调用成功,则返回指定网卡的操作句柄。   (2)设置过滤规则。用户可以根据需要设置相应的过滤条件,例如只接收UDP或TCP数据包,实现过滤规则的设置关键是对pcap_compile()和pcap_setfilter()两个函数进行正确的配置。   (3)捕获网络数据包。WinPcap提供了几种捕包函数以适应不同的情况,例如pcap_dispatch()每捕获一个数据包就调用一次callback函数。callback它是一个带有三个参数的回调函数。Pcap_loop()功能基本与pcap_dispatch()函数相同,只不过该函数在cnt个数据包被处理或出现错误时才返回,但读取超时不会返回,它在没有数据流到达时将阻塞。在回调函数中就可以对所捕获的数据包进行解析。   1.3数据包的解析   利用WinPcap库捕获的数据帧其实是经过传输层、网络层和数据链路层的封装而生成的太网数据帧,因此可以对数据帧作进一步解析,该过程在回调函数中完成。   以太网数据帧由报头和数据区组成,在以太网帧的报头中包含目地址端及源地址,通常抓到的数据包已经去掉了同步码和桢分界符。在具体编程实现中,可以定义以太网数据帧数据结构描述。   根据类型字段type可以判断是那种数据包。常用的有:0x0800表示IP数据包,0x0806表示ARP数据包。通过对回调函数的第三个参数类型转换后,可以获得源/目的MAC地址。简要代码如下:   ETHHDR *dlcheader;   dlcheader=(ETHHDR *)pkt_data;   memcpy(srcmac,(char*)(dlcheader-src[0]),6);   memcpy(destmac,(char*)(dlcheader-dst[0]),6);   同样根据IP数据包结构可以构造IP数据

文档评论(0)

erterye + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档