我正在研究一项涉及ARP中毒的研究项目。
我想拦截IP级别的数据包。如果我的机器收到的IP地址不是自己的IP地址的数据包,我希望将该数据包发送到用户空间程序。
我认为这可以使用TUN / TAP接口完成。因此,如果我的硬件接口具有IP地址192.168.1.3并且我的TUN具有IP地址192.168.1.4,则可以设置硬件接口以将所有192.168.1.4目的地分组转发到TUN,然后TUN可以转发到用户空间。程序。
由于ARP中毒并且具有我的TUN的IP地址,传入的数据包仍将发往我的硬件接口。设备将通过以太网交换机或WiFi连接在同一网络中。
这是一种可行的方法吗?有没有更简单/更好的方法来实现这一目标?
你没有提到很多关于你的网络地形。两台设备是否通过网络交换机连接?另外,您是否知道您的NIC通常会忽略任何未寻址到其MAC地址的第2层流量? (可以通过将NIC置于混杂模式来解决)。您所建议的问题是,即使启用了混杂模式,任何尝试直接向192.168.1.4发送流量的计算机都可能在ARP查找时失败。
—
smashingly
PS:我已经编辑了你的帖子以包含一些与Unix相关的标签,因为它更像是一个操作系统编程问题。
—
smashingly
使用
—
Daniel B
libpcap
。但是,需要root,并且安全性至关重要。
宾果,那是我想到的那个!谢谢@DanielB。
—
smashingly
我已更新我的帖子以反映ARP中毒和网络拓扑。
—
Conor Patrick