所有人。我正在对WinPcap做一些修改,这是一个数据包捕获库。老板要我把WinPcap的NDIS4版本转换成NDIS6版本,兼容性要求是Windows XP/Vista/7/8 (32位和64位)。我发现NDIS的最新版本是6.3,但是NDIS 6.3恐怕不再支持XP了,这是真的吗?另外,我在WinPcap网站上发现,目前的WinPcap 4.1.3已经支持Windows XP/2003/Vista/2008/Win7/2008R2/Win8 (x86和x64)。是对的吗?我应该更新哪个版本的NDIS才能保持最广泛的兼容性?
发布于 2013-06-11 15:56:49
恐怕NDIS6.3不再支持XP了,这是真的吗?
如果你的意思是“使用NDIS 6.3的驱动程序将在Windows XP上工作吗”,答案是“不”,并且一直是“不”;这不是一个“不再”的情况。
给定版本的Windows支持给定版本的NDIS (反之亦然)。"NT 5.x",即Windows 2000、Windows XP和它们的等效服务器,支持NDIS 5;NDIS 6驱动程序(甚至NDIS 6.0)在这些版本的Windows上不起作用。NDIS 6驱动程序需要"NT 6.x",即Windows Vista及更高版本。
如果您查看Microsoft's MSDN documentation on network drivers,您会注意到它有一个部分介绍“从Windows Vista开始的网络驱动程序”,另一个部分介绍“Windows Vista之前的网络驱动程序”;第一部分用于NDIS6,第二部分用于NDIS5。(我想,NDIS4被认为太老了,不能再费心编写文档了;我不知道NDIS4和NDIS5之间有什么区别,也不知道WinPcap是否仍然支持NDIS4。)
如果要在WinPcap中支持NDIS6(例如,支持Wi-Fi设备上的监控模式),您可以选择:
注意,顺便说一句,如果您的目标是在NDIS设备上支持监视模式,那么强烈建议您实现用于监视模式的libpcap中已经存在的API,即用于打开设备的pcap_create()/pcap_activate() API、用于请求监视模式的pcap_set_rfmon() API以及用于检查是否可以打开监视模式的Wireshark,因为这些API是tcpdump和Wireshark等程序所期望的。
还要注意,pcap_create()/pcap_activate() API当前不能处理远程数据包捕获,因此您要么放弃该功能,要么等待我(或其他人)将这些功能添加到这些API中。
另请注意,据报道,虽然NDIS 6有支持监控模式的API,但并不是所有Wi-Fi设备都有NDIS 6驱动程序,并不是所有具有NDIS 6驱动程序的设备都有支持Native Wi-Fi的NDIS 6驱动程序(因此没有支持监控模式的NDIS 6驱动程序),即使是那些具有支持Native 802.11的NDIS 6驱动程序的设备也不一定有NDIS 6驱动程序,这些驱动程序不一定没有使Native 802.11工作良好的bug。
此外,还要注意的是,在监控模式下由Native 802.11驱动程序提供的“无线电信息”报头与pcap和pcap-ng支持的所有现有“无线电信息”报头不同,您需要从tcpdump-worker@lists.tcpdump.org为该“无线电信息”报头请求一个新的LINKTYPE_/DLT_值。Wireshark已经有了一个解析器,因为它可以从Microsoft Network Monitor读取802.11个捕获;tcpdump将需要一个。
(如果您出于某些其他原因这样做,例如添加对PPP设备的支持或修复代码以获取供应商的设备描述,则可能还需要使NDIS 6驱动程序成为轻量级筛选器驱动程序或类似的驱动程序,而不是传输驱动程序。)
发布于 2013-06-12 01:52:14
除了盖伊说的..。XP不能也从未支持过NDIS 6,因此创建与XP兼容的NDIS 6驱动程序的要求是不可能的。您必须更改要求;Guy的两个选项都是好的(放弃XP支持,或保留并行5.1和6.0驱动程序)。
从体系结构上讲,数据包捕获应该在NDIS6 LWF中完成(并且不使用具有回送数据包的协议驱动程序)。我建议从一个干净的、空的LWF开始(请参阅sample),并添加来自WinPcap的数据包捕获功能。
https://stackoverflow.com/questions/17037907
复制相似问题