• wpa_cli辅助工具的使用


    在linux系统上,wpa_supplicant是一个强大的无线网卡管理程序,它负责Wi-Fi的配置/扫描/连接。

    可以通过wpa_cli程序控制wpa_supplicant进行Wi-Fi的配置与连接,但首先要确保wpa_supplicant运行正常(wpa_supplicant是以持久方式运行的)。

    这一章主要讲如何通过wpa_cli命令快速连接上AP。

    wpa_cli常用命令

    wpa_cli命令说明
    scan发起扫描AP请求
    scan_results获取AP扫描结果
    add_network添加一个新网络
    set_network配置网络SSID/KEY_MGMT/PSK
    enable_network使能网络
    status获取网卡状态
    select_network选择工作网络
    list_network列出所有网络
    remove_netwrok移除网络

    以下操作都假设无线网卡名称为wlan0,如果不正确可以通过ifconfig -a查询当前系统下所有网卡。

    扫描热点

    $ wpa_cli -iwlan0 scan
    $ wpa_cli -iwlan0 scan_results
    
    • 1
    • 2

    scan完成后会返回ok,然后可以通过scan_results获取热点扫描结果,从中选择我们想要连接的热点。

    扫描结果里有AP的关键信息:BSSID / 频率(通道)/ 信号 / 认证方式 和 SSID。

    连接无认证密钥热点

    $ wpa_cli -iwlan0 add_network # 返回的network_id要在接下来使用,例如0
    $ wpa_cli -iwlan0 set_network 0 ssid "Opened-SSID"
    $ wpa_cli -iwlan0 set_netwrok 0 key_mgmt NONE
    $ wpa_cli -iwlan0 enable_network 0
    
    • 1
    • 2
    • 3
    • 4
    1. 通过add_network告知wpa_supplicant进程要创建一个网络,wpa_supplicant创建完成后,会返回一个network_id(数值会累加),比如我们上面的样例返回0.
    2. 通过set_network配置网络(network_id为0)的SSID为Opened-SSID.
    3. 通过set_network配置网络(network_id为0)的密钥管理方式为NONE(认证不需要加密,传输不需要加密)
    4. 使能network_id为0的网络

    以上操作完成后,如果设备网络环境正常,设备会连接到名为Opened-SSID的AP,但此时设备并不能上网,需要同路由协商获取一个IP方可联网。

    udhcpc -i wlan0
    
    • 1

    udhcpc获取到IP后,可以访问路由所在网络。如果路由连接了Internet,那么设备就可以访问Internet进行上网。

    我们可以通过status命令查询无线网卡状态,查询命令如下:

    $ wpa_cli -iwlan0 status
    
    • 1

    连接WEP密钥热点

    $ wpa_cli -iwlan0 add_network # 假设这次返回1
    $ wpa_cli -iwlan0 set_network 1 ssid "WEP-SSID"
    $ wpa_cli -iwlan0 set_network 1 key_mgmt NONE
    $ wpa_cli -iwlan0 set_network 1 wep_key0 "12345678"
    $ wpa_cli -iwlan0 enable_network 1
    
    • 1
    • 2
    • 3
    • 4
    • 5

    连接WEP密钥热点比连接OPEN热点多了一步wep_ke0属性配置,它是用来配置网络(network_id为1)的WEP密钥方式的密码。
    其它同上。

    连接WPA-PSK/WPA2-PSK密钥热点

    $ wpa_cli -iwlan0 add_network # 假设这次返回2
    $ wpa_cli -iwlan0 set_network 2 ssid "PSK-SSID"
    $ wpa_cli -iwlan0 set_network 2 key_mgmt WPA-PSK
    $ wpa_cli -iwlan0 set_network 2 psk "1234567890"
    $ wpa_cli -iwlan0 enable_network 2
    
    • 1
    • 2
    • 3
    • 4
    • 5

    连接WPA-PSK/WPA2-PSK密钥热点将key_mgmt密钥管理协议配置为WPA-PSK/WPA2-PSK;同时用psk属性来配置密码。
    其它同上。

    切换已配置热点

    假设我们已经通过wpa_cli创建且使能了多个网络,可以通过select_network来切换热点连接,切换命令如下:

    $ wpa_cli -iwlan0 select_network $network_id
    
    • 1

    $network_id是每次add_network返回的netowr_id。

    连接隐藏热点

    隐藏热点不会通过Beacon帧来宣布自身的存在,所以设备(工作站)一般要主要通过(Probe Request)主动扫描热点,主动扫描命令开启如下:

    $ wpa_cli -iwlan0 set_network $network_id scan_ssid 1
    
    • 1
  • 相关阅读:
    论文笔记:Pointing Novel Objects in Image Captioning
    用 TripletLoss 优化bert ranking
    【Transformers】第 5 章:微调文本分类的语言模型
    Actor 生命周期
    用JS实现简单的屏幕录像机
    产品经理基础-10运营平台端产品设计(完结~撒花~)
    【UML】详解UML类图
    React之高阶组件
    数据增强Mixup原理与代码解读
    Golang | Web开发之Gin框架快速入门基础实践
  • 原文地址:https://blog.csdn.net/cocoron/article/details/126085166