是否有可能获得在WiFi热点范围内的客户端设备的MAC地址?

我想获得所有在Wifi热点范围内的设备(谁有他们的wifi打开)的列表。 然而,它可能会或可能不会连接到热点。 我通过使用这个库获取连接设备的列表,但是我不确定是否有可能获得没有连接到WiFi热点的设备,并且在它的范围之内。 如果有人能澄清它的可能性真的很好。谢谢。

Solutions Collecting From Web of "是否有可能获得在WiFi热点范围内的客户端设备的MAC地址?"

获取连接到Wi-Fi的所有设备的列表并不难,例如, pingnetworking中所有可能的主机,然后读取ARPcaching表来获取设备的mac地址。 这是一个应用程序。 其中最困难的部分是Wi-Fi无法连接的设备,在一般的Android手机上几乎是不可能的(顺便说一句,带有适当的无线适配器的Linux最适合做这样的事情),但也有一些例外,理论是你的手机将继续发送包含BSSID,SSID(指定已知networking,如果有的话)和您的手机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适配器需要支持Android上罕见的监视器模式 ,但不是无,请参阅此项目了解支持的设备以及如何使用。 请注意,为了应对这些隐私侵犯,一些操作系统(Andord 6+,iOS 8+ AFAIK)已经实现了MAC地址随机化的不同变体。

不,这是不可能的,唯一的方法来查看不连接的设备是去在框的pipe理面板(你只会看到以前连接的设备)。 所以你不能看到他们,如果你不是在框中的pipe理员。

此外,我build议你看看nmap工具来发现一个networking的所有客户端。 Android上也有Fing ,这是一个非常不错的工具。

是的,可以列出WiFi AP范围内的WiFi设备。 我不确定在Android中如何做到这一点,但是您可以看看Aircrack-ng应用程序。 您可以列出所有附近的设备,因为每个无线设备search其已连接的AP,并在那个时候提供其MAC地址(可能)。 看看Aircrack-ng的github账号会对你有帮助。

WifiManager wifiManager =(WifiManager)getSystemService(Context.WIFI_SERVIE);
WifiInfo wInfo = wifiManager.getConnectionInfo();

stringmacAddress = wInfo.getMacAddress();

请试试这个。

 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); }