使用wpa_supplicant和wpa_cli 扫描wifi热点及配网

devtools/2025/2/12 11:27:54/

一:简要说明

        交叉编译wpa_supplicant工具后会有wpa_supplicant和wpa_cli两个程序生产,如果知道需要连接的wifi热点及密码的话不需要遍历及查询所有wifi热点的名字及信号强度等信息的话,使用wpa_supplicant即可,否则还需要使用wpa_cli来查询遍历wifi热点及配网。

        wpa_cli不能单独使用,需要先启动wpa_supplicant后在运行wpa_cli,因为wpa_supplicant作为服务端,wpa_cli作为客户端需要访问wpa_supplicant

二:加载无线网卡驱动

        WiFi的扫描及配网本质是网卡驱动实现的,所以必须先加载网卡驱动

        insmod cfg80211.ko

        insmod rtl8733bu.ko

        mkdir /tmp/wpa_supplicants   这个是wpa_supplicants的运行路径,wpa_supplicants的配置文件会指定ctrl_interface 到这里,默认是/var/run/wpa_supplicants

三:扫描遍历wifi热点及配网

           1 : ./wpa_supplicant  -i wlan0 -c wpa_supplicant.conf  -B

                 wpa_supplicant.conf 配置如下

ctrl_interface=/tmp/wpa_supplicants
update_config=1

        2:   扫描WiFi热点

        ./wpa_cli -i wlan0  -p /tmp/wpa_supplicants  scan      

        注意1:如果没有加-p指定 wpa_supplicants路径,则会提示下面错误,因为默认路径为

        /var/run/wpa_supplicant,或者将配置中的/tmp/wpa_supplicants改成/var/run/wpa_supplicant则无此问题不用-p参数

       Failed to connect to non-global ctrl_ifname: wlan0  error: No such file or directory

        注意2:

        scan扫描过程需要一定的时间,扫描过程中将使wpa_supplicant处于busy状态,再次发送scan扫描将失败

        

     3:查看扫描结果

     ./wpa_cli -i wlan0  -p /tmp/wpa_supplicants scan_results

     注意:

        scan_results打印出来的是可获得的wifi的列表,列表包含WiFi热点的ssid(名称)、bssid(mac地址)、signal level(信号强度,单位dBm)、flags(加密类型)等。

        

        4:连接wifi热点

                4.1:增加一个网络id,后面根据这个网络编号来配置wifi热点,我这里得到的编号为0

                ./wpa_cli -i wlan0  -p /tmp/wpa_supplicants add_network

                

                4.2:配置wifi热点的名字ssid

                        ./wpa_cli -i wlan0 -p /tmp/wpa_supplicants  set_network 网络编号 ssid '"wifi名字'

                        eg:./wpa_cli -i wlan0 -p /tmp/wpa_supplicants  set_network 0 ssid '"hfzuo"'

                4.3: 配置wifi热点的密码psd

                        ./wpa_cli -i wlan0 -p /tmp/wpa_supplicants set_network 网络编号 psk '"密码"'  

                        eg:./wpa_cli -i wlan0 -p /tmp/wpa_supplicants set_network 0 psk '"88888888"'

                4.4 查看网络列表

                        ./wpa_cli -i wlan0 -p /tmp/wpa_supplicants  list_network

                4.5 选择网络

                        ./wpa_cli -i wlan0  -p /tmp/wpa_supplicants  select_network 网络编号

                        eg:./wpa_cli -i wlan0  -p /tmp/wpa_supplicants  select_network 0

                4.6 请求动态分配IP

                        udhcpc -i wlan0 &

                4.7 查看wifi状态

                        ./wpa_cli -i wlan0  -p /tmp/wpa_supplicants  status

                4.8 保存wifi热点信息

                 ./wpa_cli -i wlan0 -p /tmp/wpa_supplicants save_config

                保存的wifi热点信息到配置文件/etc/wpa_supplicant.conf 里了

                下次直接运行./wpa_supplicant  -i wlan0 -c /etc/wpa_supplicant.conf  -B 既可自动连上hfzuo的热点

                wpa_supplicant.conf 内容如下

                

ctrl_interface=/tmp/wpa_supplicants
update_config=1
network={
ssid="hfzuo"
psk="88888888"
proto=WPA2
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
}

四:其他未测试验证的命令

        1:停止使用wifi热点(此时还连载wifi热点,只是没有激活使用)

        wpa_cli -i wlan0 disable_network 网络编号 

        2:使能wifi热点

        wpa_cli -i wlan0 enable_network 网络编号

        3:断开wifi热点

        wpa_cli -i wlan0 disconnect

        4:重连wifi热点

        wpa_cli -i wlan0 reconnect

        5:删除wifi热点

        wpa_cli -i wlan0 remove_network 网络编号

                        

        

        


http://www.ppmy.cn/devtools/157654.html

相关文章

redis底层数据结构——整数集合

文章目录 定义内部实现升级升级的好处提升灵活性节约内存 降级总结 定义 整数集合(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层…

NetCore项目实现IP黑名单功能

文章目录 前言代码配置技术细节小结 前言 使用场景:使用IP黑名单防止已知恶意 IP 地址的访问,降低系统被攻击的风险。阻止来自特定 IP 地址的大量请求,可以减轻分布式拒绝服务(DDoS)攻击的影响。通过监控访问日志&…

【WB 深度学习实验管理】使用 PyTorch Lightning 实现高效的图像分类实验跟踪

本文使用到的 Jupyter Notebook 可在GitHub仓库002文件夹找到,别忘了给仓库点个小心心~~~ https://github.com/LFF8888/FF-Studio-Resources 在机器学习项目中,实验跟踪和结果可视化是至关重要的环节。无论是调整超参数、优化模型架构,还是监…

Linux内核链表

Linux内核链表 去掉了一些硬件级宏定义。 /* SPDX-License-Identifier: GPL-2.0 */ #ifndef _LINUX_LIST_H #define _LINUX_LIST_H#define NOT_SUPPORT_TYPEOF 0 //不支持typeof获取pos类型/*双向链表*/ /** Circular doubly linked list implementation.** Some of the in…

机器学习之数学基础:线性代数、微积分、概率论 | PyTorch 深度学习实战

前一篇文章,使用线性回归模型逼近目标模型 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 本篇文章内容来自于 强化学习必修课:引领人工智能新时代【梗直哥瞿炜】 线性代数、微积分、概率论 …

collabora online+nextcloud+mariadb在线文档协助

1、环境 龙蜥os 8.9 docker 2、安装docker dnf -y install dnf-plugins-core dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sed -i shttps://download.docker.comhttps://mirrors.tuna.tsinghua.edu.cn/docker-ce /etc/yum.repos.…

加速汽车软件升级——堆栈刷写技术的应用与挑战

一、背景和挑战 | 背景: 当前汽车市场竞争激烈,多品牌并存,新车发布速度加快,价格逐渐降低,功能日益多样化。随着车辆功能的不断提升与优化,ECU(电子控制单元)的代码量也随之增加&…

【算法】动态规划专题⑥ —— 完全背包问题 python

目录 前置知识进入正题模板 前置知识 【算法】动态规划专题⑤ —— 0-1背包问题 滚动数组优化 完全背包问题是动态规划中的一种经典问题,它与0-1背包问题相似,但有一个关键的区别:在完全背包问题中,每种物品都有无限的数量可用。…