连接到网络的所有设备列表

3

我正在学习C语言中的套接字编程,但是我无法找到任何关于如何获取我的WLAN网络中所有连接设备列表的信息(我使用Linux)。

是否有人可以提供相关信息或者告诉我可以在哪里开始学习呢?

4个回答

2

您需要检查无线接入点(Wifi路由器)上的所有关联。大多数Wifi路由器都有一个Web界面,其中显示了所有已关联的设备。

如果您可以访问AP的telnet/ssh/console,则根据您的wifi硬件和驱动程序尝试以下任一方法。

Broadcomm无线网卡:

iw assoclist

Atheros 无线网卡:

wl_atheros assoclist

您也可以尝试使用iwlist(8),这是一个Linux程序,可从无线接口获取信息。
iwlist [interface] scan

或者

iwlist [interface] ap/accesspoint/peers

请参考您的wifi驱动程序文档获取支持详情。

我的(华为)路由器有未记录的命令:S,我无法获得assoclist。 - Jona
它使用哪种无线芯片组?您可以从 dmesg(1) 获取该信息。 - HAL
iwlist命令非常有用,谢谢。 - Jona

1

查看ARP缓存。 ARP代表地址解析协议,这是机器将IP地址转换为硬件地址的方法。

没有真正通用的方法可以获取所有网络设备的列表,但ARP接近实现这一目标。

对于您子网中的每个地址进行ping或仅打开和关闭与已知端口的连接,可以快速填充ARP缓存...


1
如果您知道您的网络IP地址,我建议您向网络广播地址进行广播ping,并注意回答的设备。
例如,如果您的网络是192.168.1.0/24,则广播IP地址将为192.168.1.255,在Linux上的命令是ping -b 192.168.1.255。然后,您可以在程序中获取命令结果并处理它以提取其他连接设备的IP地址。
免责声明:某些设备可能配置为永远不回答ping请求,因此它们将使用此方法不可见...
编辑:如果您使用IPv6,可以查看邻居发现协议(NDP),它代替了ARP。

0

2
我不是在重新发明轮子,而是在学习轮子。 - Jona

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接