如何利用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访问纯真IP数据库的代码
May 19 Python
python中set常用操作汇总
Jun 30 Python
详解Python多线程Selenium跨浏览器测试
Apr 01 Python
Python设计模式之门面模式简单示例
Jan 09 Python
《Python学习手册》学习总结
Jan 17 Python
使用python和pygame绘制繁花曲线的方法
Feb 24 Python
python实现旋转和水平翻转的方法
Oct 25 Python
Python第三方Window模块文件的几种安装方法
Nov 22 Python
Python 获取中文字拼音首个字母的方法
Nov 28 Python
Python字典循环添加一键多值的用法实例
Jan 20 Python
对Pycharm创建py文件时自定义头部模板的方法详解
Feb 12 Python
Python基本数据类型之字符串str
Jul 21 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 魔术函数使用说明
2010/05/14 PHP
php array_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
基于PHP CURL用法的深入分析
2013/06/09 PHP
使用PHP进行微信公众平台开发的示例
2015/08/21 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
Laravel框架实现的记录SQL日志功能示例
2018/06/19 PHP
Javascript操纵Cookie实现购物车程序
2006/11/23 Javascript
JavaScript中的prototype使用说明
2010/04/13 Javascript
通过复制Table生成word和excel的javascript代码
2014/01/20 Javascript
javascript中with()方法的语法格式及使用
2014/08/04 Javascript
深入理解JavaScript中的对象复制(Object Clone)
2016/05/18 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
JS正则表达式验证密码格式的集中情况总结
2017/02/23 Javascript
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
js实现弹出框的拖拽效果实例代码详解
2019/04/16 Javascript
使用 node.js 模仿 Apache 小部分功能
2019/07/07 Javascript
JS Web Flex弹性盒子模型代码实例
2020/03/10 Javascript
微信公众号网页分享功能开发的示例代码
2020/05/27 Javascript
小程序Scroll-view上拉滚动刷新数据
2020/06/21 Javascript
[01:38]DOTA2第二届亚洲邀请赛中国区预选赛出线战队晋级之路
2017/01/17 DOTA
python实现简单的TCP代理服务器
2014/10/08 Python
Python中的日期时间处理详解
2016/11/17 Python
解决Django模板无法使用perms变量问题的方法
2017/09/10 Python
Django表单提交后实现获取相同name的不同value值
2020/05/14 Python
python os.rename实例用法详解
2020/12/06 Python
意大利巧克力店:Chocolate Shop
2019/07/24 全球购物
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
这段代码难道不该打印出56吗
2013/02/27 面试题
大学生求职信范文应怎么写
2014/01/01 职场文书
小学开学寄语
2014/01/19 职场文书
电子装配专业毕业生求职信
2014/04/23 职场文书
幼儿园优秀班主任事迹材料
2014/05/14 职场文书
环保倡议书500字
2014/05/15 职场文书
土木工程专业本科生求职信
2014/10/01 职场文书
毕业生的自我鉴定表范文
2019/05/16 职场文书