我想要解决的解决方案是在本地网络上发现新连接的ip(最好还有mac和vendor)。
到目前为止,我已经尝试了 arp-scan 和 nmap。
我喜欢 arp-scan 主要是因为它速度快并且可以很容易地将 bash 脚本的输出创建到文件。
但是,它似乎无法发现多台连接的计算机,而实际上只有 3 台。nmap 做得更好,但创建所需的输出更加复杂,而且速度更慢。
这是在 bash 脚本中运行的(循环中):
sudo arp-scan --interface=wlan0 --localnet | sed '1, 2d' | head -n -3 > ipDump.lst
管道仅用于格式化并将其打印到文件(ipDump.lst)。
我很困惑,只发现一台计算机。
我的问题:
我对 arp-scan 做错了什么?
还有其他程序更适合我的需要吗?
我最好的解决方案是 nmap 吗?如果是的话:我应该如何配置它以使其快速运行(我不需要端口信息或任何其他信息)并创建可以作为文件每行的 ip 地址输出的输出?
答案1
有一个arpwatch
守护进程可以很好地完成这项工作。它可以配置为提供各种通知。通常,这些通知会通过电子邮件发送给相关管理员。
您可能需要在构建 arpwatch 数据库的前几个小时或几天内(取决于网络)禁用通知。
可以识别从 arpwatch 状态文件中消失的系统。其中一列包含设备上次出现的时间。
答案2
如果您的目标是让程序挂起并等待新计算机的到来,那么监听 ARP 流量是可行的方法。
当计算机启动时,它应该发出“ARP 谁有”广播,您应该在您的计算机上收到该广播,因为“谁有”公告会广播到该以太网段上的所有计算机。
您可以配置 tcpdump(或其他应用程序)将这些 arp 请求转储到文件中,然后随意读取该文件(pcap 格式)。要仅获取相关的 ARP 数据包,您需要正确设置您要查找的数据包类型的过滤器。如果您需要与广播的 MAC 地址关联的 IP,则需要生成自己的 ARP 请求。