• python获取电脑所连接的wifi密码


    电脑连接wifi后,很难直观地看到当前连接wifi的密码,需要借助命令行公管局才可以查看到相关信息。

    CMD命令

    查看所有已保存的wifi配置信息

    netsh wlan show profiles
    
    • 1

    查看某一个wifi的详细信息,需要输入wifi名称来查询

    netsh wlan show profile name="XXXXXXXXX" key=clear
    
    • 1

    打开CMD命令行,执行上述命令,即可看到相关信息。

    python脚本

    CMD命令可以通过python来进行调用,需要一个模块,即subprocess

    subprocess.check_output函数是Python标准库subprocess模块中的一个函数,用于执行系统命令并返回命令的输出结果。

    使用方法如下:

    subprocess.check_output(args, *, stdin=None, stderr=None, 
                            shell=False, universal_newlines=False)
    
    • 1
    • 2

    返回结果是字符串,也就是执行命令返回的信息。

    python对命令执行结果进行处理,主要思路如下:

    1、执行第一个命令netsh wlan show profiles,获取到本地保存过的所有的wifi名称,存入一个list;

    2、遍历list,去执行第二个命令,得到某一个wifi的详细信息,然后提取出来密码所在的行信息,保存处理即可。

    执行结果如下:
    在这里插入图片描述

    代码如下:

    import subprocess
    
    # 执行netsh命令获取Wi-Fi密码
    result = subprocess.check_output('netsh wlan show profiles', shell=True)
    # print(result)
    profiles = []
    for line in result.split('\n'):
        if "所有用户配置文件 :" in line:
            profiles.append(line.split(':')[1].strip())
    for profile in profiles:
        try:
            password_result = subprocess.check_output(f'netsh wlan show profile name="{profile}" key=clear',
                                                      shell=True)
            # print(password_result)
            for line in password_result.split('\n'):
                if "关键内容" in line:
                    print('{:<40}{:>30}'.format('WIFI名称:'+profile,'WIFI密码:'+line.split(':')[1].strip()))
    
        except:
            print(f'无法获取{profile}的密码')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    总结

    主要用到了如下知识点:

    • 命令获取wifi信息
    • python调用CMD命令
    • python print()输出格式化,左右对齐,print('{:<40}{:>30}'.format('aaaaaaaaaaaaa','bbbbbbbbbbb'))
    • split(),分片函数,用于分割字符串
    • strip(),哟关于去除头尾特定字符,默认去除头尾空格

    虽然本次实验仅获取了wifi信息,但是在其他命令执行方面,或许能有更多应用场景,甚至开发出相关的简易工具,有待朋友们进一步探索。

  • 相关阅读:
    编写高性能C#代码 —— Span<T>
    工程师新红利,我国预计到2025年培养20万名这类人才
    【合集】Redis——Redis的入门到进阶 & 结合实际场景的Redis的应用
    Spring Cloud Alibaba 学习笔记
    最全JAVA系列视频教程源码
    Spark - 第3章 Spark工作集介绍
    找单身狗2
    ModelCache.safeGet(androidProjectResult.androidProject::getNdkVersion, ““) must not be null
    手机ip地址是实时位置吗
    前端基础之《Bootstrap(10)—CSS组件_媒体对象、列表组、面板》
  • 原文地址:https://blog.csdn.net/qq_34045989/article/details/134232749