我查看了各种C#Packet Sniffing教程,并构建了一个可以解析发送到我的计算机和从我的计算机发送的数据包的教程。这很棒,但我没有找到任何与拦截来自另一台计算机(显然在同一网络上)的数据包有关,例如:从不同的计算机到路由器。
我是否认为计算机发送的任何数据包不仅对路由器,而且对同一网络上的任何其他计算机都可见?如果是这种情况,这是否意味着我们可以在C#中拦截这些数据包?
对于那些拼命复制和粘贴Wireshark等链接的人。我很感谢你的时间,但对我来说这更像是一次学习经历,所以如果可能的话,我希望得到与C#相关的答案!
总之,如何拦截C#中与我的计算机无关的数据包?例如。从我的笔记本电脑到我的路由器?
答案 0 :(得分:3)
假设你是在一个以太网交换网络而不是像令牌环那样时髦的东西:即使是伟大的Wireshark也只能看到它能够看到的内容,因为它的运行方式与你想要构建的相同 - 它的主机PC。
不幸的是,您的PC只能看到触及其网络接口的数据包。这意味着在第3层路由网络中,您不太可能看到任何不适合您的数据包,除非您的PC当然是路由器。
您需要查看SOCKS5代理等,以实现您的问题推断的网络透明度。虽然意味着一小部分网络和配置开销,但代理将为您提供对您所追求的流量的最大可见性。
答案 1 :(得分:0)
M.Babcock在他的回答中已经提到过,你的计算机在交换网络中看不到另外两台计算机之间的流量。
某些(托管)交换机和路由器具有将所有流量发送到监控端口的功能。在此端口上,您可以连接计算机并使用wireshark / pcap等查看通过交换机/路由器的所有流量。
或者,如果您仍然可以访问,请在笔记本电脑和路由器之间放置一个集线器,并将您的电脑连接到集线器。集线器会将所有流量转发到其他端口,因为他不关心mac地址。
所以这实际上并不依赖于任何编程语言,而只依赖于网络管理。