隐藏SSID和STA搜索隐藏SSID原理
来源:互联网 发布:南柯奇谭 墨竹 知乎 编辑:程序博客网 时间:2024/05/17 08:26
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.cstatic 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]
- 隐藏SSID和STA搜索隐藏SSID原理
- CISCO Router配置、升级、隐藏SSID、侦测SSID
- Win7下连接隐藏SSID的无线网络
- 隐藏无线网络SSID号 以免被人蹭网
- wpa_supplicant 隐藏SSID连接不上
- 树莓派连接隐藏SSID的WIFI
- 一键获取隐藏Wi-Fi SSID:利用Python和Scapy发现隐藏无线热点
- xp 查找隐藏ssid(或未广播)的无线网络 (ssid已知)
- 防WiFi万能钥匙蹭网,隐藏ssid就可以了
- 隐藏SSID无线网络ID 你的无线网络真的安全吗?
- swift3.0获取当前使用wifi SSID和SSID列表
- OpenWrt mt7620n双SSID实现原理
- SSID/VLAN
- SSID, LLC
- SSID解析
- 获取ssid
- 获取SSID
- 获取SSID
- SQL---count()函数结果为null时替换为0
- SSM+JPA出现问题:
- IDEA中创建maven webapp作为子模块无java源文件夹
- erlang数据类型(2)
- MySql 中 的delimiter
- 隐藏SSID和STA搜索隐藏SSID原理
- 6年双11,DataV的数据可视化之道
- 一步一步带你认识MVP+Retrofit+Rxjava并封装(二)
- jmeter应用---测试元件介绍(二)
- 并发、线程、进程与多线程技术
- Android URL中参数的获取、拼接及修改
- 在ubuntu上分别安装python和python3的tensorflow安装教程
- mybatis反向生成代码工具
- vb mid函数的使用方法详细介绍