#创作者激励#使用命令行wpa工具连接WiFi

软通动力HOS
发布于 2023-3-23 09:01
浏览
1收藏

【本文正在参加2023年第一期优质创作者激励计划】

引言

通过adb命令行或hdc命令行,可以直接打开supplicant,从而运行wpa_cli,可以解决没有显示屏而无法操作WIFI的问题,还可以避免UI的问题带到driver。

一、wpa_supplicant

首先打开wpa_supplicant,运行起后才可以使用wpa_cli来连接

#wpa_supplicant -h
[WpaSample]init enter.
wpa_supplicant v2.9
Copyright (c) 2003-2019, Jouni Malinen <j@w1.fi> and contributors

This software may be distributed under the terms of the BSD license.
See README for more details.

usage:
  wpa_supplicant [-BddhKLqqtvW] [-P<pid file>] [-g<global ctrl>] \
        [-G<group>] \
        -i<ifname> -c<config file> [-C<ctrl>] [-D<driver>] [-p<driver_param>] \
        [-b<br_ifname>] [-e<entropy file>] [-f<debug file>] \
        [-o<override driver>] [-O<override ctrl>] \
        [-N -i<ifname> -c<conf> [-C<ctrl>] [-D<driver>] \
        [-m<P2P Device config file>] \
        [-p<driver_param>] [-b<br_ifname>] [-I<config file>] ...]

drivers:
  nl80211 = Linux nl80211/cfg80211
options:
  -b = optional bridge interface name
  -B = run daemon in the background
  -c = Configuration file
  -C = ctrl_interface parameter (only used if -c is not)
  -d = increase debugging verbosity (-dd even more)
  -D = driver name (can be multiple drivers: nl80211,wext)
  -e = entropy file
  -f = log output to debug file instead of stdout
  -g = global ctrl_interface
  -G = global ctrl_interface group
  -h = show this help text
  -i = interface name
  -I = additional configuration file
  -K = include keys (passwords, etc.) in debug output
  -L = show license (BSD)
  -m = Configuration file for the P2P Device interface
  -N = start describing new interface
  -o = override driver parameter for new interfaces
  -O = override ctrl_interface parameter for new interfaces
  -p = driver parameters
  -P = PID file
  -q = decrease debugging verbosity (-qq even less)
  -t = include timestamp in debug messages
  -v = show version
  -W = wait for a control interface monitor before starting
example:
  wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf


二、wpa_cli

wpa_cli 是一个基于文本的前端程序,用于与 wpa_supplicant 交互,wpa_supplicant运行起后,需要另开一个shell串口使用wpa_cli进行搜索和连接。
wpa_cli 支持两种模式:交互模式和命令行模式。两种模式共享相同的命令集,主要区别在于交互模式提供对未经请求的消息(事件消息、用户名/密码请求)的访问。

交互模式常用操作:

查看当前状态

wpa_state=DISCONNECTED
p2p_device_address=4a:e7:da:8d:71:5d
address=48:e7:da:8d:71:5d
uuid=e2e48e16-dc35-59b5-9d30-6c31677e5937

搜索wifi网络

使用scan命令搜索网络,显示ok后使用scan_result查看搜索结果

OK

>  scan_result
bssid / frequency / signal level / flags / ssid
ec:60:73:ff:bc:22       2412    -40     [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]      TP-LINK_BC22
f6:60:73:ff:bc:22       2412    -41     [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]
82:50:92:9a:7f:c4       2412    -46     [WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][WPS][ESS]       test999
82:56:89:e4:2c:9c       2437    -59     [WPA2-PSK-CCMP][ESS]    nova 7 SE 5G
dc:21:e2:4e:f8:c1       2437    -62     [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]      \x00
58:48:49:01:23:7c       2462    -66     [WPA2-PSK-CCMP][ESS]    TP-LINK_1987
dc:21:e2:4e:ef:e1       2437    -78     [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]      \x00
e8:4e:06:9d:85:74       2437    -79     [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]      4G-WIFI-8574
e8:91:20:fc:2c:ac       2457    -37     [ESS]   MOWiFi_2.4G_2CAB

新建网络并连接无密码的wifi

>set_network 0 ssid “666”
>set_network 0 key_mgmt NONE
>enable_network 0

#创作者激励#使用命令行wpa工具连接WiFi-鸿蒙开发者社区

新建网络并连接有密码的wifi

>add_network (assume returns 2)
>set_network 2 ssid “666”
>set_network 2 psk “your pre-shared key”
>select_network 2 
>enable_network 2

#创作者激励#使用命令行wpa工具连接WiFi-鸿蒙开发者社区

命令模式常用命令:

wpa_supplicant -iwlan0 -Dnl80211 -c/etc/ambaipcam/IPC_Q313/config/wlan/wpa_supplicant.conf -B
#查询网卡状态
wpa_cli -p/var/run/wpa_supplicant -iwlan0 status
#搜索附近网络功能  no/ok
wpa_cli -i wlan0 scan
#搜索附近网络,并列出结果
wpa_cli -i wlan0 scan_result
#查看当前连接的是哪个网络
wpa_cli -i wlan0 list_network    
#获取一个存储wifi结构的id,假设为1
wpa_cli -i wlan0 add_network
#设置ID为1的热点SSID
wpa_cli -i wlan0 set_network 1 ssid '"HO4428"'  
#设置ID为1的热点的密码
wpa_cli -i wlan0 set_network 1 psk '"442701102"'
#设置加密方式,可以不加
wpa_cli -i wlan0 set_network 1 key_mgmt WPA2-PSK-CCMP       
#启动连接ID为1的网络
wpa_cli -i wlan0 enable_network 1
#选择网络0(这样做的好处在于,可以取消先前的其它网络连接)
wpa_cli -i wlan0 select_network 1
#保存刚刚填写的wifi帐号,写入配置文件
wpa_cli -i wlan0 save_config
#请求自动分配IP地址,-b:后台(back) –i:指定接口 –q:获得续约后退出,如果想尽在前台运行,则去掉-b,加上-f
#不用不加,会自动分配
udhcpc -b -i wlan0 -q 

总结

wpa_supplicant包含两个主要的可执行工具:wpa_supplicant和wpa_cli。wpa_supplicant是核心程序,它和wpa_cli的关系就是服务和客户端的关系:后台运行wpa_supplicant,使用wpa_cli来搜索、设置、和连接网络。

已于2023-3-23 09:01:38修改
2
收藏 1
回复
举报
回复
    相关推荐