如何利用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中关于日期时间处理的问答集锦
Mar 08 Python
Python魔术方法详解
Feb 14 Python
python的构建工具setup.py的方法使用示例
Oct 23 Python
Python绘制七段数码管实例代码
Dec 20 Python
对numpy Array [: ,] 的取值方法详解
Jul 02 Python
Python 常用模块 re 使用方法详解
Jun 06 Python
python删除文件夹下相同文件和无法打开的图片
Jul 16 Python
Python安装tar.gz格式文件方法详解
Jan 19 Python
使用Keras加载含有自定义层或函数的模型操作
Jun 10 Python
pytorch判断是否cuda 判断变量类型方式
Jun 23 Python
Numpy数组的广播机制的实现
Nov 03 Python
Python万能模板案例之matplotlib绘制直方图的基本配置
Apr 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下将多个数组合并成一个数组的方法与实例代码
2011/02/03 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
[原创]来自ImageSee官方 JavaScript图片浏览器
2008/01/16 Javascript
javascript动态添加表格数据行(ASP后台数据库保存例子)
2010/05/08 Javascript
JavaScript 基础篇(一)
2012/03/30 Javascript
用JQuery在网页中实现分隔条功能的代码
2012/08/09 Javascript
javascript获取元素CSS样式代码示例
2013/11/28 Javascript
jquery实现带缩略图的可定制高度画廊效果(5种)
2015/08/28 Javascript
浅谈JavaScript函数的四种存在形态
2016/06/08 Javascript
谈谈JavaScript中的几种借用方法
2016/08/09 Javascript
jQuery中 $ 符号的冲突问题及解决方案
2016/11/04 Javascript
详解JavaScript的闭包、IIFE、apply、函数与对象
2016/12/21 Javascript
浅谈VUE中演示v-for为什么要加key
2020/01/16 Javascript
vue实现路由懒加载的3种方法示例
2020/09/01 Javascript
Vue SPA 首屏优化方案
2021/02/26 Vue.js
Python打印scrapy蜘蛛抓取树结构的方法
2015/04/08 Python
Python pickle模块用法实例分析
2015/05/27 Python
利用python微信库itchat实现微信自动回复功能
2017/05/18 Python
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
windows下python安装pip图文教程
2018/05/25 Python
儿童学习python的一些小技巧
2018/05/27 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
2018/11/15 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
使用OpenCV实现仿射变换—旋转功能
2019/08/29 Python
python框架Django实战商城项目之工程搭建过程图文详解
2020/03/09 Python
一些常用的HTML5模式(pattern) 总结
2015/07/14 HTML / CSS
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
中职应届生会计求职信
2013/10/23 职场文书
融资租赁计划书
2014/04/29 职场文书
2014年话务员工作总结
2014/11/19 职场文书
地震捐款简报
2015/07/21 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书
《狼牙山五壮士》教学反思
2016/02/17 职场文书
会计工作自我鉴定范文
2019/06/21 职场文书
浅谈克隆 JavaScript
2021/11/02 Javascript
MySQL 数据表操作
2022/05/04 MySQL