Linux wpa_cli 调试方法
记录一下如何使用wpa_cli来进行wifi调试。
1、启动WLAN
(1)加载驱动
打开wifi的时候会加载驱动,关闭则会卸载wifi驱动。手动调试的时候,先调用insmod/rmmod命令加载/卸载指定的wifi驱动。
再调用iwconfig可以看到驱动是否加载成功,如下,可以看到wlan0已经有了,则驱动加载成功。
// ifconfig -a 查看 //tmp # ifconfig -a lo Link encap:Local Loopback LOOPBACK MTU:16436 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)sit0 Link encap:IPv6-in-IPv4 NOARP MTU:1480 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)wlan0 Link encap:Ethernet HWaddr 00:00:00:00:00:00 BROADCAST MULTICAST MTU:1500 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
(2)打开wlan0
ifconfig wlan0 up
2、启动wpa_supplicant
命令如下:可以参考下自己init.xxx.rc是如何配置的,参数可能会不一样。
wpa_supplicant –iwlan0 –Dnl80211 –c 配置文件 &
-i:指定网口;
-D:指定驱动类型;
-c:指定了wpa_supplicant的配置文件。
例如
RDA 512C方案:wpa_supplicant_8 -iwlan0 -Dwext -c/etc/wpa_supplicant.conf &
配置文件为/etc/wifi/wpa_supplicant.conf,-d参数是打开wpa_supplicant的打印。
配置文件如下:
update_config=1
ctrl_interface=/data/misc/wifi/sockets eapol_version=1 ap_scan=1 fast_reauth=1
ps:如果运行不起来,在已经加载驱动,也已up wlan0的情况下,很可能是/data/misc/wifi/sockets的权限不足,导致无法创建wlan0 socket。
确保wpa_supplicant已经运行起来。
3、启动wpa_cli进入交互模式
wpa_cli -i网口 -p socket所在路径
例如像我刚才那么调用的话,则用下面命令启动:
wpa_cli -iwlan0 -p /data/misc/wifi/sockets/
RDA在/bin目录运行:wpa_cli_8
进入如下界面则已经可以正常调试了。
/bin # wpa_cli_8 -i wlan0 wpa_cli v0.8.x Copyright (c) 2004-2011, Jouni Malinen <j@w1.fi> and contributorsThis program is free software. You can distribute it and/or modify it under the terms of the GNU General Public License version 2.Alternatively, this software may be distributed under the terms of the BSD license. See README and COPYING for more details.Selected interface 'wlan0'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命令
> scan OK >SCANNING, suspend MSDU transmission ...SYNC - BBP R4 to 20MHz.l MT7601_ChipSwitchChannel: SwitchChannel#1(RF=15, 1T) MT7601_ChipSwitchChannel: SwitchChannel#2(RF=15, 1T) MT7601_ChipSwitchChannel: SwitchChannel#3(RF=15, 1T) SYNC - End of SCAN, restore to 20MHz channel 1, Total BSS[24] SCAN done, resume MSDU transmission ... CNTL - All roaming failed, restore to channel 1, Total BSS[24] ===>rt_ioctl_giwscan. 24(24) BSS returned, data->length = 4082 <3>CTRL-EVENT-SCAN-RESULTS <3>WPS-AP-AVAILABLE TSSI = 0x4F temperature = 0xFFFFFFFB PacketType = 0xBD tx_11g_rate: b Channel PWR + MCS PWR = 22000 TargetPower: 0x2428f(148111) tssi_m_dc: 78 TssiLinear0: 79 TssiDC0: 1 tssi_offset: 0 tssi_offset<<9: 0 TssiSlope: 128 tssi_db: 1209 CurrentPower: 154752 PowerDiff: -6641 final PowerDiff: -2(0xfffffffe) MAC 13b4: 0xc9540029 MT7601AsicTemperatureCompensation::Disable PLL Lock Protect.
查看scan_result结果:
> scan_results bssid / channel / signal level / quality /flags / ssid 20:6b:e7:f2:7a:50 1 -51 99/100 [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] KAHUNA 34:96:72:f1:11:9a 6 -51 99/100 [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] Panelmate b8:f8:83:35:21:e6 6 -51 99/100 [WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP][ESS] TP-LINK_YSKJ 0a:d4:0c:c4:be:59 1 -33 100/100 [WPA2-PSK-CCMP][ESS] A_Clair_Cl d4:6a:a8:96:60:40 5 -51 99/100 [WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP][ESS] ChinaNet-Rg9G 50:bd:5f:1c:a1:04 11 -61 73/100 [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] kitking_____ fc:3d:93:b4:01:3a 1 -57 83/100 [WPA2-PSK-CCMP][ESS] Xiaomi_Lee 30:fc:68:ed:f4:d9 11 -63 68/100 [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] TP-LINK_F4D9 d0:c7:c0:1b:b8:a6 11 -65 63/100 [WPA2-PSK-CCMP][ESS] bc:46:99:e2:b4:b4 1 -65 63/100 [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] TP-LINK_B4B4 8c:a6:df:40:35:26 11 -67 57/100 [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] TP-LINK_3526 60:b6:17:4d:c8:c8 13 -63 68/100 [WPA-PSK-CCMP][WPA2-PSK-CCMP][WPS][ESS] ChinaNet-PDU9 c4:c7:55:0f:78:43 1 -63 68/100 [WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP][WPS][ESS] ChinaNet-VUEP a8:6b:7c:41:64:81 1 -69 52/100 [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] jinghua 06:69:68:99:48:d1 6 -69 52/100 [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] TPGuest_guest f0:b4:29:d3:68:4f 7 -65 63/100 [WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP][WPS][ESS] Kitking_01A f4:83:cd:f9:fb:2b 1 -71 47/100 [WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP][ESS] TP-LINK_FB2B 24:69:68:99:48:d1 6 -71 47/100 [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] TP-LINK_XU b0:e2:e5:c8:4d:fa 7 -67 57/100 [WPA-PSK-CCMP][WPA2-PSK-CCMP][WPS][ESS] ChinaNet-UZah 02:0e:5e:29:77:ce 1 -71 47/100 [WPA2-PSK-TKIP+CCMP][ESS] 60:bb:0c:46:7f:8c 1 -75 37/100 [WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP][WPS][ESS] ChinaNet-TwnA fa:8f:ca:7e:49:e2 6 -37 100/100 [ESS] Cast-Kitking.m f2:b4:29:d1:68:4f 7 -63 68/100 [WPS][ESS] ____________WiFi_684E 8c:f2:28:68:3c:9e 1 -75 37/100 [ESS] MERCURY_3C9E
5、连接
从扫描结果看KAHUNA这个热点是信号最强的。我们选择连接这个ap。
> add_network
0
> set_network 0 ssid "KAHUNA" OK > set_network 0 key_mgmt WPA-PSK OK > set_network 0 psk "aa6396aa" OK > set_network 0 pairwise CCMP OK > set_network 0 group CCMP OK > set_network 0 proto WPA2 OK > enable_network 0 OK <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,执行命令:udhcpc -i wlan0
此时已经可以ping通了,在Android系统里,还需要设置DNS这些,在Android里,这些流程会有netd来完成,这里就不说了。
简单描述交互模式如下:
insmod mt7601Usta.ko
ifconfig wlan0 up
wpa_supplicant_8 -iwlan0 -Dwext -c/etc/wpa_supplicant.conf &
交互模式:
wpa_cli_8 -i wlan0
1)add_network//添加网络
2)scan //搜索网络
3)scan_result //显示搜索结果
4)set_net 0 ssid "xxxx" //热点名字
5)set_net 0 psk "xxxxx" //热点密码
6)select_net 0
7)退出交互模式 q
完成以上应该可以连上,但是还没有分配ip
8)动态分配IP
udhcpc -i wlan0
Linux wpa_cli 调试方法相关推荐
- linux内核串口调试,linux 串口调试方法
linux 串口调试方法 作者:syhdjf 发布于:2015-4-8 16:41 最近项目上用到linux下的串口,与下级模块的通信出了些问题,所以写了个小程序想要测试下串口,物理连接是PC端串口调 ...
- Linux内核调试方法总结
[转]Linux内核调试方法总结 目录[-] 一 调试前的准备 二 内核中的bug 三 内核调试配置选项 1 内核配置 2 调试原子操作 四 引发bug并打印信息 1 BUG()和BUG ...
- Linux内核调试方法总结【转】
转自:http://my.oschina.net/fgq611/blog/113249 内核开发比用户空间开发更难的一个因素就是内核调试艰难.内核错误往往会导致系统宕机,很难保留出错时的现场.调试内核 ...
- Linux内核调试方法【转】
转自:http://www.cnblogs.com/shineshqw/articles/2359114.html kdb:只能在汇编代码级进行调试: 优点是不需要两台机器进行调试. gdb:在调试模 ...
- linux vc 调试方法,VC实现【API钩取】【调试法】附加调试器
最近在学习逆向核心,在论坛也发了几篇帖子说说自己的经验,帮助自己巩固知识,也方便了大家. 如果帖子中有什么疏漏甚至不对的地方,请大牛们指出,我会积极改正的! 废话不多说,还是我[Miss丿小沫],上教 ...
- linux反调试代码,linux反调试方法
如何防止自己的程序被调试器跟踪,这是一个很有趣的话题,也是反逆向工程中的一个重要话题.这里简单介绍一下Linux平台上的反调试技术. (本文主要参考:http://blog.txipinet.com/ ...
- linux驱动程序调试方法
驱动程序开发的一个重大难点就是不易调试. 本文目的就是介绍驱动开发中常用的几种直接和间接的调试手段,它们是: 利用printk 查看OOP消息 利用strace 利用内核内置的hacking选项 利用 ...
- linux单步调试方法,linux下gdb单步调试(中).doc
linux下gdb单步调试(中) linux下gdb单步调试(中) linux下gdb单步调试(中) 一.设置断点( BreakPoint ) 我们用 break 命令来设置断点.正面有几点设置断点的 ...
- Linux内核调试方法总结之sysrq
sysrq [用途] Sysrq被称为"魔术组合键", 是内建于Linux内核的调试工具.只要内核没有完全锁住,不管内核在做什么事情,使用这些组合键都可以搜集包括系统内存使用.CP ...
- linux sysrq使用方法,Linux内核调试方法总结之sysrq
sysrq [用途] Sysrq被称为"魔术组合键", 是内建于Linux内核的调试工具.只要内核没有完全锁住,不管内核在做什么事情,使用这些组合键都可以搜集包括系统内存使用.CP ...
最新文章
- Linux/Ubuntu
- 利用阿里云自定义镜像实现服务器数据/网站快速迁移
- android 测试工程 关闭混淆,混淆Android Test项目以及项目(在发布和混淆版本上运行测试)...
- 模型训练速度过慢,GPU利用率低
- 部署nginx反向代理及缓存
- mysql中outer join用什么,mysql – “INNER JOIN”和“OUTER JOIN”有什么区别?
- 1w用户的并发量多大_QQ邮件订阅中心下线:卢松松博客曾经有1W多订阅用户
- 线性表:7.C语言链表实现俄罗斯轮盘赌小游戏
- 没有APP经验的运营者,怎么做好APP推广
- DB2常见错误码注释
- JS 逻辑中断(二)
- 五款优秀的端口扫描工具
- C++排列组合及应用
- RestTemplate application/octet-stream处理
- Crypto one-time-pad
- linux怎么恢复删除的文件
- 如何恢复已删除的照片
- 【JUC高并发编程】—— 初见JUC
- 50款拥有超赞用户体验的精美移动UI设计
- 事件委托(事件代理)概述