如何利用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 流程控制实例代码
Sep 25 Python
python基础教程之常用运算符
Aug 29 Python
Python计算字符宽度的方法
Jun 14 Python
Python外星人入侵游戏编程完整版
Mar 30 Python
Python学习小技巧之列表项的排序
May 20 Python
Python GUI Tkinter简单实现个性签名设计
Jun 19 Python
pygame游戏之旅 如何制作游戏障碍
Nov 20 Python
Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
Sep 17 Python
Python分割训练集和测试集的方法示例
Sep 19 Python
Python print不能立即打印的解决方式
Feb 19 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
May 22 Python
pytorch学习教程之自定义数据集
Nov 10 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与C#分别格式化文件大小的代码
2011/05/14 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
一个PHP的远程图片抓取函数分享
2013/09/25 PHP
php + ajax 实现的写入数据库操作简单示例
2020/05/16 PHP
ajaxControlToolkit AutoCompleteExtender的用法
2008/10/30 Javascript
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
2010/04/18 Javascript
最简单的js图片切换效果实现代码
2011/09/24 Javascript
在jQuery中 关于json空对象筛选替换
2013/04/15 Javascript
查看图片(前进后退)功能实现js代码
2013/04/24 Javascript
js获取鼠标点击的位置实现思路及代码
2014/05/09 Javascript
javascript弹性运动效果简单实现方法
2016/01/08 Javascript
深入分析javascript中的错误处理机制
2016/07/17 Javascript
基于bootstrap的选择框插件icheck
2016/12/23 Javascript
浅析vue数据绑定
2017/01/17 Javascript
JavaScript实现短暂提示框功能
2018/04/04 Javascript
Vue引入sass并配置全局变量的方法
2018/06/27 Javascript
Angular5.0 子组件通过service传递值给父组件的方法
2018/07/13 Javascript
JS实现可针对算术表达式求值的计算器功能示例
2018/09/04 Javascript
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
VUEX-action可以修改state吗
2019/11/19 Javascript
Node使用koa2实现一个简单JWT鉴权的方法
2021/01/26 Javascript
wxPython中文教程入门实例
2014/06/09 Python
ubuntu安装sublime3并配置python3环境的方法
2018/03/15 Python
python的pandas工具包,保存.csv文件时不要表头的实例
2018/06/14 Python
int在python中的含义以及用法
2019/06/27 Python
使用Pandas对数据进行筛选和排序的实现
2019/07/29 Python
django使用JWT保存用户登录信息
2020/04/22 Python
关于python scrapy中添加cookie踩坑记录
2020/11/17 Python
广播体操比赛口号
2014/06/10 职场文书
幼儿园六一儿童节活动方案
2014/08/26 职场文书
财务工作检讨书
2014/10/29 职场文书
办公楼租房协议书范本
2014/11/25 职场文书
单位接收函格式
2015/01/30 职场文书
大学毕业生个人总结
2015/02/28 职场文书
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
2021/04/16 PHP
浅谈Go语言多态的实现与interface使用
2021/06/16 Golang