WEB开发网
开发学院软件开发VC 调用winpcap驱动写arp多功能工具 阅读

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

 2010-02-19 20:34:14 来源:WEB开发网   
核心提示:一、winpcap驱动简介winpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统,调用winpcap驱动写arp多功能工具,(编者注:WinpCap开发包可以到以下两个网址下载: (1)http://winpcap.polito.it/ , (2)VC知识库工具

一、winpcap驱动简介

winpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统。

(编者注:WinpCap开发包可以到以下两个网址下载: (1)http://winpcap.polito.it/ , (2)VC知识库工具栏目 )

开发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)

返回可以得到的网络适配器列表及描述。

1 2 3 4  下一页

Tags:调用 winpcap 驱动

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接