如何利用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 相关文章推荐
推荐11个实用Python库
Jan 23 Python
Django中实现点击图片链接强制直接下载的方法
May 14 Python
详解python里使用正则表达式的分组命名方式
Oct 24 Python
Python Matplotlib实现三维数据的散点图绘制
Mar 19 Python
python实现银联支付和支付宝支付接入
May 07 Python
django foreignkey(外键)的实现
Jul 29 Python
python 采用paramiko 远程执行命令及报错解决
Oct 21 Python
简单介绍django提供的加密算法
Dec 18 Python
Python3 实现爬取网站下所有URL方式
Jan 16 Python
使用Tensorboard工具查看Loss损失率
Feb 15 Python
django执行原始查询sql,并返回Dict字典例子
Apr 01 Python
解决Python 写文件报错TypeError的问题
Oct 23 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 配置文件中open_basedir选项作用
2009/07/19 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
2019/10/11 PHP
JQuery困惑—包装集 DOM节点
2009/10/16 Javascript
基于JQuery实现鼠标点击文本框显示隐藏提示文本
2012/02/23 Javascript
jQuery mobile转换url地址及获取url中目录部分的方法
2015/12/04 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
2020/12/22 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
2016/08/25 Javascript
微信小程序 wxapp画布 canvas详细介绍
2016/10/31 Javascript
JS获取字符对应的ASCII码实例
2017/09/10 Javascript
使用typescript开发angular模块并发布npm包
2018/04/19 Javascript
vue项目动态设置页面title及是否缓存页面的问题
2018/11/08 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
八种Vue组件间通讯方式合集(推荐)
2020/08/18 Javascript
Element-ui upload上传文件限制的解决方法
2021/01/22 Javascript
[06:53]2018DOTA2国际邀请赛寻真——勇于创新的Vici Gaming
2018/08/14 DOTA
python实现k均值算法示例(k均值聚类算法)
2014/03/16 Python
python基础教程之基本数据类型和变量声明介绍
2014/08/29 Python
跟老齐学Python之让人欢喜让人忧的迭代
2014/10/02 Python
在Python中实现贪婪排名算法的教程
2015/04/17 Python
让Python代码更快运行的5种方法
2015/06/21 Python
基于python3 类的属性、方法、封装、继承实例讲解
2017/09/19 Python
python爬虫获取淘宝天猫商品详细参数
2020/06/23 Python
Python使用matplotlib实现基础绘图功能示例
2018/07/03 Python
python遍历文件目录、批量处理同类文件
2019/08/31 Python
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
来自美国主售篮球鞋的零售商店:KICKSUSA
2017/11/28 全球购物
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
给水工程专业毕业生自荐信
2014/01/28 职场文书
校运会入场式解说词
2014/02/10 职场文书
团委竞选演讲稿
2014/04/24 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书
创业计划书之熟食店
2019/10/16 职场文书
Redis中缓存穿透/击穿/雪崩问题和解决方法
2021/12/04 Redis
浅谈Redis 中的过期删除策略和内存淘汰机制
2022/04/03 Redis