大家。我正在对数据包捕获库WinPcap进行一些修改。我的老板要我将NDIS版本的WinPcap从NDIS 4转移到NDIS 6.兼容性要求是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以保持最广泛的兼容性?
答案 0 :(得分:4)
我担心NDIS 6.3不再支持XP,这是真的吗?
如果您的意思是"使用NDIS 6.3的驱动程序将在Windows XP"上运行,答案是" no",并且一直是" no&#34 ;;它不再是"以及#34;
给定版本的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开始"和#34; Windows Vista之前的网络驱动程序";第一部分用于NDIS 6,第二部分用于NDIS 5.(我猜,NDIS 4被认为太旧了,不再需要记录;我不知道NDIS 4和NDIS 5之间的区别是什么,或WinPcap是否仍支持NDIS 4.)
如果您想在WinPcap中支持NDIS 6(例如,支持Wi-Fi设备上的监控模式),您的选择是:
顺便说一句,请注意,如果您的目标是支持NDIS设备上的监控模式,建议 非常强大 实施已存在的API用于监控模式的libpcap,即用于打开设备的pcap_create()
/ pcap_activate()
API,用于请求监控模式的pcap_set_rfmon()
API,以及用于检查监控模式是否可以的pcap_can_set_rfmon()
API开启,因为这些API是tcpdump和Wireshark等程序所期望的。
另请注意,pcap_create()
/ pcap_activate()
API当前不处理远程数据包捕获,因此您必须要删除该功能或等待我(或某人)将这些功能添加到这些API中。
另请注意,据报道,尽管NDIS 6具有支持监控模式的API,但并非所有Wi-Fi设备都具有NDIS 6驱动程序,并非所有具有NDIS 6驱动程序的驱动程序都具有支持Native Wi的NDIS 6驱动程序-Fi(因此没有支持监控模式的NDIS 6驱动程序),甚至那些做具有支持Native 802.11的NDIS 6驱动程序也不一定有NDIS 6驱动程序没有bug这使Native 802.11的功能很好。
此外,还要注意"无线电信息"在监控模式下由Native 802.11驱动程序提供的标头不同于所有现有的"无线电信息" pcap和pcap-ng支持的标头,您需要为该"无线电信息"请求新的LINKTYPE_
/ DLT_
值。标题来自tcpdump-workers@lists.tcpdump.org。 Wireshark已经有了解剖器,因为它可以从Microsoft网络监视器读取802.11捕获; tcpdump需要一个。
(如果由于某些其他原因而执行此操作,例如添加对PPP设备的支持或修复代码以获取供应商的设备描述,则可能还需要使NDIS 6驱动程序轻量级过滤驱动程序或类似的东西,而不是传输驱动程序。)
答案 1 :(得分:1)
要添加Guy所说的...... XP不能也从未支持NDIS 6,因此您需要创建具有XP兼容性的NDIS 6驱动程序是不可能的。你必须改变要求; Guy的选项都很好(删除XP支持,或维护并行的5.1和6.0驱动程序)。
在架构上,数据包捕获应该在NDIS 6 LWF中完成(而不是使用带有环回数据包的协议驱动程序)。我建议从干净的空LWF开始(参见sample)并添加WinPcap的数据包捕获功能。