繁体   English   中英

来自同一网络上另一台计算机的C#嗅探数据包

[英]C# Sniff Packets from another computer on the same Network

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

我是否正确地认为计算机发送的任何数据包不仅对路由器而且对同一网络上的任何其他计算机都是可见的? 如果是这种情况,这是否意味着我们可以在C#中完成拦截这些数据包的工作?

对于那些急切地复制和粘贴到Wireshark等链接的人。感谢您的宝贵时间,但这对我来说是一种学习的经验,因此,如果可能,我希望获得与C#相关的答案!

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

假设您使用的是以太网交换网络,而不是像令牌环这样的时髦产品:即使是出色的Wireshark,它所能看到的内容也受到了限制,因为它的运行范围与您要构建的内容相同-它的主机PC 。

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

您需要研究SOCKS5代理等,才能达到问题所提示的网络透明性。 在暗示少量网络和配置开销的同时,代理将为您提供所要访问流量的最大可见性。

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

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

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

因此,这实际上并不取决于任何编程语言,而仅取决于网络管理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM