Python脚本实现WIFI网络的扫描、连接和断开
【应用背景】
可移动设备(譬如笔记本电脑)在某个大区域范围内活动,途中需要自动连接到不同的无线网络,以实现通信中继。此时可以通过Python编写脚本,不断扫描设备附近的无线网络信号,找出信号强度最高的一个,并进行WIFI连接。同时监测该网络的连接状态,如果连接断开,立即寻找下一个替代网络。
【系统环境】
Ubuntu 18.04
Python 3.6.9
【安装依赖】
如果之前没有使用过 pywifi 这个模块的话,请先执行
pip3 install pywifi
【完整代码】
# coding:utf-8import pywifi
from pywifi import const
import timewifi = pywifi.PyWiFi()
iface = wifi.interfaces()[0]
iface.disconnect()
time.sleep(1)
assert iface.status() in\[const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]print("^_^ 开始扫描附近wifi...")
iface.scan()
time.sleep(10)scanres = iface.scan_results()
nums = len(scanres)
print("数量: %s"%(nums))
print ("| %s | %s | %s | %s"%("WIFIID","SSID","BSSID","signal"))
for index,wifi_info in enumerate(scanres):print("| %s | %s | %s | %s \n"%(index, wifi_info.ssid, wifi_info.bssid, wifi_info.signal))profile = pywifi.Profile()
profile.ssid = "CQU"
profile.auth = const.AUTH_ALG_OPEN
profile.akm.append(const.AKM_TYPE_WPA2PSK)
profile.cipher = const.CIPHER_TYPE_CCMP
profile.key = "12345678"
iface.remove_all_network_profiles()
tmp_profile = iface.add_network_profile(profile)
iface.connect(tmp_profile)
time.sleep(5)
if iface.status() == const.IFACE_CONNECTED: isOK=True
else:isOK=False
print(isOK)
【代码解析】
- 引入 pywifi 模块
import pywifi
from pywifi import const
import time
- 声明一个 pywifi 类对象
wifi = pywifi.PyWiFi()
- 读取第一个无线网卡,并断开其网络连接
iface = wifi.interfaces()[0]
iface.disconnect()
- 查看无线网卡连接状态
assert iface.status() in\[const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]
- 扫描附近 wifi 信号,并遍历打印搜索结果
iface.scan()
scanres = iface.scan_results()
nums = len(scanres)
print("数量: %s"%(nums))
print ("| %s | %s | %s | %s"%("WIFIID","SSID","BSSID","signal"))
for index,wifi_info in enumerate(scanres):print("| %s | %s | %s | %s \n"%(index, wifi_info.ssid, wifi_info.bssid, wifi_info.signal))
- 新建一个 wifi 网络的配置文件,主要配置其账号密码,以及加密方式等信息
profile = pywifi.Profile()
profile.ssid = "CQU"
profile.auth = const.AUTH_ALG_OPEN
profile.akm.append(const.AKM_TYPE_WPA2PSK)
profile.cipher = const.CIPHER_TYPE_CCMP
profile.key = "12345678"
- 移除旧的无线网络配置,并用这个新的配置文件,进行“CQU”的网络连接
iface.remove_all_network_profiles()
tmp_profile = iface.add_network_profile(profile)
iface.connect(tmp_profile)
- 等待一段时间,查看连接状态
time.sleep(5)
if iface.status() == const.IFACE_CONNECTED: isOK=True
else:isOK=False
【友情提示】
其实这个模块学会了,写一个简单的wifi破解脚本是没问题的,甚至可以思考一下如何快速破解!
Python脚本实现WIFI网络的扫描、连接和断开相关推荐
- python连接oracle进行监控_使用Python脚本zabbix自定义key监控oracle连接状态
目的:此次实验目的是为了zabbix服务端能够实时监控某服务器上oracle实例能否正常连接 环境:1.zabbix_server 2.zabbix_agent(含有oracle) 主要知识点: 1. ...
- 如何让计算机断开网络连接网络设置,拨号网络怎么设置连接和断开
不少网友因为一些误操作,导致拨号网络被断开了,应该怎么连接回去呢?学习啦小编在这里给大家介绍拨号网络的设置连接以及断开,希望能帮到大家. 调制解调器器安装完成,线路也连接好了,接下来我们要如何做才能连 ...
- 计算机win7如何连接wifi网络,笔记本怎么连接wifi,教您笔记本怎么连接Wifi
连接wifi网络上网已经不是上面新鲜事物了,对于女生来说手机连接wifi网络也是轻而易举的事情了,但是对于需要操作设置连接wifi网络的女生来说,或许有点云山雾罩了,其实小编早已为可爱的女生们整理一套 ...
- android扫描wifi列表,android 生成wifi热点以及扫描连接wifi
public abstract class WifiAdmin { private static final String TAG ="Show"; private WifiMan ...
- 针对win10的WiFi网络显示“未连接,连接不可用”,系统诊断修复无效
控制面板->网络和internet->网络连接 找到WLAN图标右键->禁用,再次右键->启用,即可. 针对的情况:1.电脑睡眠后,打开,WiFi列表不显示,诊断显示驱动有问题 ...
- Ubuntu无线WI-FI网络慢经常连接超时connection timed out修复笔记
本地在由Ubuntu18.04升级到20.04后WI-FI无线网络出现了肉眼可见的网络慢,浏览器打开网页时经常超时connection has timed out,看视频时也一直卡着转圈. 本来以为是 ...
- python脚本运行时网络异常_Python中异常重试的解决方案详解
前言 大家在做数据抓取的时候,经常遇到由于网络问题导致的程序保存,先前只是记录了错误内容,并对错误内容进行后期处理. 原先的流程: def crawl_page(url): pass def log_ ...
- python脚本运行时网络异常_python脚本运行错误原因,求解!
优质回答 回答者:shohoku shelve是一个对象持久化保存方法,将对象保存到文件里面,一般来说对象的保存和恢复都是通过shelve来进行的. 你的问题是test.txt已经存在,并且格式与sh ...
- ns-3脚本初识——WIFI无线网络:third脚本
ns-3脚本初识--WIFI无线网络:third脚本 ps:本文所有文件和目录的默认根目录均为ns-3.29/. 正如在构建点到点拓扑时看到的点到点拓扑和CSMA拓扑助手对象一样,将在本节中看到等效的 ...
最新文章
- 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包 - - 博客频道 - CSDN.NET...
- 快速重置vuex数据 - Vue
- Teams Bot开发系列:Bot验证
- Android 动态创建控件并设置控件的大小之Android屏幕适配攻略(五)
- vSAN其实很简单-vSAN盘他之重新部署vCenter
- 苹果就降速门道歉,将 iPhone 电池更换价格下调至 218 元!
- 计算机在材料科学中的应用论文,计算机在材料科学中的应用论文(2)
- python由编译器将源程序转化为机器语言、然后执行_高级语言程序设计(Python)-中国大学mooc-车万翔-车万翔...
- 如何删除下一页分节符_怎么去掉分节符下一页
- R语言小代码(聚类练习)
- BZOJ 1135 [POI2009]Lyz 线段树
- Unity接入高德地图
- 王垠:机器与人类视觉能力的差距(3)
- 项目管理 | 项目资源管理(一)
- 机器学习 python
- 微信小程序选项卡数组列表单项选择切换效果
- 第二阶段>>>数据库/SQL/SSM/JDBC/核心总结
- Android 路径(Path)与剪裁(Clipping)详解
- 小笨霖英语笔记本七十七
- 豆豆趣事[2013年09月]