<iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog01.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>
监听以太网(二) Packet32包说明续<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
Article last modified on 2002-9-17 |
The information in this article applies to:
--Microsoft Windwos NTx
--- Microsoft Windwos 9x
--WinPcap: the Free Packet Capture Architecture for Windows
|
Packet32包中的函数说明:
No.2. PacketOpenAdapter (打开网卡)
根据传入的设备名,打开它。
LPADAPTER PacketOpenAdapter(
LPTSTR AdapterName
);
Parameters:
AdapterName:
[in] 要打开的设备的名字。
Return Values:
如果打开成功,返回一个指针,它指向一个正确初始化了的ADAPTER Object。
否则,返回NULL。
Usage:
[C/C++]
C/C++ Usage Sample
LPADAPTER adapter;
adapter = PacketOpenAdapter(pStr+rewind);
Remarks:
这个函数尝试加载并启动packet driver,这样,管理driver对于应用程序来说就十分的透明了。
Windows9X版本的NPF driver用的是ASCII编码,而WindowsNTx用的是Unicode编码。所以提请注意这个输入参数AdapterName,在Windows9X下,必须是正确的编码格式!在WindowsNTx下,这个函数能够监测到ASCII编码,并在送给driver 之前先转换为Unicode编码。
这个函数的操作大致为:
首先调用OpenSCManager,以Administrators的身份连接Service Control Manager,权限是SC_MANAGER_ALL_ACCESS。这也说明,使用Packet.dll你必须是本机管理员组成员。
如果可以连接SCM,检查NPF注册表项是否存在。如果存在,说明driver已经安装了,就不需要我们调用PacketInstallDriver了。
NPF注册表项:
HKEY_LOCAL_MACHINE/
SYSTEM/
CurrentControlSet/
Services/
NPF
如果不存在此键,则调用PacketInstallDriver安装当前路径下的driver:npf.sys。
如果这次PacketInstallDriver安装也失败了,就到系统路径下查找并安装这个驱动。
如果以上操作都成功的话,调用OpenService打开NPF服务。如果服务存在的话,就调用QueryServiceStatus查询当前服务状态。这就是我们的driver的状态。
如果这个服务没有启动,就调用StartService启动之。
确认服务启动之后,检查AdapterName是否是ASCII编码,是的话,就转换为Unicode。
由于一般输入参数AdapterNAme类似于这样:
/Device/NPF_{A67CEC3B-C099-47E0-B096-480B01FAF348}
所以,我们会重新组织一个设备名SymbolicLink:
“Packet_”的前缀 + AdapterName[8]
也就是:
//./Packet_NPF_{A67CEC3B-C099-47E0-B096-480B01FAF348}
先尝试着CreateFile函数能不能马上用这个SymbolicLink名字打开设备。
如果可以,就调用PacketSetReadEvt函数打开一个open事件等。
否则,调用DefineDosDevice定义一个新的MS-DOS设备:
名字类似于” Packet_NPF_{A67CEC3B-C099-47E0-B096-480B01FAF348}”。
通过这个DOS设备名,我们的应用层程序才能向驱动发出请求。
接着,调用CreateFile函数来建立并打开一个联系设备的文件句柄(GENERIC_WRITE| GENERIC_READ,OPEN_EXISTING)。
之后,调用PacketSetReadEvt函数打开一个open事件等。
(To be continued)
Writen by zhengyun@tomosoft.com
本文档所包含的信息代表了在发布之日,ZhengYun 对所讨论问题的当前看法,Zhengyun 不保证所给信息在发布之日以后的准确性。
本文档仅供参考。对本文档中的信息,Zhengyun 不做任何明示或默示的保证。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=12691
相关推荐
开发网卡监听,所需要的驱动;Packet32
#ifndef __PACKET32 #define __PACKET32 #include #ifdef HAVE_AIRPCAP_API #include #else #if !defined(AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_) #define AIRPCAP_HANDLE__EAE405F5_...
windows Packet32 包中的函数及数据说明,非常详细
packet32 优秀的Mac 层开发包源码
winpcap SDK开发包头文件sdk(pcap.h,Packet32.h,Packet32.h,wpcap.lib,Packet.lib)
一个头文件,做网络嗅控时要用到的头。 我的第三方类集
(i.e., 64bit: "C:\Program Files\Cisco Packet Tracer 7.2.2\plugins", 32bit: "C:\Program Files (x86)\Cisco Packet Tracer 7.2.2\plugins", or the other folder that you installed Packet Tracer 7.2.2)....
Cisco Packet Tracer 7.1 32位 Cisco Packet Tracer是由Cisco公司发布的一个辅助学习工具,为学习思科网络课程的初学者去设计、配置、排除网络故障提供了网络模拟环境。用户可以在软件的图形用户界面上直接使用拖曳...
Packet Tracer 7.2.1 for Windows 32 bit 模拟器,32位版本。
思科模拟器Cisco Packet Tracer7.2.2 x32 Cisco Packet Tracer 7.2.2 new features Cisco Packet Tracer 7.2.2 removes the Java dependence and makes it easier to use Packet Tracer Skills Assessment (PTSA) ...
Cisco Packet Tracer 7.1.1 32位 Cisco Packet Tracer是由Cisco公司发布的一个辅助学习工具,为学习思科网络课程的初学者去设计、配置、排除网络故障提供了网络模拟环境。用户可以在软件的图形用户界面上直接使用...
Cisco模拟器 7.0版本 32位
C#利用SharpPcap发送以太网报文(以太网原始帧),软件基本流程:从文件读取要发送的帧内容,然后找到电脑上的以太网卡,接下来利用SharpPcap来循环发送。 vs2008工程,全部源代码,可编译和测试。 以太网帧内容...
Cisco Packet Tracer 5.3 思科路由器交换机模拟软件 Cisco Packet Tracer 5.3 思科路由器交换机模拟软件 Cisco Packet Tracer 5.3 思科路由器交换机模拟软件 Cisco Packet Tracer 5.3 思科路由器交换机模拟软件 ...
绍了Windows NT系统中的NDIS,应用程序与它的交互及怎样利用ARP协议在局域网中报告设备的在线状态:在主控机中运用辅助的开发包(Packet32)进行口伪装,并用开发包直接对网卡进行操作,发送更改口命令给设备,从而使...
Cisco Packet Tracer 5.3.2 分卷二 Cisco+Packet+Tracer+5.3.2
一、实验名称 使用网络模拟器packetTracer 二、实验目的: 1. 掌握安装和配置网络模拟器PacketTracer的...二、使用 PacketTracer 模拟器 启动系统。点击 “CISCO Packet Tracer”图标,将会出现如图所示的系统界面。
Cisco Packet Tracer 7.1.1 for windows 32bit,思科最新的模拟器软件