想在Windows上写一个Wi-Fi密码与记录密码的脚本并生成当前密码的二维码
这个记录Wi-Fi密码与生成当前密码的二维码,我在Mac上实现过[【shell】写了一个查看当前Wi-Fi密码,并记录Wi-Fi密码历史的脚本](https://www.52pojie.cn/thread-1766927-1-1.html) 。我的环境首要条件必须先得支持Wi-Fi网卡,才能谈后面的记录密码生成二维码的功能实现。我看了(https://kb.parallels.com/cn/123823) 这个文档,觉得自己的环境写一个这样的脚本还是有些希望的,不至于巧妇难为无米之炊。![](https://s2.xptou.com/2023/04/09/64323ac5c9ee4.png)
(https://it.cha138.com/shida/show-89731.html)提到用python的pip装上去二维码工具,我的想法和之前一样,对于没有python环境的朋友直接 `> nul` 屏蔽完事。
明天上班,我看下能否在Windows做这种类似的实现,在cmd输入特定的“Wi-Fi密码”查看当前密码、“notepad wifi.txt”打开所有的Wi-Fi密码记录。
***注意:这是Mac用的,会提示输入电脑用户名与开机密码,[用之前请注意看注意事项](https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=1766927&pid=46269621)***
```
# 保持代码样式写文件
cat <<'EOF' >~/Public/mac_show_wifi.sh
# 详情:https://developer.apple.com/documentation/security/1515362-seckeychainsearchcopynext/
# 获取当前Wi-Fi名称
wifi_ssid=$(networksetup -getairportnetwork en0 | awk '{print $4}')
# 获取当前Wi-Fi密码
# -D 指定项;-a 接收账户,传递到security;-w明文。
wifi_password=$(
security find-generic-password \
-D "AirPort network password" \
-a "$wifi_ssid" \
-w
)
# 打印Wi-Fi与Wi-Fi密码
echo "Wi-Fi:"$wifi_ssid;echo "Wi-Fi密码:"$wifi_password
# 检查 wifi.txt 不存在则创建该文件
if [ ! -e wifi.txt ];then
touch wifi.txt
fi
# 比对文本信息是否匹配Wi-Fi名称、密码,如果二者不一致则导入
if [[ "$(cat wifi.txt)" == *"$wifi_ssid"* && "$(cat wifi.txt)" == *"$wifi_password"* ]];then
> /dev/null 2>&1
else
printf "\nWi-Fi:$wifi_ssid\nWi-Fi密码:$wifi_password\n" >> wifi.txt
fi
brew install qrencode > /dev/null 2>&1
# 只屏蔽报错不屏蔽输出,2> /dev/null
qrencode -l M -t UTF8 -s 4 -m 2 "WIFI:${wifi_ssid} Wi-Fi密码:${wifi_password}" 2> /dev/null
EOF
# 创建软链接文件夹
sudo -S mkdir -p /usr/local/bin
# 保险起见先删除再说
sudo rm -rf /usr/local/bin/mac_show_wifi.shortcut
# 没有环境变量,进入目录创建软链接。
cd /usr/local/bin
sudo ln -s \
~/Public/mac_show_wifi.sh mac_show_wifi.shortcut &&
echo "alias Wi-Fi密码='bash mac_show_wifi.shortcut'" >>~/.zshrc
echo "重开终端,自此以后,查看Wi-Fi密码,在终端输入:Wi-Fi密码,即可。"
```
来自坛友 leonca 对Windows 记录Wi-Fi密码的实现,我觉得挺有参考价值,代码功能还有一些完善空间,比如分类记录(当前Wi-Fi密码、所有Wi-Fi密码)、二维码、自动特权提升
***来自坛友 leonca 对Windows的记录Wi-Fi密码实现 ***
```
@echo off
title 批处理查看所有连接过的WiFi名称和密码
echo,&,echo 请用管理员权限运行此批处理,否则可能无法获取到密码
echo,
if not exist %~dp0\WiFi密码记录.txt (cd. > %~dp0\WiFi密码记录.txt)
echo,============================================ >> %~dp0\WiFi密码记录.txt
echo,%date% %time% >> %~dp0\WiFi密码记录.txt
for /f "tokens=3*" %%i in ('netsh wlan show profiles ^| findstr "所有用户配置文件"') do (
call :GetPass %%i %%j
)
:NN
echo,
choice /c 12 /m 选项1:打开WiFi密码记录;选项2:退出批处理
if %errorlevel% equ 2 goto :eof
if %errorlevel% equ 1 start "" %~dp0\WiFi密码记录.txt
echo,&echo,按任意键结束!!! & pause > nul
goto :eof
:GetPass
echo,WiFi : %*
setlocal enabledelayedexpansion
for /f "delims=" %%m in ('findstr "%*" %~dp0\WiFi密码记录.txt') do (
set vam=%%m
)
for /f "delims=" %%a in ('netsh wlan show profile name^="%*" key^=clear ^| findstr "关键内容"') do (
set var=%%a
set var1=!var:关键内容=密码!
set var2=!var1: =!
set var3=!var2:^:= : !
echo,!var3!
)
if "!vam!" equ "" (echo, >> %~dp0\WiFi密码记录.txt && echo,WiFi : %* >> %~dp0\WiFi密码记录.txt && echo,!var3! >> %~dp0\WiFi密码记录.txt)
echo,=========================
endlocal
```
以上坛友 leonca 的Windows获取Wi-Fi代码,netsh确实是个非常不错的工具,之后也是不错的参考吧。我现在想到之后实现可能会遇到的问题,以下皆为推测:
* win7实验机 Wi-Fi网卡的alias是否与win10不同?
* Windows网上是否能像(类似同理的操作)在 unix 环境里写入 .zshrc ?
* win10写for循环来遍历所有的密码,会不会出现查看Wi-Fi密码都必须输入一次密码?
最后Windows是否有这样的软件,有的话我觉得没必要重复造轮子了,毕竟过了找工作来拿练手的时候。
以上,这就是目前饭后闲来无事的想法了。 本帖最后由 hoochanlon 于 2023-4-9 23:51 编辑
nirang2008 发表于 2023-4-9 23:09
都是大神,想学破解应该从那学起
系统化的了解,可以看看
*[《macOS软件安全与逆向分析》(来源于网络)]( https://anonfiles.com/q7mfmbf6z3/14295173_zip)
*https://www.52pojie.cn/thread-1358649-1-1.html
一个Mac的,一个Windows的,两个都很体系化。特别感谢坛友 yyhd 有心写作 !
本帖最后由 hoochanlon 于 2023-4-10 19:48 编辑
lcg2014 发表于 2023-4-10 15:13
https://www.wb321.com/win10dnjc/91341.html
手把手详解win10系统使用PowerShell生成二维码的处理步骤
h ...
我想到一个更好的方案了,如图
![ ](https://s2.xptou.com/2023/04/10/6433d0457962d.png)
win11的话是不用顾虑旧版cmd,win10就安装新的cmd了,见:https://github.com/microsoft/terminal
还是用python了,之后简单再用batch把python代码包装一下
PIP安装依赖
```
pip install qrcode > nul
pip install pillow > nul
pip install qrcode-terminal > nul
```
PYTHON
```
import qrcode_terminal
data = "https://www.baidu.com"
qrcode_terminal.draw(data)
```
CMD
```
@echo off
:: ----------------- 获取当前WiFi与密码 ---------------------
@REM 排除BSSID(基本服务集标识符)信息,有干扰到正常SSID输出。
setlocal enabledelayedexpansion
for /f "tokens=2 delims=:" %%i in ('netsh wlan show interfaces ^| findstr "SSID" ^| findstr /v "BSSID"') do (
set now_wifi_ssid=%%i
@REM 替换空格
set now_wifi_ssid=!now_wifi_ssid: =!
)
for /f "tokens=2 delims=: " %%i in ('netsh wlan show profile name^="%now_wifi_ssid%" key^=clear ^| findstr "关键内容"') do (
set "now_wifi_password=%%i"
set now_wifi_password=!now_wifi_password!
)
echo %now_wifi_ssid%
echo %now_wifi_password%
:: ----------------- 二维码 ---------------------------------
@REM 二维码基本上是照片打开,Windows终端(旧版)字符支持受限,效果不理想
@REM Windows11以上自带的新版终端可行!
@REM https://github.com/microsoft/terminal
pip install qrcode > nul 2>&1
pip install pillow > nul 2>&1
pip install qrcode-terminal > nul 2>&1
set data= WiFi:%now_wifi_ssid% WiFi密码:%now_wifi_password%
python -c "import qrcode_terminal; qrcode_terminal.draw('%data%')"
:: --------------- 参考部分 ----------------------------------
@REM @REM 参考文档及资料 一
@REM @REM "tokens=2 delims=:" 参数只能在 for 命令中使用,tokens=2 ,“:” 之后的第二文本
@REM @REM"%now_ssid: =%" 将所有空格置 nul
@REM netsh wlan show profile /? 帮助文档
@REM netsh wlan show profile name="G****-***S" key=clear
@REM @REM (https://blog.csdn.net/kagurawill/article/details/114982328)
@REM @REM (https://www.cnblogs.com/Chary/p/5825189.html)
@REM @REM 参考文档及资料 二
@REM WiFi名称输出的不是理想的结果 00,第一次取值正常,第二次成了00
@REM 找到方案为:开启延迟变量,脚本之家例子不错,说了那么多,其实就是以实时变量相对,条与行的概念也十分重要
@REM https://www.jb51.net/article/193245.htm
:: --------------- 参考部分 ----------------------------------
```
![ ](https://s2.xptou.com/2023/04/10/6433f6ae16275.png)
lcg2014 发表于 2023-4-10 13:57
记录WiFi密码早就有了,怎么生成二维码?
生成二维码输出在终端的问题基本解决了,下一个难点:类似于Unix软链接一样自定义一个Windows命令,以后通过这个指令就直接查看当前WiFi密码了。
Windows command 比 MAC shell 稍微难一点,有些类似的逻辑得转个弯实现。 感谢分享 感谢分享 dddddddddfffffdfddfff 太厉害了,感谢分享 感谢分享 谢谢,试试看 都是大神,想学破解应该从那学起 感谢分享