如何获取附近无线设备的MAC地址和信号强度?

有没有办法从手机、笔记本电脑或通过使用接入点获取附近无线设备的MAC地址和信号强度?

2你想查看范围内所有无线设备的MAC地址和信号强度,还是只想查看充当AP(无线路由器)的设备?找到AP(以及类似AP的设备,如Wi-Fi Direct Group Owners)很容易。但要找到客户端设备就比较困难,尤其是未关联的客户端设备。 - Spiff
请添加一个操作系统标签;答案会因为在Windows、Linux和Mac上有所不同。 - dirkt
1@idontevenknow,请查看当有人回答我的问题时我该怎么办? - C0deDaedalus
4个回答

大家都回答了关于Windows平台的问题。所以,我想也回答一下关于Linux平台的问题。在Linux上,你可以这样做:

获取连接到你的网络中的设备的MAC地址

你可以使用许多工具来完成这个任务,比如Netdiscover、arp-scan、nmap甚至WireShark。这些工具通常用于无线网络渗透测试,可以通过知道IP地址和MAC地址来了解谁在网络中。

ARP(地址解析协议)用于将MAC地址映射到内部网络上的IP地址。路由器和交换机向网络上的所有MAC地址发送广播ARP请求,要求它们回应自己的IP地址。然后每个系统都会回应自己的IP地址,交换机或其他设备会创建一个小型数据库,将MAC地址映射到IP地址,以便知道“谁是谁”。这两个工具都使用ARP数据包来获取这些信息。

  1. 使用 Netdiscover

    Netdiscover 用于主动或被动扫描那些没有 DHCP 服务器的无线网络。它也可以用于扫描集线器/交换机网络。

    netdiscover -i eth0 -r 192.168.2.0/24
    

    其中 -i 表示接口(这里是 eth0)和 -r 表示要测试的 IP 范围。

    查看此示例

  2. 使用 arp-scan

    arp-scan(也称为 ARP 扫描或 MAC 扫描器)是一个非常快速的 ARP 数据包扫描工具,可以显示网络中的每个活动 IPv4 设备。由于 ARP 是不可路由的,它只在本地局域网(本地子网或网络段)中起作用。它显示所有活动设备,即使它们有防火墙也能扫描到。

    arp-scan --interface=wlan0 [ --localnet ] 192.168.0.1/24
    

    arp-scan 使用教程完整文档见此处

获取未连接到您的网络的设备的MAC地址

这部分正是对您提出的问题关于附近设备的MAC地址和信号的确切回答。为此,我们可以使用Airmon-ng工具设置无线监视器,然后使用Airodump-ng将监视器中的无线信号转储到屏幕上。这两个工具都是Aircrack-ng的一部分,Aircrack-ng是用于对无线网络进行渗透测试的一套工具。这是您想要的完美工具。

使用Aircrack-ng套件并不容易,但它值得投入时间和精力。在答案中写下所有的命令会让它变得相当乏味,所以一系列简短的命令步骤如下:

  1. 检查接口状态:

    airmon-ng
    
  2. 检查可能对Airmon-ng造成麻烦的任何进程并将其关闭:

    airmon-ng check kill
    
  3. 在给定的无线接口(wlan0)上启用监控模式(开始)

    airmon-ng start wlan0
    

    其中wlan0是无线接口的名称。在终端上输入iwconfig以获取您机器上无线设备的无线接口名称。

  4. 启动Airodump-ng以从无线监视器中转储数据包

    airodump-ng mon0
    

    其中mon0是在接口wlan0上启动的监视器。现在,您将清楚地看到附近所有设备的MAC地址和信号强度。完成后,按下Ctrl+C停止监视。

  5. 最后停止接口上的监控模式

    airmon-ng stop wlan0
    
注意:无论您是否连接到无线网络,使用Airmon-ng都没有关系。唯一的问题是,使用Airmon-ng命令需要将无线接口(在您的设备上)设置为监视模式,结果您将断开与任何无线网络的连接,但其他所有功能都完美地满足您的需求。 使用Aircrack-ng套件的完整教程

我能使用上述的airmon命令获取已连接和未连接设备的MAC地址和相对信号强度吗?例如,如果我有一台通过无线连接的笔记本电脑来发出这些命令,我能够获取附近设备的MAC地址和信号强度(相对于我的设备)吗? - idontevenknow
@idontevenknow 是的,是的,是的,你可以这样做。我已经根据你的评论更新了我的回答。 - C0deDaedalus

如何获取附近无线设备的MAC地址和信号强度?

从Windows PC上,您可以:

1. 使用WifiChannelMonitor来自Nirsoft

WifiChannelMonitor是一个用于Windows的实用程序,它使用Microsoft Network Monitor捕获驱动程序以监视模式捕获wifi流量,并显示有关接入点和连接到它们的wifi客户端的详细信息。 WifiChannelMonitor还允许您查看未连接到任何接入点的wifi客户端的信息,包括它们正在尝试连接的SSID(网络名称)列表。

注意:

示例输出:

enter image description here

2. 使用WifiInfoView来自Nirsoft

WifiInfoView扫描您所在区域的无线网络,并显示有关它们的详细信息,包括:网络名称(SSID),MAC地址,PHY类型(802.11g或802.11n),RSSI,信号质量,频率,信道号,最大速度,公司名称,路由器型号和路由器名称(仅适用于提供此信息的路由器)等等...

当您在此工具的上窗格中选择一个无线网络时,下窗格会以十六进制格式显示从该设备接收到的Wi-Fi信息元素。

WifiInfoView还具有摘要模式,它按信道号、制造路由器的公司、PHY类型或最大速度对所有检测到的无线网络进行分组显示。

示例输出:

enter image description here

3. 使用命令提示符中的netsh命令行工具:
netsh wlan show networks mode=bssid

示例输出:

> netsh wlan show networks mode=bssid

Interface name : Wireless Network Connection
There are 19 networks currently visible.

SSID 1 : TP-LINK_6A7CD0
    Network type            : Infrastructure
    Authentication          : WPA2-Personal
    Encryption              : CCMP
    BSSID 1                 : e8:94:f6:6a:7c:d0
         Signal             : 24%
         Radio type         : 802.11g
         Channel            : 4
         Basic rates (Mbps) : 1 2 5.5 11
         Other rates (Mbps) : 6 9 12 18 24 36 48 54

SSID 2 : Virgin Media
    Network type            : Infrastructure
    Authentication          : WPA2-Enterprise
    Encryption              : CCMP
    BSSID 1                 : d2:05:c2:fb:7d:89
         Signal             : 26%
         Radio type         : 802.11g
         Channel            : 6
         Basic rates (Mbps) : 1 2 5.5 11
         Other rates (Mbps) : 6 9 12 18 24 36 48 54
    BSSID 2                 : 52:0d:10:91:50:d9
         Signal             : 18%
         Radio type         : 802.11g
         Channel            : 6
         Basic rates (Mbps) : 1 2 5.5 11
         Other rates (Mbps) : 6 9 12 18 24 36 48 54

...

更多阅读


免责声明

我与Nirsoft没有任何关联,我只是他们软件的最终用户。


看起来这些解决方案只显示附近的接入点,而不是所有的无线设备。 - Spiff
NirSoft的WiFiChannelMonitor似乎可以收集所有附近活动的Wi-Fi设备的信息:http://www.nirsoft.net/utils/wifi_channel_monitor.html - kreemoweet
@Spiff 答案已更新。第一选项获取所有无线设备。 - DavidPostill
我可以从没有连接到任何网络的设备上获取这些信息吗?比如一个开启了WiFi但尚未连接到网络的手机? - idontevenknow
@idontevenknow 是的,使用WiFiChannelMonitor,“WifiChannelMonitor还允许您查看未连接到任何接入点的wifi客户端的信息。” - DavidPostill
你熟悉如何使用WiFiChannelMonitor吗? - idontevenknow
@idontevenknow 是的。但是它现在在我的笔记本电脑上不起作用,因为它无法识别我的无线网卡。 - DavidPostill
我在他们的网站上查找了一下,发现很少有文档资料。我下载了网络监视器,甚至能够开始扫描,但是没有发现任何问题。我从802.11n切换到802.11g,但是同样没有显示出任何结果。我相信这个问题肯定有一个简单的解决办法,你对这种情况熟悉吗? - idontevenknow
@idontevenknow 也许可以尝试选择“选项”>“所有客户端”?然后再尝试不同的频道? - DavidPostill
@idontevenknow 我没有更多要补充的。 - DavidPostill

Google Nearby可以用来查找WiFi和蓝牙设备。还有其他工具可以扫描任何启用了WiFi的设备

Nirsoft的 "Wireless Network Watcher" 是一个小型实用程序,它可以扫描您的无线网络,并显示当前连接到您的网络的所有计算机和设备的列表,显示MAC地址和其他信息,也有其他替代方案可供选择。

对于Linux系统,请尝试使用LinSSID。请注意,它必须以超级用户身份运行。例如,在Ubuntu中,您可以创建一个启动文件:

gnome-terminal -e "sudo linssid"


Wireless Network Watcher只显示连接到本地网络的设备。它不显示信号强度或其他附近的无线设备(路由器)。Nirsoft的WifiInfoView(根据我的回答)是一个更好的选择。 - DavidPostill
@DavidPostill,虽然WifiInfoView非常有用,但我相信它只显示WiFi接入点,而不是所要求的WiFi设备 - DrMoishe Pippik
嗯,说得好。 - DavidPostill

你可以通过使用一个叫做kismet的工具来实现这个。你将能够发现所有启用了wifi的设备,甚至获取MAC ID、RSSI和其他有用的信息。要在kismet中执行扫描,首先需要将你的网卡设置为监控模式。你可以使用以下命令来完成这个操作:
    airmon-ng start wlan0    
Wlan0是您的接口名称 然后您可以使用以下命令启动kismet:
    kismet -c wlan0mon
wlan0mon是在启用监控模式后的接口名称。 然后,您可以将您的网络指向kismet指定的地址以查看设备。 您可以使用kismet提供的REST端点来提取设备列表。

  • 相关问题