如何利用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使用ftplib实现简易FTP客户端的方法
Jun 03 Python
浅谈django中的认证与登录
Oct 31 Python
python利用sklearn包编写决策树源代码
Dec 21 Python
对Python 文件夹遍历和文件查找的实例讲解
Apr 26 Python
浅谈Python编程中3个常用的数据结构和算法
Apr 30 Python
Python安装OpenCV的示例代码
Mar 05 Python
Python环境下安装PyGame和PyOpenGL的方法
Mar 25 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
Apr 21 Python
使用python采集Excel表中某一格数据
May 14 Python
Python调用百度OCR实现图片文字识别的示例代码
Jul 17 Python
python中的yield from语法快速学习
Nov 06 Python
Sentry错误日志监控使用方法解析
Nov 12 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 current函数获取未知字符键名数组第一个元素的值
2013/06/24 PHP
php中mt_rand()随机数函数用法
2014/11/24 PHP
javascript 进阶篇1 正则表达式,cookie管理,userData
2012/03/14 Javascript
获取客户端电脑日期时间js代码(jquery)
2012/09/12 Javascript
基于javascript实现动态时钟效果
2020/08/18 Javascript
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
jQuery仿IOS弹出框插件
2017/02/18 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
angularjs封装$http为factory的方法
2017/05/18 Javascript
vue2.0 中#$emit,$on的使用详解
2017/06/07 Javascript
简单谈谈关于 npm 5.0 的新坑
2017/06/08 Javascript
vue自定义过滤器创建和使用方法详解
2017/11/06 Javascript
浅谈super-vuex使用体验
2018/06/25 Javascript
vue.js实现的经典计算器/科学计算器功能示例
2018/07/11 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
新手入门带你学习JavaScript引擎运行原理
2019/06/24 Javascript
Vue 刷新当前路由的实现代码
2019/09/26 Javascript
python查看微信好友是否删除自己
2016/12/19 Python
详解windows python3.7安装numpy问题的解决方法
2018/08/13 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
2018/11/30 Python
基于python if 判断选择结构的实例详解
2019/05/06 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
2019/05/30 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
2019/10/24 Python
关于tf.reverse_sequence()简述
2020/01/20 Python
Python类和实例的属性机制原理详解
2020/03/21 Python
CSS3制作苹果风格键盘特效
2015/02/26 HTML / CSS
毕业生精彩的自我评价分享
2013/10/06 职场文书
幼儿园大班毕业感言
2014/02/06 职场文书
班级体育活动总结
2014/07/05 职场文书
运动会入场词
2015/07/18 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL
Python爬虫基础之爬虫的分类知识总结
2021/05/13 Python
MySQL时间盲注的五种延时方法实现
2021/05/18 MySQL
Nginx 配置 HTTPS的详细过程
2022/05/30 Servers
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
2022/09/23 Servers