12

我想发现通过安卓手机连接到我的 Wifi 网络的所有设备(主机名、MAC 地址和供应商名称)。设备上没有运行公共服务。

尝试了以下方法:

  1. ping 子网中的所有 IP 所需的时间太长 ( inetAddress.isReachable())。
  2. 发送nbstat查询NETBIOs名称的请求适用于某些设备。他们中的一些人提供PortNotOpenException(端口 137 未打开)。其他一些设备没有NETBIOs启用名称服务。
  3. 尝试将jcifs用于 android。能够使用获取主机名

    nbtAddress.getByName(ip)
    

循环遍历子网中的所有 IP 地址。此方法提供所有主机名,无论它们是否处于活动状态。

查找网络上所有活动设备的最佳方法是什么?像FING这样的一些应用程序似乎可以做到这一点。

编辑:我试图分析 android FING 应用程序是如何做到的。

  1. 用 2 个设备连接了一个小热点。在 FING 中开始发现并在 wireshark 上捕获数据包。发送以下一系列请求(全部广播):

Wireshark 上的数据包

  1. 在大型 wifi 网络(65 k 设备)上的 FING 中开始发现 Netbios 名称服务查询和响应数据包被捕获。(单播,有时到广播地址)

同时,我尝试在IDE上打印我的android手机的arp条目。

随着 FING 应用程序中发现的进展,条目的数量不断增加。

发现开始前的 5 个条目

随着发现的进行,增加到 1025 个条目。

发现结束后减少到 150 个条目。

到底发生了什么?没有 ICMP 请求。可以在 android 应用程序中发送 ARPRequests 吗?请帮忙。

4

0 回答 0