Python中pywifi模块的基本用法讲解
作者:gc_2299 发布时间:2023-09-23 00:21:00
  跨平台的pywifi模块支持操作无线网卡,该模块易于使用,同时支持Windows、Linux等多个系统。pywifi模块不是Python的标准模块,需单独安装,同时该模块依赖comtypes模块,最好同时安装comtypes模块,否则调用pywifi的函数时可能会报错。
pip install comtypes
pip install pywifi
  pywifi模块中的类不算太多,其中主要用到的类包括PyWiFi、Profile、Interface等,详述如下:
  PyWiFi类用于操作无线设备,该类的主要函数interfaces返回可用的无线网卡集合,也即Interface对象集合。
  Profile类表示无线接入点(AP),也即无线网卡搜索出的无线连接,一个Profile对象表示一个可以连接或可用的无线连接,Profile类的主要属性如下表所示:
序号 | 属性名 | 说明 |
---|---|---|
1 | ssid | 无线网络名称 |
2 | auth | 认证算法,包括AUTH_ALG_OPEN、.AUTH_ALG_SHARED两种,默认为AUTH_ALG_OPEN,关于认证算法的介绍详见参考文献5 |
3 | akm | 授权密钥管理方式,包括AKM_TYPE_NONE、AKM_TYPE_WPA、AKM_TYPE_WPAPSK、AKM_TYPE_WPA2、AKM_TYPE_WPA2PSK、AKM_TYPE_UNKNOWN,默认为AKM_TYPE_NONE,关于授权密钥管理方式详见参考文献6-7 |
4 | cipher | 密码类型,包括CIPHER_TYPE_NONE、CIPHER_TYPE_WEP、CIPHER_TYPE_TKIP、CIPHER_TYPE_CCMP、CIPHER_TYPE_UNKNOWN,默认为CIPHER_TYPE_NONE |
5 | key | 无线网络连接密码,如果密码类型不未CIPHER_TYPE_NONE,则应设置本属性值 |
  ;Interface类用于执行无线网络操作,主要包括以下函数:
序号 | 函数名 | 说明 |
---|---|---|
1 | name | 获取无线网卡名称 |
2 | scan | 调用无线网卡扫描可用的无线网络(AP) |
3 | scan_results | 获取scan函数的扫描结果,返回的是Profile对象列表 |
4 | add_network_profile | 添加特定无线网络(AP)以便后续连接 |
5 | remove_network_profile | 移除指定的无线网络(AP) |
6 | remove_all_network_profiles | 移除所有无线网络(AP) |
7 | network_profiles | 获取保存的所有无线网络(AP) |
8 | connect | 连接指定的无线网络(AP) |
9 | disconnect | 断掉当前无线网络连接 |
10 | status | 获取当前无线网络连接状态 |
  最后是照着参考文献3编写的测试程序(测试前请确保已记住当前计算机连接的wifi密码)
import pywifi
wifi = pywifi.PyWiFi()
iface = wifi.interfaces()[0]
print('interface name: ',iface.name())
print('interface status: ',iface.status())
iface.disconnect()
print('interface status: ',iface.status())
profile = pywifi.Profile()
profile.ssid = "XXXXXXX"
profile.auth = pywifi.const.AUTH_ALG_OPEN
profile.akm.append(pywifi.const.AKM_TYPE_WPA2PSK)
profile.cipher = pywifi.const.CIPHER_TYPE_CCMP
profile.key = 'XXXXXXX'
iface.remove_all_network_profiles()
tep_profile = iface.add_network_profile(profile)
iface.connect(tep_profile)
sleep(5)
print('interface status: ',iface.status())
参考文献
[1]https://github.com/awkman/pywifi
[2]https://github.com/awkman/pywifi/blob/master/DOC.md
[3]https://blog.csdn.net/Feng_liangmu/article/details/122911002
[4]https://docs.python.org/zh-cn/3/index.html
[5]https://www.likecs.com/show-655827.html
[6]https://www.likecs.com/show-655827.html
[7]https://code84.com/739564.html
来源:https://blog.csdn.net/gc_2299/article/details/128058252


猜你喜欢
- 本文实例讲述了JS求解三元一次方程组值的方法。分享给大家供大家参考,具体如下:// 求用js 码一段代码求 三元一次方程组的值!// a1
- JAN-1(January) FEB-2(February) MAR-3(March)APR-4(April) MAY-5(Ma
- 本教学使用环境介绍伺服器端:Ubuntu 18.04 LTS资料库:Mariadb 10.1.34(Mysql)语言版本:php 7.3本机
- 本项目为python项目需要安装python及python的opencv模块:opencv_python-4.0.1-cp37-cp37m-
- 本文实例讲述了python 实现的发送邮件模板。分享给大家供大家参考,具体如下:##发送普通txt文件(与发送html邮件不同的是邮件内容设
- 字典(dict)对象是 Python 最常用的数据结构,社区曾有人开玩笑地说:"Python企图用字典装载整个世界",字
- 最近对H1的讨论很多(在文章内容页中),大致有以下两种情况:H1应该用于文章的标题上H1应该用于站点的标题上相信大多数人都偏向第一种方式:用
- 问题你要通过网络连接发送和接受连续数据的大型数组,并尽量减少数据的复制操作。解决方案下面的函数利用 memoryviews 来发送和接受大数
- 问题:mybatis返回的null类型数据消失,导致前端展示出错思路:如果查询出的结果是空值,应当转换成空字符串。当然在前端也能进行判断,但
- 在 MySQL 主从复制时,有时候会碰到这样的故障:在 Slave 上 Slave_IO_Running 和 Slave_SQL_Runni
- Hello,各位读者朋友们好啊,我是小张~这不国庆嘛,就把最近很火的一个韩剧《鱿鱼游戏》刷了下,这部剧整体剧情来说还是非常不错的,很值得一看
- 本节介绍 Python 中的另一个常用模块 —— statistics模块,该模块提供了用于计算数字数据的数理统计量的函数。它包含了很多函数
- 1.c#可以调用msyql的导入导出命令,但是需要先判断客户机是否安装了mysql,及其安装mysql的路径问题。2.查询mysql安装路径
- 使用工具:pexpect库pexpect可以理解为Linux下expect(不知道的可以百度下linux expect)的python封装。
- 在python中我们可以使用speech模块让计算机进行语音输出,我们需要使用如下代码安装该模块。对于如何在终端中安装python相应模块,
- 本文实例讲述了Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能。分享给大家供大家参考,具体如下:由于目前工作
- 引言做接口测试的时候,避免不了操作数据库。因为数据校验需要,测试数据初始化需要、一些参数化场景需要等。数据库操作框架设计这里主要操作mysq
- 本文实例为大家分享了python遗传算法的具体代码,供大家参考,具体内容如下1、基本概念遗传算法(GA)是最早由美国Holland教授提出的
- 视频观看视频Python 类和对象面向对象编程是编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。编写类时,你定义一大类对象都有的
- 一、什么是异常?异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一