如何在不使用 PCap 的情况下嗅探 .NET 中的本地传出网络流量?

Posted

技术标签:

【中文标题】如何在不使用 PCap 的情况下嗅探 .NET 中的本地传出网络流量?【英文标题】:How to sniff local outgoing network traffic in .NET without using PCap? 【发布时间】:2011-02-26 13:40:40 【问题描述】:

我想以某种方式连接到本地系统的网络堆栈,以在不使用 Winpcap 的情况下捕获传出的网络数据包。不幸的是,它往往会时不时地让我的系统崩溃。

有没有办法从用 .NET 语言编写的用户空间进程“嗅探”本地系统的传出流量?

【问题讨论】:

您的意思是要跟踪源自 .NET 进程的流量 - 还是 - 要跟踪来自 .NET 进程的所有传出流量? (我怀疑是后者) 是的,你是对的。我需要后者。 【参考方案1】:

你想要的是Network Monitor API。更多here和here。

【讨论】:

嗨,迈克,NMCaptureData 的链接已失效。谢谢 太糟糕了,我将帖子更新为我认为相关的内容(另一个使用 NM API 的 C# 项目示例)。【参考方案2】:

我使用 NIRSOFT 的 smsniff。您需要成为机器上的管理员才能嗅探任何流量。

http://www.nirsoft.net/utils/smsniff.html

我从未见过 .net 用于嗅探流量。但也许微软的 NetMon 有一个你从 .Net 调用的 COM 接口

但与往常一样,您需要成为管理员才能嗅探流量,因为需要将 NIC 置于混杂模式。

【讨论】:

获得管理员权限应该不是问题,因为我正在开发的程序主要是供我自己使用的。好吧,如果其他人想要一个 proggy 将 HTTP 请求跟踪到特定文件类型,并在找到这样的请求后,提供一种实际下载这些文件(如视频、mp4、flv)的方法,我相信我可以做到在路上的某个地方公开。我不想经历编写功能齐全的 HTTP 代理的所有麻烦,所以嗅探是唯一的选择。 尝试 fiddler 作为 HTTP 调试代理。 IT 规则fiddler2.com/fiddler2 是的,Fiddler 很棒。我现在正在使用 FiddlerCore 来跟踪我的应用程序的 HTTP 请求。但我真的很想独立于浏览器的代理设置来捕获它们。

以上是关于如何在不使用 PCap 的情况下嗅探 .NET 中的本地传出网络流量?的主要内容,如果未能解决你的问题,请参考以下文章

Pcap .NET 库:找不到 PcapDotNet.Core.DLL

简单离线数据包分析器Pcap-Analyzer与嗅探器SimpleSniffer

pcap.h头文件问题

Pcap.Net 使用 OffLinePacketDevice 处理离线跟踪文件

python 进行抓包嗅探

如何将 Pcap.Net 数据包类对象导出到 .pcap 文件