如何利用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使用PIL缩放网络图片并保存的方法
Apr 24 Python
python登录pop3邮件服务器接收邮件的方法
Apr 30 Python
Python基础篇之初识Python必看攻略
Jun 23 Python
Python基于identicon库创建类似Github上用的头像功能
Sep 25 Python
PyQt5主窗口动态加载Widget实例代码
Feb 07 Python
python3 requests库实现多图片爬取教程
Dec 18 Python
postman和python mock测试过程图解
Feb 22 Python
python实现吃苹果小游戏
Mar 21 Python
Python轻量级web框架bottle使用方法解析
Jun 13 Python
django restframework serializer 增加自定义字段操作
Jul 15 Python
PyCharm 光标变成黑块的解决方式
Feb 06 Python
Python识别花卉种类鉴定网络热门植物并自动整理分类
Apr 08 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中使用sockets:从新闻组中获取文章
2006/10/09 PHP
php适配器模式介绍
2012/08/14 PHP
PHP实现二维数组根据key进行排序的方法
2016/12/30 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
JavaScript中的对象化编程
2008/01/16 Javascript
[Web]防止用户复制页面内容和另存页面的方法
2009/02/06 Javascript
javascript中的变量作用域以及变量提升详细介绍
2013/10/24 Javascript
js正则表达exec与match的区别说明
2014/01/29 Javascript
jQuery中die()方法用法实例
2015/01/19 Javascript
记React connect的几种写法(小结)
2018/09/18 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
微信小程序实现商城倒计时
2020/11/01 Javascript
javascript for循环性能测试示例
2019/08/07 Javascript
小程序实现锚点滑动效果
2019/09/23 Javascript
openLayer4实现动态改变标注图标
2020/08/17 Javascript
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
Python的动态重新封装的教程
2015/04/11 Python
Python中的连接符(+、+=)示例详解
2017/01/13 Python
基于python的图片修复程序(实现水印去除)
2018/06/04 Python
用Python将结果保存为xlsx的方法
2019/01/28 Python
Numpy的简单用法小结
2019/08/28 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
2020/01/15 Python
Python实现计算长方形面积(带参数函数demo)
2020/01/18 Python
python使用openpyxl操作excel的方法步骤
2020/05/28 Python
Django微信小程序后台开发教程的实现
2020/06/03 Python
python中的split、rsplit、splitlines用法说明
2020/10/23 Python
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
西部世纪.net笔试题面试题
2014/04/03 面试题
应届毕业生通用的自荐书范文
2014/02/07 职场文书
教师远程培训感言
2014/03/06 职场文书
捐书活动总结
2014/05/04 职场文书
大学生国庆节65周年演讲稿范文
2014/09/25 职场文书
Nginx 过滤静态资源文件的访问日志的实现
2021/03/31 Servers
HTML页面滚动时部分内容位置固定不滚动的实现
2021/04/14 HTML / CSS
win10下go mod配置方式
2021/04/25 Golang