Android wpa_cli 调试方法
来源:互联网 发布:淘宝店铺交易额查询 编辑:程序博客网 时间:2024/05/18 02:46
背景:今天想玩一玩wpa_cli,以了解wpa_supplicant的一些流程,结果却一直连接不上。。。记录一下如何使用wpa_cli来进行wifi调试。
1、启动WLAN
(1)加载驱动
一般来说,android系统里面,打开wifi的时候会加载驱动,关闭则会卸载wifi驱动。手动调试的时候,先调用insmod命令加载指定的wifi驱动。
再调用iwconfig可以看到驱动是否加载成功,如下,可以看到wlan0已经有了,则驱动加载成功。
eth0 no wireless extensions.wlan0 IEEE 802.11bgn ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=12 dBm Retry short limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:onsit0 no wireless extensions.lo no wireless extensions.wlan1 IEEE 802.11bgn ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=12 dBm Retry short limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:ontunl0 no wireless extensions.
(2)打开wlan0
这个没什么好说的,ifconfig wlan0 up
2、启动wpa_supplicant
命令如下:可以参考下自己init.xxx.rc是如何配置的,参数可能会不一样。
wpa_supplicant –iwlan0 –Dnl80211 –c 配置文件 &
-i:指定网口;
-D:指定驱动类型;
-c:指定了wpa_supplicant的配置文件。
例如:
wpa_supplicant -d –iwlan0 –Dnl80211 –c/etc/wifi/wpa_supplicant.conf &
配置文件为/etc/wifi/wpa_supplicant.conf,-d参数是打开wpa_supplicant的打印。
配置文件如下:
update_config=1ctrl_interface=/data/misc/wifi/socketseapol_version=1ap_scan=1fast_reauth=1
ps:一开始老是运行不起来,在已经加载驱动,也已up wlan0的情况下,很可能是/data/misc/wifi/sockets的权限不足,导致无法创建wlan0 socket。
确保wpa_supplicant已经运行起来了,可以ps看下。
3、启动wpa_cli
wpa_cli -i网口 -p socket所在路径
例如像我刚才那么调用的话,则用下面命令启动:
wpa_cli -iwlan0 -p /data/misc/wifi/sockets/
进入如下界面则已经可以正常调试了。
wpa_cli v2.0-devel-4.4.2_rtw_r12456.20141113_betaCopyright (c) 2004-2013, Jouni Malinen <j@w1.fi> and contributorsThis software may be distributed under the terms of the BSD license.See README for more details.Interactive mode>
如果一直显示如果出现“Could not connect to wpa_supplicant - re-trying”,那表示 wpa_cli 不能和wpa_supplicant 建立 socket 连接,这时要检查 wpa_supplicant 进程是否还在,还有socket所在路径wlan0是否存在(在我的例子是/data/misc/wifi/sockets/wlan0)。
4、扫描ap
输入scan命令
> scanOK<3>CTRL-EVENT-STATE-CHANGE id=-1 state=3 BSSID=00:00:00:00:00:00 SSID=<3>CTRL-EVENT-SCAN-RESULTS <3>CTRL-EVENT-STATE-CHANGE id=-1 state=0 BSSID=00:00:00:00:00:00 SSID=>
wpa_supplicant有“CTRL-EVENT-SCAN-RESULTS ”的回复,则可以输入scan_results可以看到扫描结果,如下图。
scan_results bssid / frequency / signal level / flags / ssid0c:72:2c:44:10:9e 2437 -70 [WPS][ESS] SSd4:61:2e:a2:b9:e5 2437 -57 [WPA2-PSK-CCMP][ESS] HUAWEI G9 Youth9c:21:6a:d3:9e:a2 2437 -72 [WPA-PSK-CCMP][WPA2-PSK-CCMP][WPS][ESS] helezu5c:63:bf:5f:9c:be 2462 -82 [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] TOPVISION
5、连接
从扫描结果看HUAWEI G9 Youth这个热点是信号最强的。我们选择连接这个ap。
> add_network 1> set_network 1 ssid "HUAWEI G9 Youth"OK> set_network 1 key_mgmt WPA-PSK OK> set_network 1 psk "xx123456" OK> set_network 1 pairwise CCMP OK> set_network 1 group CCMP OK> set_network 1 proto WPA2OK> enable_network 1OK<3>CTRL-EVENT-STATE-CHANGE id=-1 state=3 BSSID=00:00:00:00:00:00 SSID=<3>CTRL-EVENT-SCAN-RESULTS <3>WPS-AP-AVAILABLE <3>Trying to associate with d4:61:2e:a2:b9:e5 (SSID='HUAWEI G9 Youth' freq=2437 MHz)<3>CTRL-EVENT-STATE-CHANGE id=-1 state=5 BSSID=00:00:00:00:00:00 SSID=<3>CTRL-EVENT-STATE-CHANGE id=1 state=6 BSSID=00:00:00:00:00:00 SSID=HUAWEI G9 Youth<3>Associated with d4:61:2e:a2:b9:e5<3>CTRL-EVENT-STATE-CHANGE id=1 state=7 BSSID=d4:61:2e:a2:b9:e5 SSID=HUAWEI G9 Youth<3>CTRL-EVENT-STATE-CHANGE id=1 state=8 BSSID=d4:61:2e:a2:b9:e5 SSID=HUAWEI G9 Youth<3>WPA: Key negotiation completed with d4:61:2e:a2:b9:e5 [PTK=CCMP GTK=CCMP]<3>CTRL-EVENT-CONNECTED - Connection to d4:61:2e:a2:b9:e5 completed (auth) [id=1 id_str=]<3>CTRL-EVENT-STATE-CHANGE id=1 state=9 BSSID=d4:61:2e:a2:b9:e5 SSID=HUAWEI G9 Youth
步骤如下:
(1)“add_network”,这里返回网络ID 为 1。
(2) 配置网络的 SSID,执行 set_network 1 ssid AP 的 SSID。
(3)配置网络的加密方式和密码。
(4)启动网络,执行“enable_network 0”。
(5)收到“CTRL-EVENT-CONNECTED”表示连接成功。
6、分配IP
此时已经连接上ap,dhcp分配一个IP即可。
输入 q 退出 wpa_cli,执行命令:dhcpcd wlan0
此时已经可以ping通了,在Android系统里,还需要设置DNS这些,在Android里,这些流程会有netd来完成,这里就不说了。
- Android wpa_cli 调试方法
- wpa_cli 调试工具
- wpa_cli调试工具的使用
- wpa_cli调试工具的使用
- wpa_cli调试工具的使用
- wpa_cli调试工具的使用
- wpa_cli调试工具的使用
- wpa_cli调试工具的使用
- wpa_cli调试工具的使用
- wpa_cli调试工具的使用
- wpa_cli
- wpa_cli P2P 连接相关调试命令
- wpa_cli P2P 连接相关调试命令
- wpa_cli P2P 连接相关调试命令
- Android 下使用wpa_cli 连接 wifi
- Android 下使用wpa_cli 连接 wifi
- 【转】Android 下使用wpa_cli 连接 wifi
- Wpa_supplicant与wpa_cli实现wifi调试的无线配置
- 网络状态判断简单的判断没有网络可以跳转到设置
- Git学习笔记 chapter03--工作区、暂存区
- extern C
- openCV学习日志(二)
- Jquery导出带样式的Excel
- Android wpa_cli 调试方法
- 编程出现的问题
- pycharm 对mysql的可视化操作
- STL之空间配置器
- AVPlayer的用法
- 监控系统的一般架构之二串行数据流接口
- 二维码扫描
- Java反射(一):Class类的使用
- Java反射的简单使用