【发布时间】:2017-05-30 13:02:13
【问题描述】:
在我志愿服务的长期护理医院,每个月的第一天,访客 Wi-Fi 连接的密码都会更改。这给工作人员带来了很多工作量,也给患者带来了很多挫败感,其中许多人行动不便。
(是的,真正的解决方案是让 IT 团队保持相同的密码,但这不会发生)。
大多数患者通过 Windows 笔记本电脑与外界连接。我想创建一个批处理脚本,我们可以将它安装在他们的计算机上,它会自动检索下个月的密码并在需要时立即应用它。
我可以将下个月的访客密码放在医院内部网络上的一个文件中,该文件只能由当前拥有本月密码的人访问,我可以在批处理脚本中使用bitsadmin 来检索密码本地文件(见下文)。我可以在每个患者的计算机上设置一个任务,以便在月底之前运行这个脚本。
我的问题是:当上个月的密码在新月初失效时,如何通过批处理脚本更改该网络连接的密码?
我知道我可以使用...
netsh wlan show profile name=“INSERT_SSID_HERE” key=clear
... 找到当前密码,但是我该如何设置呢?
编辑:我有found,在 Windows Vista 及更高版本中,Wi-Fi 密码存储在C:\ProgramData\Microsoft\Wlansvc\Profiles\Interfaces[Interface Guid].xml 的 XML 文件中。它以以下格式显示:
- <sharedKey>
<keyType>passPhrase</keyType>
<protected>true</protected>
<keyMaterial> ** 400+ hexit number ** </keyMaterial>
</sharedKey>
我猜要更改密码,我需要使用适当的算法加密新密码并更新此 XML 文件。有没有我可以用来自动执行此操作的命令?如果不是,我应该使用什么加密算法?
一个更简单的选择可能是删除加密:
<protected>false</protected>
<keyMaterial>plainTextPassword</keyMaterial>
但是,当我在重新启动计算机后尝试使用经过这种方式修改的 XML 文件重新启动 Wi-Fi 连接时,连接失败。
最好是不需要重启的解决方案。
获取密码的批处理脚本:
@echo off
setlocal
set file=%~dp0result.txt
bitsadmin /reset
bitsadmin /create /download job
bitsadmin /addfile job http://example.com/password.html %file%
bitsadmin /resume job
timeout 5
bitsadmin /getstate job | find /i "TRANSFERRED" && goto :done
bitsadmin /cancel job
exit /b 1
:done
bitsadmin /complete job
:: results.txt now holds the new password
exit /b 0
【问题讨论】:
-
高安全医院这家!满足您当前所有安全问题的更简单的解决方案是将密码放在纸条上交给患者。
-
那太好了。但他们中的许多人无法移动他们的手。对于他们中的一些人来说,他们的笔记本电脑(以及他们的眼球运动检测器和单开关扫描仪)是他们与外界的唯一联系。
-
我有一个想法,“我可以将下个月的访客密码放在医院内部网络的文件中”,需要如何访问? UNC 路径、FTP 或类似的东西?
-
只需要知道如何访问该文件,以便我可以相应地写一些东西
-
我在问题中提供的批处理脚本允许我在最终用户计算机上的任何位置创建一个包含密码的
results.txt文件。您可以认为存在这样的文件,并且它位于您想要的任何位置。
标签: batch-file passwords wifi