如何使用 Sharppcap 和 npcap 监视 Windows 环回适配器?
Posted
技术标签:
【中文标题】如何使用 Sharppcap 和 npcap 监视 Windows 环回适配器?【英文标题】:How to monitor the windows loopback adapter using sharppcap and npcap? 【发布时间】:2017-06-27 03:48:33 【问题描述】:我已经安装了 npcap 驱动,因为我想监控 windows loopback 适配器。然而,环回适配器不在 SharpPcap CaptureDeviceList 中。
我在 Wireshark 中看到了环回适配器,并且 Wireshark 能够监控环回适配器。
如何使用 SharpPcap 监控环回适配器?
【问题讨论】:
很遗憾,Winpcap 无法捕获环回数据包,因为这些数据包未绑定到任何适配器 @Ksv3n:你说得对,WinPcap 做不到。但是 Npcap 可以. @JeroenMostert:Ty,很高兴知道这一点 【参考方案1】:我已经帮助你在他们的 GitHub 存储库中创建了一个问题:https://github.com/chmorgan/sharppcap/issues/15
请等待他们的答复。
更新:
我安装了最新的 Npcap 0.80 并选中了 Install Npcap in WinPcap API-compatible Mode
选项,并在 SharpPcap 存储库中运行了 Example01.IfList
示例,输出为:
SharpPcap 4.2.0.0, Example1.IfList.cs
The following devices are available on this machine:
----------------------------------------------------
interface: Name: rpcap://\Device\NPF_9ADACD44-ECFF-45E2-BD5E-3491DEBA711F
Description: Network adapter 'NdisWan Adapter' on local host
Flags: 0
interface: Name: rpcap://\Device\NPF_8A300A14-CA5A-4A3C-B52B-7516661B4CDA
Description: Network adapter 'NdisWan Adapter' on local host
Flags: 0
interface: Name: rpcap://\Device\NPF_44DB6B7A-661D-4FA3-925E-6287EA48D3F6
Description: Network adapter 'NdisWan Adapter' on local host
Flags: 0
interface: Name: rpcap://\Device\NPF_F0353155-69D0-4611-AB2A-EE864BE0ADD9
FriendlyName: Local Area Connection* 19
GatewayAddress: 0.0.0.0
Description: Network adapter 'Microsoft' on local host
Addresses:
Addr: fe80::cd59:f5d:81cb:989d
Netmask:
Broadaddr:
Addresses:
Addr: fe80::cd59:f5d:81cb:989d
Netmask:
Broadaddr:
Addresses:
Addr: HW addr: E094678FFF3F
Flags: 0
interface: Name: rpcap://\Device\NPF_385F30D0-9166-45D3-BBC6-F1D9C5300AF9
FriendlyName: Wi-Fi
GatewayAddress: 192.168.0.1
Description: Network adapter 'Microsoft' on local host
Addresses:
Addr: fe80::eddc:63ca:cf19:aecd
Netmask:
Broadaddr:
Addresses:
Addr: 192.168.0.109
Netmask: 255.255.255.0
Broadaddr: 0.0.0.0
Addresses:
Addr: HW addr: E094678FFF3E
Flags: 0
interface: Name: rpcap://\Device\NPF_1E6769B9-ED4A-454D-A921-EECDA220ADA1
FriendlyName: Npcap Loopback Adapter
GatewayAddress: 0.0.0.0
Description: Network adapter 'MS NDIS 6.0 LoopBack Driver' on local host
Addresses:
Addr: fe80::b1cb:57f6:4ebc:6359
Netmask:
Broadaddr:
Addresses:
Addr: 0.0.0.0
Netmask: 255.0.0.0
Broadaddr: 255.255.255.255
Addresses:
Addr: HW addr: 02004C4F4F50
Flags: 1
Hit 'Enter' to exit...
显然最后一个适配器是Npcap Loopback Adapter
。我不知道为什么用户无法使用 SharpPcap 监控 Npcap Loopback Adapter。我会在 *** 中回复他关于我的反馈。
我能想到两个可能的原因:
-
用户在安装 Npcap 时没有选择
Support loopback traffic ("Npcap Loopback Adapter" will be created)
选项。
用户也安装了 WinPcap,并且 Npcap 安装时 Install Npcap in WinPcap API-compatible Mode
选项未选中。这样SharpPcap就只能识别WinPcap,使用原来的WinPcap DLL,根本不支持Npcap Loopback Adapter
。
我的建议是:
-
如果已安装 WinPcap,请将其卸载。
安装最新的 Npcap 0.80,同时选中
Support loopback traffic ("Npcap Loopback Adapter" will be created)
和 Install Npcap in WinPcap API-compatible Mode
选项。
现在用户应该可以通过 SharpPcap 界面看到Npcap Loopback Adapter
。
【讨论】:
我按照建议做了,在重新安装 Npcap 后,我确实在 SharpPcap 中看到了环回适配器。我觉得和第一次安装 Npcap 的不同之处在于我现在开启了“WinPcap API 兼容模式”。但是,当我现在运行 SharpPcap Example6 时,在第 86 行出现异常“未实现 Null 的 LinkLayer”。PacketDotNet.Packet.ParsePacket 引发此异常,因为 e.Packet.LinkLayerType == null。知道如何构造(tcp)数据包吗? 我尝试将 ParsePacket 的第一个 (LinkLayer) 参数更改为 Loop、Ethernet 和 Raw,但这些都不起作用(Ethernet 给出 null TcpPackets,其他给出异常) LinkLayer异常也是SharpPcap的一个bug。我也向他们报告了。在他们修复它之前,您有一个临时解决方法:首先卸载 Npcap。然后重新安装Npcap,可以看到Use DLT_NULL as the loopback interface' link layer protocol instead of DLT_EN10MB
选项被勾选,灰色(无法更改)。现在请取消选中Support loopback traffic ("Npcap Loopback Adapter" will be created)
选项并再次检查。您会发现现在可以更改 DLT_NULL 选项。取消选中并安装。 (所以 Loopback 选项被选中并且 DLT_NULL 选项被取消选中)
现在 Npcap 将在 Npcap Loopback Adapter 上提供以太网数据包,SharpPcap 应该可以工作了。以上是关于如何使用 Sharppcap 和 npcap 监视 Windows 环回适配器?的主要内容,如果未能解决你的问题,请参考以下文章
c# 使用sharpPcap制作的网络监视器应用程序,每次调用应显示一个msgbox的方法每次调用显示多个msgbox