C#中的ARP欺骗

ARP Spoofing in C#

我正在重写这篇文章,因为我的最后一篇(我删除了)解释不当。

所以,我目前正在为我的学校制作一个网络管理工具,作为自布置的家庭作业(我很无聊)。

目前有以下工具:

我还没有开始任何这些,但我想我会先解决最困难的问题(ARP 欺骗)。

我已经设置了设计;它有 - IP地址输入 - 启动和停止欺骗的按钮 - IP 地址和 MAC 地址标签 - 一个 DataGridView,它有一个连接列、数据包(输入)列、数据包(输出)列和一个 MAC 地址列。

只剩下代码了..

但是,我想知道如何使用 C# 在 Visual Studio 中执行此操作。

我需要特定的 dll 吗?

实现这个目标需要经历什么过程?

我的印象是您真的不了解网络协议的工作原理。

在 LAN 上,发往本地 LAN 的流量由 MAC 地址传送,永远不会经过路由器。只有发往不同网络的流量才会通过路由器。因此,即使您可以捕获所有出站路由器流量,也不会捕获源自 LAN 和发往 LAN 的流量,也不会捕获入站路由器流量。

那么,你的局域网切换问题。开关是透明设备;他们不维护 ARP tables,也不查看 IP 地址。交换机维护具有 MAC 地址的 MAC 地址 table,以及上次看到 MAC 地址的接口。如果两台主机发送具有相同源 MAC 地址的流量,最后发送的主机将获得发往该 MAC 地址的下一个流量。这将导致 MAC 地址 table 不断变化,完全破坏发往该 MAC 地址的所有流量。

您提出的建议将无法正常工作。您似乎想要做的是在交换机上设置一个 SPAN 接口以将流量镜像到您的应用程序。


编辑:

你一直在改问题,你甚至删除了你的第一个问题。完成您似乎想对应用程序执行的操作的真正方法是为网络上的主机创建一个代理。这是大多数商业应用程序所做的。网络协议不是为发现网络上的设备而设计的。相反,它们通常是为安全和隐私而设计的。还有其他协议旨在填补漏洞,让您的应用程序正常工作。例如,有许多网络交换机支持专用 VLAN 之类的东西,专用 VLAN 上的主机无法看到或与同一 VLAN 上的任何其他主机通信。