banner
肥皂的小屋

肥皂的小屋

github
steam
bilibili
douban

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

原理#

cmd 查询本地 wifi 配置#

在 cmd 执行命令netsh wlan show profiles

image

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

image

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

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

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

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

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

代码讲解#

  • 首先肯定要导入库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 挨条格式化传入查询语句,然后打印出查询内容,效果如下:
    image

当然,如果你只想简单地获取 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]))
  • 效果如下:

image

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。