如何利用python和DOS获取wifi密码


Posted in Python onMarch 31, 2021

CMD命令获取电脑里配置过的wifi信息

设定一个场景,假如我忘记了自家的wifi密码,这时候小伙伴来家里跟我开黑,问我wifi密码是多少?我就抓住了这个小秀一波的机会。

上才艺:

按下win+R键,输入CMD打开DOS窗口,然后输入以下命令查看电脑里配置过的wifi。

netsh wlan show profiles

如何利用python和DOS获取wifi密码

这是电脑连过的wifi,假设我家里的wifi是CMCC-CMCC,接下来我需要查看CMCC-CMCC的信息,上代码:

netsh wlan show profiles CMCC-CMCC

如何利用python和DOS获取wifi密码

可以看到,安全密钥这里显示的是存在,说明这个wifi是有密码的,接下来,我们用在上面的代码基础上加上"key=clear",密码就会显示了。(不用担心这个clear,不会删除你的wifi密码的,只是一个显示作用)

netsh wlan show profiles CMCC-CMCC key=clear

如何利用python和DOS获取wifi密码

这个就是我的wifi密码了!

用python脚本来实现这一操作,并获取所有配置过的wifi密码

首先导入两个库subprocess、re

  • subprocess 模块允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值。
  • re 模块使 Python 语言拥有全部的正则表达式功能。

我们建立一个通道来执行DOS命令,列出所有的连接过的wifi,并且用profile_names来存下这些WIFI名称,输出采用字典的形式,每个wifi名和密码为一个字典中的键值对,并且先定义一个列表用来存下这些字典。

command_output = subprocess.run(['netsh','wlan','show','profiles'],capture_output= True).stdout.decode(encoding='gbk')
profile_names = re.findall('所有用户配置文件 :(.*)\r',command_output)#返回一个列表
wifi_list=list()

将下一个命令即“查看wifi是否存在密钥”写进代码

if len(profile_names) != 0:
  for name in profile_names:
    wifi_profile = dict()
    profile_info = subprocess.run(['netsh','wlan','show','profiles',name],capture_output=True).stdout.decode(encoding='gbk')

如果安全密钥的内容不是存在的话,说明wifi是没有密码的,我们就不用去瞎搞了,直接continue了。如果是存在的话,我们才进行下一步操作,就是进行下一个命令:加上key=clear,查看密码。这里解释一下为什么要用name[1:],可能是因为编码的原因,通过正则得来的name前面包含了一个空格,如果直接用这个name的话,电脑会告诉你没有这个wifi。例如上文中,我的wifi是“CMCC-CMCC”,当是通过正则获取的wifi名就是“ CMCC-CMCC”多了一个空格。电脑会以为这两个东西它不一样。。。

if re.search('安全密钥        : 不存在',profile_info):
      continue
    else:
      wifi_profile['ssid'] = name[1:]
      profile_info_pass = subprocess.run(['netsh','wlan','show','profiles',name[1:],'key=clear'],capture_output=True).stdout.decode(encoding='gbk')
      password = re.search('关键内容      :(.*)\r',profile_info_pass)
      if password == None:
        wifi_profile["password"]=None
      else:
        wifi_profile["password"] = password[1]
      wifi_list.append(wifi_profile)

最后,只要把列表(wifi_list)中的内容打印出来就行了,我把所有代码跟在后面,方便大家理解。

import subprocess
import re
command_output = subprocess.run(['netsh','wlan','show','profiles'],capture_output= True).stdout.decode(encoding='gbk')
profile_names = re.findall('所有用户配置文件 :(.*)\r',command_output)
wifi_list=list()
print(type(profile_names))
if len(profile_names) != 0:
  for name in profile_names:
    wifi_profile = dict()
    profile_info = subprocess.run(['netsh','wlan','show','profiles',name],capture_output=True).stdout.decode(encoding='gbk')
    if re.search('安全密钥        : 不存在',profile_info):
      continue
    else:
      wifi_profile['ssid'] = name[1:]
      profile_info_pass = subprocess.run(['netsh','wlan','show','profiles',name[1:],'key=clear'],capture_output=True).stdout.decode(encoding='gbk')
      password = re.search('关键内容      :(.*)\r',profile_info_pass)
      if password == None:
        wifi_profile["password"]=None
      else:
        wifi_profile["password"] = password[1]
      wifi_list.append(wifi_profile)
for x in range(len(wifi_list)):
  print(wifi_list[x])

如果大家有什么高见请批评指正

以上就是如何利用python和DOS获取wifi密码的详细内容,更多关于用python和DOS获取wifi密码的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python实现员工管理系统
Jan 11 Python
django js实现部分页面刷新的示例代码
May 28 Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
Jul 17 Python
详解PyCharm配置Anaconda的艰难心路历程
Aug 13 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
Aug 14 Python
利用python实现.dcm格式图像转为.jpg格式
Jan 13 Python
python+adb命令实现自动刷视频脚本案例
Apr 23 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
Jun 28 Python
Keras中 ImageDataGenerator函数的参数用法
Jul 03 Python
Matlab中plot基本用法的具体使用
Jul 17 Python
通过代码实例解析Pytest运行流程
Aug 20 Python
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
Apr 20 Python
python爬虫selenium模块详解
Mar 30 #Python
python将图片转为矢量图的方法步骤
Mar 30 #Python
一文搞懂如何实现Go 超时控制
golang中的空接口使用详解
Mar 30 #Python
在 Golang 中实现 Cache::remember 方法详解
Mar 30 #Python
Python离线安装openpyxl模块的步骤
解决Jupyter-notebook不弹出默认浏览器的问题
You might like
php模拟post行为代码总结(POST方式不是绝对安全)
2012/02/22 PHP
php中计算未知长度的字符串哪个字符出现的次数最多的代码
2012/08/14 PHP
解决nginx不支持thinkphp中pathinfo的问题
2015/07/21 PHP
javascript 实现简单的table排序及table操作练习
2012/12/28 Javascript
jQuery中height()方法用法实例
2014/12/24 Javascript
jQuery学习笔记之基础中的基础
2015/01/19 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
提高JavaScript执行效率的23个实用技巧
2017/03/01 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
2017/10/12 Javascript
详解VUE 数组更新
2017/12/16 Javascript
vue 实现全选全不选的示例代码
2018/03/29 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
工作中常用到的ES6语法
2018/09/04 Javascript
Vue异步组件处理路由组件加载状态的解决方案
2018/09/07 Javascript
微信小程序实现蒙版弹窗效果
2018/11/01 Javascript
微信小程序提取公用函数到util.js及使用方法示例
2019/01/10 Javascript
vue-cli3 从搭建到优化的详细步骤
2019/01/20 Javascript
Vue+Express实现登录注销功能的实例代码
2019/05/05 Javascript
微信小程序实现左侧滑栏过程解析
2019/08/26 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
2019/09/25 Javascript
详解 javascript对象创建模式
2020/10/30 Javascript
Vue+Element-U实现分页显示效果
2020/11/15 Javascript
Python中的zip函数使用示例
2015/01/29 Python
python内存管理分析
2015/04/08 Python
selenium3+python3环境搭建教程图解
2018/12/07 Python
Python中的asyncio代码详解
2019/06/10 Python
Django配置跨域并开发测试接口
2020/11/04 Python
基于HTML5 的人脸识别活体认证的实现方法
2016/06/22 HTML / CSS
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
一道SQL面试题
2012/12/31 面试题
创业计划书中要认真思考的问题
2013/12/28 职场文书
爱国主义教育活动总结
2014/05/07 职场文书
法人委托书的范本格式
2014/09/11 职场文书
党员年度个人总结
2015/02/14 职场文书
工作自我推荐信范文
2015/03/25 职场文书
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js