-1

我查看了各种 C# Packet Sniffing 教程,并构建了一个可以解析发送到我的计算机和从我的计算机发出的数据包的教程。这太棒了,但我还没有发现任何与从另一台计算机(显然在同一网络上)拦截数据包有关的东西,例如从另一台计算机到路由器。

我认为计算机发送的任何数据包不仅对路由器可见,而且对同一网络上的任何其他计算机都是可见的,这是否正确?如果是这样的话,那不就是说拦截这些数据包是我们在 C# 中可以做到的吗?

对于那些拼命复制和粘贴到 Wireshark 等的链接的人。我很感谢你的时间,但这对我来说更像是一种学习体验,所以如果可能的话,我想要与 C# 相关的答案!

总之,如何在 C# 中拦截与我的计算机无关的数据包?例如从我的笔记本电脑到我的路由器?

4

2 回答 2

3

假设你在一个以太网交换网络中,而不是像令牌环这样时髦的东西:即使是伟大的 Wireshark 也受限于它能够看到的东西,因为它运行在与你试图构建的东西相同的范围内——它的主机 PC .

不幸的是,您的 PC 只能看到到达其网络接口的数据包。这意味着在第 3 层路由网络中,您不太可能看到任何不适合您的数据包,除非您的 PC 是路由器。

您需要查看 SOCKS5 代理等,以达到您的问题推断的网络透明度级别。虽然意味着少量的网络和配置开销,但代理将为您提供对您所追求的流量的最大可见性。

于 2013-09-04T01:41:40.673 回答
0

M.Babcock 在他的回答中已经提到,您在交换网络中的计算机将看不到其他两台计算机之间的流量。

一些(托管)交换机和路由器具有将所有流量发送到监控端口的功能。在这个端口上,您可以连接您的计算机并使用 wireshark/pcap 等来查看通过交换机/路由器的所有流量。

或者,如果您仍然有一个可以访问的,在笔记本电脑和路由器之间放置一个集线器,然后将您的电脑连接到集线器。集线器会将所有流量转发到其他端口,因为他不关心 MAC 地址。

所以这实际上不依赖于任何编程语言,而只依赖于网络管理。

于 2013-09-04T08:49:50.890 回答