上周写了一篇博客,《用 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 密码本,然后逻辑如下。
- 通过 pywifi 模块扫描所有 Wifi 热点
- 迭代各个热点
- 读取密码本文件,然后逐一使用密码连接当前正在迭代的 Wifi,获取连接状态
- 连接成功记录到文件中,连接失败舍弃掉
- 密码本遍历完毕,更换下一个热点,继续执行相同操作。
一些疑问的解答
这种方式破解密码速度怎么样?快么 很慢,除非对方使用的是 12345678,11111111,66666666 这样简单的密码。
这代码到底有没有用? 对于获取 Wifi 密码来说,这代码没啥毛病,但是效率不高,实战中效果并不理想。
可以使用多线程破解吗 不可以,电脑网卡同时只能连接一个 Wifi,无法使用多线程或者多进程操作。当然你在电脑上多安装几个网卡,那就另说了。
有没有好一些的 wifi 破解思路 研究单片机 Wifi 攻击去吧,当然使用社工直接去问,更快速一些。 当然也可以研究一下 Aircrack-ng ,也能获取到 wifi 密码。
密码本哪里有 评论区留言邮箱或者联系方式,或者点击下面卡片,找橡皮擦索取。
回到本文标题《能否破解邻居的 WiFI 密码呢?》,以各位群友测试反馈,还挺简单的!!!
本文正在参加「金石计划 . 瓜分6万现金大奖」