隐藏SSID和STA搜索隐藏SSID原理

您所在的位置:网站首页 获取隐藏wifi的ssid 隐藏SSID和STA搜索隐藏SSID原理

隐藏SSID和STA搜索隐藏SSID原理

2024-07-09 22:45| 来源: 网络整理| 查看: 265

1、AP隐藏时MAC帧的表现

扫描隐藏SSID,和非隐藏SSID,STA端只有在wpa_supplicant.conf有一点不同:

network={ ssid="Xiaomi_B908" scan_ssid=1 ##这一项表示可以扫描隐藏wifi psk="12345678" priority=1 id_str="%7B%22creatorUid%22%3A%22-1%22%2C%22configKey%22%3A%22%5C%22Xiaomi_B908%5C%22WPA_PSK%22%7D" }

在不隐藏SSID时,AP广播的Beacon帧中,将携带SSID信息:

SSID Element ID: 0 SSID [36] Length: 11 [37] SSID: Xiaomi_B908 [38-48]

也就是在Beacon帧中携带本BSS的SSID信息,通知STA。

但是设置隐藏SSID的AP在广播的Beacon帧中没有携带SSID信息。通常的利用wpa_supplicant实现的设备搜索到的隐藏SSID的AP的SSID为空,这种为空的SSID被处理的时候被忽略了,就搜索不到。sniffer包表现为:

SSID Element ID: 0 SSID [36] Length: 0 [37] 2、设置STA扫描隐藏SSID

从代码来看:

设置扫描隐藏SSID,从代码上来看,首先要设置wpa_supplicant.conf中scan_ssid项为1。在wpa_supplicant中扫描过程如下:

wpas_ctrl_scan(wpa_s, NULL, reply, reply_size, &reply_len); wpa_supplicant_req_scan(wpa_s, 0, 0); wpa_supplicant_scan() wpa_drv_scan(wpa_s, params);

在wpa_supplicant_scan()中有:

@scan.c static void wpa_supplicant_scan(void *eloop_ctx, void *timeout_ctx) { if (ssid == NULL && max_ssids > 1) ssid = wpa_s->conf->ssid; while (ssid) { if (!wpas_network_disabled(wpa_s, ssid) && ssid->scan_ssid) { wpa_hexdump_ascii(MSG_DEBUG, "Scan SSID", ssid->ssid, ssid->ssid_len); params.ssids[params.num_ssids].ssid = ssid->ssid; params.ssids[params.num_ssids].ssid_len = ssid->ssid_len; params.num_ssids++; if (params.num_ssids + 1 >= max_ssids) break; } ssid = ssid->next; if (ssid == start) break; if (ssid == NULL && max_ssids > 1 && start != wpa_s->conf->ssid) ssid = wpa_s->conf->ssid; } }

wpa_supplicant从配置文件中读取配置信息,包括scan_ssid项信息。以上代码首先判断配置是否设置scan_ssid项,如果设置了的话,就将设置的网络信息写入到parames(wpa_driver_scan_params对象)中,这个parames是驱动扫描的参数,参与到扫描过程中。如果没有设置,if中语句不执行,bss信息不写入到扫描参数中。

从发送的MAC帧来看:

在STA进行扫描时,如果wpa_supplicant.conf设置了scan_ssid = 1, STA发送probe request帧,会发送两种类型的帧,第一种用来扫描所有AP,其中request帧SSID项不携带信息。同时发送另一种request帧,其中有携带SSID信息,用来搜索隐藏SSID。

STA设置隐藏后,其中携带要扫描的SSID信息的request帧,在sniffer中的描述:

802.11 Management - Probe Request SSID Element ID: 0 SSID [24] Length: 11 [25] SSID: Xiaomi_B908 [26-36]

在没有设置扫描隐藏SSID时,STA发送的request帧只有第一种,不能指定获取某种SSID。这个时候隐藏SSID的AP回复的response帧包含的SSID信息为空,于是在wpa_supplicant中看到的SSID为空,framework层就把空SSID忽略了,搜索不到。

但是对于设置了扫描隐藏SSID的STA,在发送携带特定SSID信息的request后,AP端虽然隐藏了SSID,但是回复的response帧将携带自身SSID信息的,STA通过其SSID项正常扫描到网络。 回复的response帧信息:

802.11 Management - Probe Response SSID Element ID: 0 SSID [36] Length: 11 [37] SSID: Xiaomi_B908 [38-48]


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3