背景:我现在了解如何编写C#应用程序可以监测数据包的网络卡上的电脑应用程序的运行。这种方法依靠我知道 http://www.winpcap.org/ 已经被安装在电脑但是,然后我用一个C#例如包装 http://pcapdotnet.codeplex.com/http://sourceforge.net/projects/sharppcap/ .

的问题:我的问题是,什么,我需要做到能够有一个C#应用程序,它可以嗅出报,并不需要一个第3方应用程序/司机被预先安装?

澄清:这是我真正想要的应用程序目前,我有,但没有任何要求我告诉用户必须去下载和/安装XYZ之前能够使用的应用程序。用于该目的的问题承担自动下载,安装一个第3方应用程序驱动程序是不允许的。(与WinPCap我不知道如果你可以捆绑,然而我认为你不应该在任何情况下不幸的是)

感谢

有帮助吗?

解决方案

我个人会坚持WinPCap.但既然你问了,它可以嗅出报网络使用的以下代码,以使原插座。

Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
s.Bind(new IPEndPoint(IPAddress.Parse("<IP Address Here of NIC to sniff>"), 0));
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, 1);
byte[] inBytes = new byte[] { 1, 0, 0, 0 };
byte[] outBytes = new byte[] { 0, 0, 0, 0 };
s.IOControl(IOControlCode.ReceiveAll, inBytes, outBytes);

一旦这样做,可以使用 Socket.ReceiveSocket.BeginReceive 阅读原始IP数据包。

其他提示

有一种方法可以捕获的进出口数据包。净使用的标准winsocks执行情况。我已经看到了一个博客的例子,但我没有链接了。

长话短说,这是一个极端边缘情况,因为这不是什么winsocks(标准windows网络驱动器)的目。

因Pcap通常是必要的捕获数据包,它使用自己为网络驱动,解除的全部能力的NIC。最重要的是,它还提供了一个简单的方法来设置的过滤器来限制数量的报文被抓获指定的接口。

即驱动程序将忽略包的特定类型在内核的水平,而不是用户模式的水平。因此,你将能够过滤器分组的效率更高和捕获下更大的负载上网。

中。网、过滤数据包,你会需要提供自己的应用层包筛选方案,该方案将会更有效率。

Windows块的访问非标准协议,用于'安全原因',因此他们并不真正支持使用原分组的网络(即使码可能存在使它可能)。原分组的总是打算用于研究设计的新的议定书,不是一般用途。

出于所有这些原因通常是一个很好的想法拿起Winpcap和包装你的特定语言来实施任何类型的拍摄的应用程序。

注:我个人喜欢SharpPcap,但是我也有偏见,因为我做的发展项目。Pcap.net 是非常相似,在其执行的时候拍摄的,它主要是散,当它涉及到如何分组进行分析。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top