如何获取最新的ARP表? (“ arp -a”与“ arp-scan”)

问题描述 投票:0回答:1

如何从命令行获取最新的完整ARP表?我需要获取本地网络上所有设备的MAC地址。

arp -a命令的确返回一个列表,但是我发现它需要一些时间才能更新。例如,刚连接的设备将在几分钟内不会出现在桌子上,而断开连接的设备也将在桌子上保留一段时间。

[与此同时,我读到arp-scan应该返回网络上的所有设备,甚至包括具有防火墙(source)的设备。但是,我尝试了以下命令,发现返回的[[更少个设备比arp -a命令要多。某些设备,例如我所知道的本地网络中的智能手机,未包含在列表中。

sudo arp-scan --localnet
mac-address arp
1个回答
0
投票
我也遇到了同样的问题,所以我决定编写自己的ARP扫描器(https://github.com/venetwork/venet/blob/master/venet-show.c),尽管其目的非常特殊。 ;)

问题是这种扫描可能不可靠(如您的问题所述)。主要原因是设备会定期交换ARP帧,因此仅捕获ARP响应并打印其发送的IP地址是不够的。在等待您请求的答复时,随时可能会收到不同的答复。

为了对此进行反击,我的代码确保仅使用真实的(我等待的)答复来打印所需的IP地址(请查看monitor()函数)。不幸的是,上述逻辑扫描过程非常快(每个请求之间只有50毫秒),因此上述逻辑会使“活动的” IP地址列表不完整。但是,在测试期间,即使在背景中发送/接收了很多帧(全速下载.iso文件),我通常也会得到正确的结果。

只需使用-lpcap进行编译(预先安装libpcap)并自己运行即可。需要根权限。

© www.soinside.com 2019 - 2024. All rights reserved.