如何利用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 安装virtualenv和virtualenvwrapper的方法
Jan 13 Python
python GUI实例学习
Nov 21 Python
python+selenium实现163邮箱自动登陆的方法
Dec 31 Python
Django实现组合搜索的方法示例
Jan 23 Python
nohup后台启动Python脚本,log不刷新的解决方法
Jan 14 Python
pyQt5实时刷新界面的示例
Jun 25 Python
python求最大值最小值方法总结
Jun 25 Python
python构建指数平滑预测模型示例
Nov 21 Python
关于初始种子自动选取的区域生长实例(python+opencv)
Jan 16 Python
在django admin中配置搜索域是一个外键时的处理方法
May 20 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
Feb 02 Python
Pytorch 统计模型参数量的操作 param.numel()
May 13 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 Directory 函数的详解
2013/03/07 PHP
php分页函数示例代码分享
2014/02/24 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
2015/02/07 PHP
分享5个非常有用的Laravel Blade指令
2018/05/30 PHP
jquery 简短右键菜单 多浏览器兼容
2010/01/01 Javascript
javascript入门基础之私有变量
2010/02/23 Javascript
ExtJs 表单提交登陆实现代码
2010/08/19 Javascript
firefox下frameset取不到值的解决方法
2010/09/06 Javascript
jquery阻止后续事件只执行第一个事件
2014/07/24 Javascript
javascript验证身份证号
2015/03/03 Javascript
AngularJS快速入门
2015/04/02 Javascript
纯JS实现旋转图片3D展示效果
2015/04/12 Javascript
基于jquery实现弹幕效果
2016/09/29 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
2017/05/18 Javascript
webpack开发跨域问题解决办法
2017/08/03 Javascript
JS实现闭包中的沙箱模式示例
2017/09/07 Javascript
使用vue-aplayer插件时出现的问题的解决
2018/03/02 Javascript
JavaScript EventEmitter 背后的秘密 完整版
2018/03/29 Javascript
Angular4.0动画操作实例详解
2019/05/10 Javascript
如何利用Node.js与JSON搭建简单的动态服务器
2020/06/16 Javascript
ES6字符串的扩展实例
2020/12/21 Javascript
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
Python运行的17个时新手常见错误小结
2012/08/07 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
python3.7简单的爬虫实例详解
2019/07/08 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
2020/02/24 Python
python实现数学模型(插值、拟合和微分方程)
2020/11/13 Python
电子商务专业学生的学习自我评价
2013/10/27 职场文书
购房协议书范本
2014/04/11 职场文书
四风问题查摆剖析材料
2014/10/11 职场文书
2014年班干部工作总结
2014/11/25 职场文书
《只有一个地球》教学反思
2016/02/16 职场文书
django注册用邮箱发送验证码的实现
2021/04/18 Python
Python爬虫之爬取哔哩哔哩热门视频排行榜
2021/04/28 Python
python opencv通过按键采集图片源码
2021/05/20 Python
基于angular实现树形二级表格
2021/10/16 Javascript