Windows API包含一个非常方便的函数SendARP。您可以为其提供一些源IP和目标IP,并为您提供具有该目标IP的客户端的MAC地址。此外,Windows上的标准用户可以使用此功能,即不需要管理员权限。
Linux API是否具有与SendARP一样简单的功能?
我已经考虑过像ping -c 1 xxx.xxx.xxx.xxx
之类的调用,然后解析arp -a -v
的输出(当然在将这些命令包装在popen
中时),但这似乎相当不方便,更不用说了调用外部程序可能出现的安全问题。遗憾的是,Wine也缺少SendARP,标记为as a stub in iphlpapi。
请注意,答案应该也可以作为普通用户执行,即没有root权限(否则我可以创建一个原始套接字并自己构建ARP数据包,但这要求可执行文件具有CAP_NET_RAW功能,需要由root分配给它,解释here)。