MENU

Python3 打印出电脑上所有wifi账号和密码

原理

cmd查询本地wifi配置

在cmd执行命令netsh wlan show profiles

能显示出此电脑上所有的Wlan配置文件,我们要查看其中一个的密码,指定name=wlan名(也就是SSID) key=clear即可,
netsh wlan show profiles name=连了是SB key=clear

Python的os.popen()函数用cmd执行传入参数

Python 中有一个os文件/目录库,其中有一个函数叫做os,其中一条指令为os.popen,能够用于从一个命令打开一个管道

os.popen介绍:python os.popen方法 | 菜鸟教程

也就是这条命令能够用cmd执行传入的字符串,比如os.popen('dir').read()

这就是用到的所有基本知识

代码讲解

  • 首先肯定要导入库import os
  • 然后我们用os.popen()函数先查询总的wifi配置:
cmd_get_allpfs = ('netsh wlan show profiles')
with os.popen(cmd_get_allpfs) as f:
    SSID_list = []
    for line in f:
        if'所有用户配置文件 :' in line:
            line = line.strip().split(":")[1]
            SSID_list.append(line)
  • 如果返回的内容行中含有'所有用户配置文件 :'这个字样,就把这一行用:分割,将后面的部分,也就是wifi名,存储到wifi名列表SSID_list中,然后我们再挨条执行密码查询语句并打印出来:
for SSID in SSID_list:
    cmd_get_evepf = ('netsh wlan show profiles name={} key=clear'.format(SSID))
    with os.popen(cmd_get_evepf) as r:
        evepf = r.read()
        print(evepf)
  • 将列表中的SSID挨条格式化传入查询语句,然后打印出查询内容,效果如下:

当然,如果你只想简单地获取SSID和密码,比如

SSID_name1:passwod1
SSID_name2:passwod2

这样的,简单改一下就好了,以下为获取SSID:password的全部代码:

#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
@author: soapffz
@fucntion: 打印出电脑上所有的wifi账号:密码
@time:2018-12-15
'''

import os

cmd_get_allpfs = ('netsh wlan show profiles')
with os.popen(cmd_get_allpfs) as f:
    SSID_list = []
    for line in f:
        if'所有用户配置文件 :' in line:
            line = line.strip().split(":")[1]
            SSID_list.append(line)

PASS_list = []

for SSID in SSID_list:
    cmd_get_evepf = ('netsh wlan show profiles name={} key=clear'.format(SSID))
    with os.popen(cmd_get_evepf) as r:
        for line in r:
            if'关键内容'in line:
                line = line.strip().split(":")[1]
                PASS_list.append(line)

for i in range(len(SSID_list)):
    print("{}:{}".format(SSID_list[i], PASS_list[i]))
  • 效果如下:
最后编辑于: 2019 年 07 月 13 日