我想获得Wifi热点范围内所有设备(打开wifi的设备)的列表。但是它可能连接也可能没有连接到热点。 我使用this库获取连接设备列表,但我不确定是否可以获得未连接到wifi热点的设备,并且只是在其范围内。如果有人能够澄清它的可能性,那将是非常好的。谢谢。
答案 0 :(得分:3)
获取连接到Wi-Fi的所有设备的列表并不困难,例如,ping
网络中所有可能的主机,然后读取ARP缓存表以获取设备的mac地址。 Here是一个应用程序。困难的部分是打开Wi-Fi的未连接设备,在一般Android手机上几乎是不可能的(BTW,带有适当无线适配器的Linux最适合做这样的事情)但是有一些例外,理论就是你的手机将继续发送包含BSSID,SSID(指定已知网络,如果有)的探测请求(active scanning)和您手机的MAC地址,以更新可用的WiFi列表以供以后连接,例如,下面是我捕获的探测请求数据包:
Frame 15: 290 bytes on wire (2320 bits), 290 bytes captured (2320 bits)
Radiotap Header v0, Length 25
802.11 radio information
IEEE 802.11 Beacon frame, Flags: ........C
Type/Subtype: Beacon frame (0x0008)
Frame Control Field: 0x8000
.000 0000 0000 0000 = Duration: 0 microseconds
Receiver address: ff:ff:ff:ff:ff:ff
Destination address: ff:ff:ff:ff:ff:ff
Transmitter address: f4:6a:92:23:30:c0
Source address: f4:ff:92:23:30:c0
BSS Id: f4:fa:92:23:30:c0
.... .... .... 0000 = Fragment number: 0
1010 0011 1101 .... = Sequence number: 2621
Frame check sequence: 0x7037cad2 [correct]
[FCS Status: Good]
IEEE 802.11 wireless LAN management frame
Fixed parameters (12 bytes)
Tagged parameters (225 bytes)
Tag: SSID parameter set: someSSID
Tag: Supported Rates 1(B), 2(B), 5.5(B), 11(B), 6, 9, 12, 18, [Mbit/sec]
Tag: DS Parameter set: Current Channel: 11
Tag: Traffic Indication Map (TIM): DTIM 0 of 0 bitmap
Tag: ERP Information
Tag: Extended Supported Rates 24, 36, 48, 54, [Mbit/sec]
Tag: HT Capabilities (802.11n D1.10)
Tag: HT Information (802.11n D1.10)
Tag: RSN Information
Tag: Vendor Specific: 00:50:f2: WPA Information Element
Tag: Vendor Specific: 00:50:f2: WMM/WME: Parameter Element
Tag: Vendor Specific: 00:0a:eb
Tag: Vendor Specific: 00:50:f2: WPS
要捕获这些数据包,您的WiFi适配器需要支持monitor mode,这在Android上很少见,但不是没有,请参阅此project以了解支持的设备及其方式。请注意,为了应对这些隐私侵犯,一些操作系统(Andord 6 +,iOS 8+ AFAIK)已经实现了不同的MAC地址随机化变体。
答案 1 :(得分:2)
不,这是不可能的,看到未连接设备的唯一方法是进入盒子的管理面板(你只能看到以前连接的设备)。如果你不是管理员,那么你将无法看到它们。
答案 2 :(得分:0)
是的,可以列出WiFi AP范围内的WiFi设备。我不确定我们如何在Android中执行此操作,但您可以查看 Aircrack-ng 应用程序。您可以列出所有附近的设备,因为每个无线设备都会搜索已连接的AP,并且当时他们正在提供其MAC地址(可能是)。您可以查看一下Aircrack-ng的github account。
答案 3 :(得分:-1)
答案 4 :(得分:-1)
WifiManager wifiManager =(WifiManager)getSystemService(Context.WIFI_SERVIE);
WifiInfo wInfo = wifiManager.getConnectionInfo();
String macAddress = wInfo.getMacAddress();
答案 5 :(得分:-2)
请试试这个。
WifiManager wm = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wm.startScan();
List<ScanResult> scanResult = wm.getScanResults();
for (ScanResult result : scanResult)
{
System.out.println("Access Point MacAddr:" + result.BSSID);
}