如何利用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 相关文章推荐
利用Pandas 创建空的DataFrame方法
Apr 08 Python
python中scikit-learn机器代码实例
Aug 05 Python
Python tkinter label 更新方法
Oct 11 Python
python实现转盘效果 python实现轮盘抽奖游戏
Jan 22 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
Apr 01 Python
通过python实现弹窗广告拦截过程详解
Jul 10 Python
python flask 如何修改默认端口号的方法步骤
Jul 12 Python
Python 画出来六维图
Jul 26 Python
Python实现TCP通信的示例代码
Sep 09 Python
解决Django中checkbox复选框的传值问题
Mar 31 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
Jul 14 Python
Python OpenCV 图像平移的实现示例
Jun 04 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
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/03/02 无线电
PHP通过COM使用ADODB的简单例子
2006/12/31 PHP
fleaphp常用方法分页之Pager使用方法
2011/04/23 PHP
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
2017/08/15 PHP
PHP基于openssl实现非对称加密代码实例
2020/06/19 PHP
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
Javascript的构造函数和constructor属性
2010/01/09 Javascript
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
jQuery获取文本节点之 text()/val()/html() 方法区别
2011/03/01 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
2016/02/18 Javascript
使用RequireJS库加载JavaScript模块的实例教程
2016/06/06 Javascript
JS前端笔试题分析
2016/12/19 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
Node.js之删除文件夹(含递归删除)代码实例
2019/09/09 Javascript
layui使用templet格式化表格数据的方法
2019/09/16 Javascript
解决在Vue中使用axios用form表单出现的问题
2019/10/30 Javascript
浅析Python中的join()方法的使用
2015/05/19 Python
python实现发送邮件及附件功能
2021/03/02 Python
Python实现求两个csv文件交集的方法
2017/09/06 Python
Python自定义装饰器原理与用法实例分析
2018/07/16 Python
tensorflow 加载部分变量的实例讲解
2018/07/27 Python
Pandas之Dropna滤除缺失数据的实现方法
2019/06/25 Python
与Django结合利用模型对上传图片预测的实例详解
2019/08/07 Python
Python3实现将一维数组按标准长度分隔为二维数组
2019/11/29 Python
SVG实现多彩圆环倒计时效果的示例代码
2017/11/21 HTML / CSS
理肤泉美国官网:La Roche-Posay
2018/01/17 全球购物
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
初中女生自我鉴定
2013/12/19 职场文书
基层干部2014全国两会学习心得体会
2014/03/10 职场文书
MyBatis在注解上使用动态SQL方式(@select使用if)
2022/07/07 Java/Android