从用户模式程序在 Windows 上发送和接收 ARP 数据

Transmitting and receiving ARP data on Windows from user mode programs

本文关键字:数据 ARP 模式 用户 程序 Windows      更新时间:2023-10-16

(ARP = 地址解析协议 - RFC 826(有没有办法通过用户世界程序在Windows上发送和接收ARP流量?在 Linux 上,我们可以只创建原始套接字来发送 ARP 流量,但在 Windows 上,我的研究表明我们需要编写一个可用于发送此类流量的驱动程序。我想过使用 WinPcap,但它在内部安装了一个可用于发送/接收此类流量的驱动程序。

我的问题是:在不安装驱动程序的情况下,Windows是否有任何方法允许传输/接收ARP数据包?

发送 ARP 数据包的最简单方法可能是使用 SendARP

然后,您可以使用 GetIpNetTable 从 IP 堆栈的 ARP 表中检索地址。为了确保您获得当前地址,您通常需要执行DeleteIpNetEntry删除该地址,然后SendARP,然后等待一段时间并GetIpNetTable(如有必要,重复几次,直到您获得一个带有所需地址条目的地址(。

或者,对于 Vista 或更高版本,您可以使用 ResolveIpNetEntry2 更直接地检索数据。这会自动刷新地址的当前条目(如果有(,发送 ARP 数据包并返回当前结果(如果我没记错的话,这也用于更新堆栈的 ARP 表(。