【应用背景】

可移动设备(譬如笔记本电脑)在某个大区域范围内活动,途中需要自动连接到不同的无线网络,以实现通信中继。此时可以通过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网络的扫描、连接和断开相关推荐

  1. python连接oracle进行监控_使用Python脚本zabbix自定义key监控oracle连接状态

    目的:此次实验目的是为了zabbix服务端能够实时监控某服务器上oracle实例能否正常连接 环境:1.zabbix_server 2.zabbix_agent(含有oracle) 主要知识点: 1. ...

  2. 如何让计算机断开网络连接网络设置,拨号网络怎么设置连接和断开

    不少网友因为一些误操作,导致拨号网络被断开了,应该怎么连接回去呢?学习啦小编在这里给大家介绍拨号网络的设置连接以及断开,希望能帮到大家. 调制解调器器安装完成,线路也连接好了,接下来我们要如何做才能连 ...

  3. 计算机win7如何连接wifi网络,笔记本怎么连接wifi,教您笔记本怎么连接Wifi

    连接wifi网络上网已经不是上面新鲜事物了,对于女生来说手机连接wifi网络也是轻而易举的事情了,但是对于需要操作设置连接wifi网络的女生来说,或许有点云山雾罩了,其实小编早已为可爱的女生们整理一套 ...

  4. android扫描wifi列表,android 生成wifi热点以及扫描连接wifi

    public abstract class WifiAdmin { private static final String TAG ="Show"; private WifiMan ...

  5. 针对win10的WiFi网络显示“未连接,连接不可用”,系统诊断修复无效

    控制面板->网络和internet->网络连接 找到WLAN图标右键->禁用,再次右键->启用,即可. 针对的情况:1.电脑睡眠后,打开,WiFi列表不显示,诊断显示驱动有问题 ...

  6. Ubuntu无线WI-FI网络慢经常连接超时connection timed out修复笔记

    本地在由Ubuntu18.04升级到20.04后WI-FI无线网络出现了肉眼可见的网络慢,浏览器打开网页时经常超时connection has timed out,看视频时也一直卡着转圈. 本来以为是 ...

  7. python脚本运行时网络异常_Python中异常重试的解决方案详解

    前言 大家在做数据抓取的时候,经常遇到由于网络问题导致的程序保存,先前只是记录了错误内容,并对错误内容进行后期处理. 原先的流程: def crawl_page(url): pass def log_ ...

  8. python脚本运行时网络异常_python脚本运行错误原因,求解!

    优质回答 回答者:shohoku shelve是一个对象持久化保存方法,将对象保存到文件里面,一般来说对象的保存和恢复都是通过shelve来进行的. 你的问题是test.txt已经存在,并且格式与sh ...

  9. ns-3脚本初识——WIFI无线网络:third脚本

    ns-3脚本初识--WIFI无线网络:third脚本 ps:本文所有文件和目录的默认根目录均为ns-3.29/. 正如在构建点到点拓扑时看到的点到点拓扑和CSMA拓扑助手对象一样,将在本节中看到等效的 ...

最新文章

  1. 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包 - - 博客频道 - CSDN.NET...
  2. 快速重置vuex数据 - Vue
  3. Teams Bot开发系列:Bot验证
  4. Android 动态创建控件并设置控件的大小之Android屏幕适配攻略(五)
  5. vSAN其实很简单-vSAN盘他之重新部署vCenter
  6. 苹果就降速门道歉,将 iPhone 电池更换价格下调至 218 元!
  7. 计算机在材料科学中的应用论文,计算机在材料科学中的应用论文(2)
  8. python由编译器将源程序转化为机器语言、然后执行_高级语言程序设计(Python)-中国大学mooc-车万翔-车万翔...
  9. 如何删除下一页分节符_怎么去掉分节符下一页
  10. R语言小代码(聚类练习)
  11. BZOJ 1135 [POI2009]Lyz 线段树
  12. Unity接入高德地图
  13. 王垠:机器与人类视觉能力的差距(3)
  14. 项目管理 | 项目资源管理(一)
  15. 机器学习 python
  16. 微信小程序选项卡数组列表单项选择切换效果
  17. 第二阶段>>>数据库/SQL/SSM/JDBC/核心总结
  18. Android 路径(Path)与剪裁(Clipping)详解
  19. 小笨霖英语笔记本七十七
  20. 豆豆趣事[2013年09月]

热门文章

  1. 面向对象的三个基本概念
  2. Java实现XML格式化
  3. yml文件中${}的使用
  4. 但得有心能自奋,何愁他日不雄飞
  5. 疯狂!电动汽车科技领域的投资正爆发式增长 | 数据报告
  6. 给idea设置注释(超便捷)
  7. 一篇让你熟练掌握Google Guava包(全网最全)
  8. 微信支付宝收款二维码还能用吗?权威解读
  9. 户口从海峡人才迁入到厦门人才
  10. 2022年8月6日(星期六):骑行宁湖公园