这个记录Wi-Fi密码与生成当前密码的二维码,我在Mac上实现过【shell】写了一个查看当前Wi-Fi密码,并记录Wi-Fi密码历史的脚本 。我的环境首要条件必须先得支持Wi-Fi网卡,才能谈后面的记录密码生成二维码的功能实现。我看了Parallels Knowledge Base-如何让虚拟机使用真正的 Wi-Fi 网络? 这个文档,觉得自己的环境写一个这样的脚本还是有些希望的,不至于巧妇难为无米之炊。
it.cha138-二维码的制作提到用python的pip装上去二维码工具,我的想法和之前一样,对于没有python环境的朋友直接 > nul
屏蔽完事。
明天上班,我看下能否在Windows做这种类似的实现,在cmd输入特定的“Wi-Fi密码”查看当前密码、“notepad wifi.txt”打开所有的Wi-Fi密码记录。
注意:这是Mac用的,会提示输入电脑用户名与开机密码,用之前请注意看注意事项
# 保持代码样式写文件
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是否有这样的软件,有的话我觉得没必要重复造轮子了,毕竟过了找工作来拿练手的时候。
以上,这就是目前饭后闲来无事的想法了。