调用winpcap驱动写arp多功能工具1.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
详谈调用winpcap驱动写arp多功能工具 详谈调用winpcap驱动写arp多功能工具 一 winpcap驱动简介 二 Packet.dll相关数据结构及函数 三 T-ARP功能及原理介绍 四 T-ARP主要代码分析 五 T-ARP源代码 一)winpcap驱动简介 winpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统。开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。它提供了以下的各项功能: 1 捕获原始数据报,包括在共享网络上各主机发送/接收的以及相互之间交换的数据报; 2 在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉; 3 在网络上发送原始的数据报; 4 收集网络通信过程中的统计信息。 winpcap的主要功能在于独立于主机协议(如TCP-IP)而发送和接收原始数据报。也就是说,winpcap不能阻塞,过滤或控制其他应用程序数据报的发收,它仅仅只是监听共享网络上传送的数据报。因此,它不能用于QoS调度程序或个人防火墙。 目前,winpcap开发的主要对象是windows NT/2000/XP,这主要是因为在使用winpcap的用户中只有一小部分是仅使用windows 95/98/Me,并且M$也已经放弃了对win9x的开发。因此本文相关的程序T-ARP也是面向NT/2000/XP用户的。其实winpcap中的面向9x系统的概念和NT系统的非常相似,只是在某些实现上有点差异,比如说9x只支持ANSI编码,而NT系统则提倡使用Unicode编码。 本文讨论的是packet.dll所提供的各种函数,因为它们完全可以实现本文所希望的各项要求。但是如果你有其他特别的或更高级的要求,winpcap也提供了另一个动态连接库wpcap.dll。虽然wpcap.dll依靠于packet.dll,但是它却提供了一种更简单,直接,有力的方法来更好的利用编程环境。比如捕获一个数据报,创建一个数据报过滤装置或将监听到的数据报转存到某个文件等,wpcap.dll都会为你提供更加安全的实现方法。 二)Packet.dll相关数据结构及函数 本文的目的之一在于介绍如何利用winpcap驱动写ARP工具,因此有必要介绍一些相关的数据结构和函数,要不然看着一行行代码和函数,也许会有些不知所云。 首先介绍一些相关的数据结构: 1. typedef struct _ADAPTER ADAPTER //描述一个网络适配器; 2. typedef struct _PACKET PACKET //描述一组网络数据报的结构; 3. typedef struct NetType NetType //描述网络类型的数据结构; 4. typedef struct npf_if_addr npf_if_addr //描述一个网络适配器的ip地址; 5. struct bpf_hdr //数据报头部; 6. struct bpf_stat //当前捕获数据报的统计信息。 下面,将介绍T-ARP用到的各个函数,他们都是在packet.dll中定义的: 1 LPPACKET PacketAllocatePacket(void) 如果运行成功,返回一个_PACKET结构的指针,否则返回NULL。成功返回的结果将会传送到PacketReceivePacket()函数,接收来自驱动的网络数据报。 2 VOID PacketCloseAdapter(LPADAPTER lpAdapter) 关闭参数中提供的网络适配器,释放相关的ADAPTER结构。 3 VOID PacketFreePacket(LPPACKET lpPacket) 释放参数提供的_PACKET结构。 4 BOOLEAN PacketGetAdapterNames(LPSTR pStr,PULONG BufferSize) 返回可以得到的网络适配器列表及描述。 5 BOOLEAN PacketGetNetInfoEx(LPTSTR AdapterNames,npf_ip_addr *buff, PLONG NEntries) 返回某个网络适配器的全面地址信息。 其中npf_ip_addr结构包含:IPAddress,SubnetMask,Broadcast IPAddress: ip地址 SubnetMask: 子网掩码 Broadcast: 广播地址 6 BOOLEAN PacketGetNetType(LPADAPTER AdapterObject, NetType *type) 返回某个网络适配器的MAC类型。 NetType结构里包含了LinkSpeed(速度)和LinkType(类型)。其中

文档评论(0)

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

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

1亿VIP精品文档

相关文档