如何利用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的Django框架中的通用视图
May 04 Python
自己使用总结Python程序代码片段
Jun 02 Python
Python实现识别手写数字 简易图片存储管理系统
Jan 29 Python
numpy中的delete删除数组整行和整列的实例
May 09 Python
python pandas库中DataFrame对行和列的操作实例讲解
Jun 09 Python
python正则表达式匹配[]中间为任意字符的实例
Dec 25 Python
pytorch 实现打印模型的参数值
Dec 30 Python
python ffmpeg任意提取视频帧的方法
Feb 21 Python
Python 调用 ES、Solr、Phoenix的示例代码
Nov 23 Python
Python应用自动化部署工具Fabric原理及使用解析
Nov 30 Python
用Python爬取某乎手机APP数据
Jun 15 Python
总结python多进程multiprocessing的相关知识
Jun 29 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/03/02 PHP
PHP正则表达式之定界符和原子介绍
2012/10/05 PHP
PHP向socket服务器收发数据的方法
2015/01/24 PHP
php把大写命名转换成下划线分割命名
2015/04/27 PHP
php轻松实现文件上传功能
2016/03/03 PHP
Js实现双击鼠标自动滚动屏幕的示例代码
2013/12/14 Javascript
第五章之BootStrap 栅格系统
2016/04/25 Javascript
js简单时间比较的方法
2016/08/02 Javascript
PhotoSwipe异步动态加载图片方法
2016/08/25 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
禁用backspace网页回退功能的实现代码
2016/11/15 Javascript
Vue响应式添加、修改数组和对象的值
2017/03/20 Javascript
详解Vue如何支持JSX语法
2017/11/10 Javascript
node.js部署之启动后台运行forever的方法
2018/05/23 Javascript
js/jQuery实现全选效果
2019/06/17 jQuery
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
微信小程序接入vant Weapp组件的详细步骤
2020/10/28 Javascript
[04:55]完美世界副总裁蔡玮:DOTA2的自由、公平与信任
2013/12/18 DOTA
Python获取文件ssdeep值的方法
2014/10/05 Python
Python3之简单搭建自带服务器的实例讲解
2018/06/04 Python
Python线程同步的实现代码
2018/10/03 Python
Python模块 _winreg操作注册表
2020/02/05 Python
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
英国剑桥包官网:The Cambridge Satchel Company
2016/08/01 全球购物
Expedia西班牙:预订酒店、机票、旅行和廉价度假套餐
2019/04/10 全球购物
自然健康的概念:Natural Healthy Concepts
2020/01/26 全球购物
有abstract方法的类一定要用abstract修饰吗
2016/03/14 面试题
学校党的群众路线教育实践活动对照检查材料
2014/09/24 职场文书
工商局领导班子存在的问题整改措施思想汇报
2014/10/05 职场文书
列车乘务员工作不细心检讨书
2014/10/07 职场文书
2014年团总支工作总结
2014/11/21 职场文书
幼儿园欢迎词范文
2015/01/26 职场文书
写给老婆的保证书
2015/02/27 职场文书
首次购房证明
2015/06/19 职场文书
启动Tomcat时出现大量乱码的解决方法
2021/06/21 Java/Android
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS