吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 12318|回复: 75
收起左侧

[其他转载] 【bat脚本】读取当前设备wifi密码(仅win10测试)

  [复制链接]
涛之雨 发表于 2021-1-24 10:53
本帖最后由 涛之雨 于 2021-1-24 13:56 编辑
Win10查看WiFi密码小技巧
https://www.52pojie.cn/thread-1357342-1-1.html
(出处: 吾爱破解论坛)

根据这个帖子的代码,似乎很有意思,但是使用比较麻烦。
需要手动复制wifi名称
因此写了这个脚本。
仅供参考。

第二版:
  • 新增了输出文件到文本(其实bat输出后鼠标拖拽选择然后点击右键就可以复制了。。。)
  • 修改了去除空白的模式,代码更简洁

[Bash shell] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
@echo off
color 2f
mode con: cols=40 lines=15
title WiFi密码查询
echo 正在查询结果
setlocal enabledelayedexpansion
for /f "tokens=2* delims=:" %%i in ('netsh wlan show profiles') do (
    set str=%%i
    for /f "tokens=3* delims= " %%d in ('netsh wlan show profiles key^=clear name^="!str:~1!"^| findstr "关键内容"') do (
        echo "!str:~1!"密码为:【%%d】
        echo "!str:~1!"密码为:【%%d】>>WiFi.txt
    )
)
echo 保存在脚本所在目录的WiFi.txt文件中
echo 任意键退出查询
pause>nul


第一版:
[Bash shell] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
@echo off
color 2f
mode con: cols=40 lines=15
title WiFi密码查询
echo 正在查询结果
for /f "tokens=2* delims=:" %%i in ('netsh wlan show profiles') do (
    for /f "tokens=* delims= " %%a in ("%%i") do (
        for /f "tokens=3* delims= " %%d in ('netsh wlan show profiles key^=clear name^="%%a"^| findstr "关键内容" ') do (
        echo "%%a"密码为:【%%d】
        )
    )
)
echo 任意键退出查询
pause>nul


原理:
大概是第一次for循环去读取wifi名称
第二次循环的目的是去除第一次循环获取的多余的一个空格(感觉写的不好。。。又不知道咋截取,干脆用循环去分割吧,如果有更好的写法欢迎在回复里提出。)
第三次是获取对应wifi名字的信息,然后用findstr去找关键内容那一行,如果找到了就分割一下(老分割了。。。)写出密码
没有密码就拉倒。。。
绿色无残留,安全无捆绑
无须管理员权限运行(似乎是的)
无须额外配置,一键获取全部以保存的wifi名及其密码

演示:
WiFi.gif

食用方法:
复制代码,粘贴到记事本里,按照下图保存
注!最好不要用第三方编辑器。。。。
win10默认的保存语言是utf-8,bat只支持ANSI,中文编码错误保存会乱码
image.png

成品:
如果出现问题的朋友可以试试我打包好的bat,是不是还有这些问题。
searchWIFIPass.zip (513 Bytes, 下载次数: 739)

免费评分

参与人数 31吾爱币 +38 热心值 +24 收起 理由
神枪968 + 1 + 1 谢谢 Thanks
银河奥特曼04 + 1 + 1 亲测,可以显示密码
A913830 + 1 + 1 谢谢@Thanks!
djdj1234 + 1 我很赞同!
plp626 + 1 ('"netsh wlan show profiles key=clear name=!str:~1!| findstr 关键内.
sumuzhi + 1 热心回复!
94dongge + 1 + 1 我很赞同!
zrlvip2121 + 1 + 1 我很赞同!
林亖 + 1 + 1 谢谢@Thanks!
Carrot-Chou + 3 + 1 我很赞同!
smile1110 + 3 + 1 谢谢@Thanks!
baier233 + 1 + 1 好厉害!确实是读出来了
小橙紫 + 1 厉害
afirestone0620 + 1 + 1 谢谢@Thanks!
WuAi5324499 + 1 我很赞同!
苏紫方璇 + 5 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
飞羽abss + 1 + 1 我很赞同!
深水夜藏 + 1 + 1 我很赞同!
YOLO丶 + 1 + 1 我很赞同!
yanglinman + 1 谢谢@Thanks!
无有代者 + 1 谢谢@Thanks!
我是一个外星人 + 1 谢谢@Thanks!
Helmholz斌 + 1 + 1 我很赞同!
SupKevin + 1 + 1 亲测可惜,一看版主头像就知道是牛人
lancehh + 1 热心回复!
行者orz + 1 谢谢@Thanks!
chinadell + 1 + 1 谢谢@Thanks!
Azad + 1 + 1 用心讨论,共获提升!
Bluezzz + 1 + 1 bat还能这么用!666666
正己 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
何故 + 3 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

knian 发表于 2021-3-5 09:26
上个版本不生成excel文件,这个会自动保存到excel
[Python] 纯文本查看 复制代码
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
# -*- coding: UTF-8 -*-
import os
import sys
import xlwt
import time
from datetime import datetime
 
 
# 定义一个函数checkWIFI,获取电脑连接过的所有wifi名称和密码,结果以列表形式返回
def checkWIFI():
    # 定义一个空列表,用来存放查询结果
    list = []
    # 查询所有的wifi名称
    message = os.popen('netsh wlan show profiles').readlines()
    # print(message)
    # 不是笔记本,或者wifi模块未启动
    if(message[0].find(u"没有运行")) != -1:
        return message[0]
    # 获取的结果是一个列表list,需要进行遍历
    for i in message:
        # 遍历结果含有中文会乱码,需要进行编码
        result = i.strip().encode('gb2312').decode('gb2312','strict')
        # print(result)
        # print(result+"的长度为"+str(len(result))+",数据类型为"+str(type(result)))
 
        # 检查每一个结果中是否含有指定关键字
        if result.find(u"所有用户配置文件 : ") != -1:
            # print("位置:"+str(result.find(u": ")))
            # 从位置11开始截取
            # print("wifi名称:"+result[11:])
 
            # netsh wlan show profiles name="Xiaomi_216E" key=clear
            # 如果找到关键字,就截取指定位置的字符串,即wifi名称,再拼接成cmd命令
            command = 'netsh wlan show profiles name="' + result[11:] + '" key=clear'
            # print(command)
            # 执行拼接好的命令,获取含有密码的结果
            per_wifi = os.popen(command.encode('gb2312').decode('gb2312')).readlines()
            # print(per_wifi)
            # 获取的结果是一个列表list,需要进行遍历
            for j in per_wifi:
                # 遍历结果含有中文会乱码,需要进行编码
                passwd = j.strip().encode('gb2312').decode('gb2312','strict')
                # print(passwd)
 
                # 检查每一个结果中是否含有指定关键字
                if passwd.find(u"关键内容            :") != -1:
                    # 获取字符串指定位置的内容并判断是否为空
                    if passwd[18:] != '':
                        # 定义一个临时列表list_temp存放每一个wifi信息,即wifi名称和密码
                        list_temp = []
                        # 将wifi名称追加到列表list_temp
                        list_temp.append(result[11:])
                        # 将密码追加到列表list_temp
                        list_temp.append(passwd[18:])
                        # 将每个wifi信息作为一个整体追加到列表list
                        list.append(list_temp)
    return list
 
# 生成excel文件 (数据,名称)
def write_data_to_excel(result,name):
    # 将sql作为参数传递调用get_data并将结果赋值给result,(result为一个嵌套元组)
    #[["wifi","password"],["jz@cfhec","jzusers88"]]
    # 实例化一个Workbook()对象(即excel文件) 设置编码
    wbk = xlwt.Workbook(encoding = 'utf-8')
    # 创建一个worksheet
    sheet = wbk.add_sheet('Sheet1',cell_overwrite_ok=True)
    # 获取当前日期,得到一个datetime对象如:(2016, 8, 9, 23, 12, 23, 424000)
    today = datetime.today()
    # 将获取到的datetime对象仅取日期如:2016-8-9
    today_date = datetime.date(today)
    # 遍历result中的没个元素。
    for i in range(len(result)):
        #对result的每个子元素作遍历,
        for j in range(len(result[i])):
            #将每一行的每个元素按行号i,列号j,写入到excel中。
            # 参数对应 行, 列, 值
            sheet.write(i,j,result[i][j])
    # 要保存的excel名称
    excel_name = name+"_"+str(today_date)+'.xls'
    # 保存
    wbk.save(excel_name)
 
# 如果该文件不是被import,则执行下面代码。
if __name__ == '__main__':
    print("正在查询......")
    # 定义一个变量,存放调用checkWIFI的执行结果
    password_list = checkWIFI()
    print("\n返回结果如下:\n")
    # 判断返回值是否是list
    if isinstance(password_list,list):
        # 将查询结果遍历输出
        for n in password_list:
            print("[+]" + "\t    Wifi:\t" + n[0] + "\n\tPassword:\t" + n[1]+"\n")
        # 执行写入文件
        write_data_to_excel(password_list,"WifiPassword")
    elif isinstance(password_list,str):
        print ("[-]\t"+password_list)
 
    print("10秒后退出")
    time.sleep(10)

点评

emmm其实没有必要用python吧 虽然实现了也是调用cmd不是多此一举么。。。 写出的话也可以写出csv格式,一般来说默认打开方式都是Excel  详情 回复 发表于 2021-3-5 12:46

免费评分

参与人数 1吾爱币 +4 热心值 +1 收起 理由
涛之雨 + 4 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

超正义的小煌 发表于 2021-1-24 11:19
我运行bat后
只有
正在查询结果
任意键退出查询
。。。。请问是为什么呀?
fanvalen 发表于 2021-1-24 13:17
fanvalen 发表于 2021-1-24 13:08
来来来我给你加了一句解决过多不好看不能复制问题
保存在d盘下名字叫wifi.txt的
[mw_shl_code=asm,true]@ ...

我搞错了,你这循环怎么嵌套的,怎么只存了一个下来,你再改改

点评

>是覆盖输出,>>是追加输出  详情 回复 发表于 2021-1-24 13:57
正己 发表于 2021-1-24 11:01
学废了,这就去偷邻居家的密码
lm877966 发表于 2021-1-24 11:13
好评,很好用!
IWayne 发表于 2021-1-24 11:18
可以,可以。我也没想到WIN10的bat可以这么玩。
huer 发表于 2021-1-24 11:21
没大鸟用,既然登陆了当前wifi,为啥要读密码?
hhx 发表于 2021-1-24 11:24
WiFi多了,小窗口显示不全,后面的会把前面的覆盖,需要手动放大窗口
沉心云 发表于 2021-1-24 11:27
牛逼,能查到邻居的密码
Azad 发表于 2021-1-24 11:28
感谢大佬。能查到之前连过的所有WiFi
Dumeng 发表于 2021-1-24 11:29
CHCP 65001
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-4-21 09:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表