在Windows系统下,我们可以调用SendARP()函数实现ARP探测,该函数用于发送ARP请求到指定的 IP 地址,以获取其 MAC 地址。该函数参数传入目标 IP 地址时能够返回对应 MAC 地址。
SendARP 函数原型如下:
DWORD SendARP(
IN IPAddr DestIP, // 目标 IP 地址
IN IPAddr SrcIP, // 源 IP 地址(可以为 0)
OUT PULONG pMacAddr, // 接收目标 MAC 地址
IN OUT PULONG PhyAddrLen // 接收目标 MAC 地址的缓冲区大小,单位为字节
);
复制代码
该函数的第一个参数为目标IP地址,第二个参数为本地主机IP地址(可以填 0),第三个参数为接收返回的目标 MAC 地址的指针,第四个参数为指向缓冲区大小的指针。
当调用 SendARP() 函数时,如果目标 IP 地址是在同一物理网络中,则返回目标 IP 地址对应的 MAC 地址,并且函数返回值为 NO_ERROR。如果目标 IP 地址无效,或者无法获得对应的 MAC 地址,则函数返回值为错误代码,应该根据错误代码来进行处理。
如下代码实现了扫描局域网中指定ARP主机地址的功能。代码主要使用了SendARP()函数来查询目标主机的MAC地址,并将结果输出。具体实现步骤如下: