更改Wi-Fi配置文件的密码

Jam*_*ton 9 passwords batch-file wifi

在我自愿服务的长期护理医院,每个月的第一天,访客Wi-Fi连接的密码会发生变化.这给员工带来了很多工作,给患者带来了很多挫折感,其中许多人的行动能力非常有限.

(是的,真正的解决方案是让IT团队保持相同的密码,但这不会发生).

大多数患者通过Windows笔记本电脑连接到外部世界.我想创建一个我们可以在他们的计算机上安装的批处理脚本,它将自动检索下个月的密码并在需要时立即应用它.

我可以将下个月的访客密码放在医院内部网络的一个文件中,只有当前拥有本月密码的人才能访问该密码,我可以bitsadmin在批处理脚本中使用该密码来检索本地文件的密码(见下文) ).我可以在每个病人的计算机上设置一个任务,以便在月末之前运行该脚本.

我的问题是:当上个月的密码在新月开始时失败时,如何从批处理脚本更改该网络连接的密码?

我知道我可以用......

netsh wlan show profile name=“INSERT_SSID_HERE” key=clear
Run Code Online (Sandbox Code Playgroud)

...找到当前密码,但我该如何设置呢?


编辑:我发现在Windows Vista及更高版本中,Wi-Fi密码短语存储在XML文件中C:\ProgramData\Microsoft\Wlansvc\Profiles\Interfaces[Interface Guid].xml.它以以下格式显示:

- <sharedKey>
    <keyType>passPhrase</keyType>
    <protected>true</protected>
    <keyMaterial> ** 400+ hexit number ** </keyMaterial>
  </sharedKey>
Run Code Online (Sandbox Code Playgroud)

我猜测要更改密码,我需要使用适当的算法加密新密码并更新此XML文件.有没有可以用来自动执行此操作的命令?如果没有,我应该使用什么加密算法?

更简单的替代方法可能是删除加密:

    <protected>false</protected>
    <keyMaterial>plainTextPassword</keyMaterial>
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在重新启动计算机后重新启动Wi-Fi连接时,使用已经过这种方式修改的XML文件,连接失败.


优选不需要重启的解决方案.


用于检索密码的批处理脚本

@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
Run Code Online (Sandbox Code Playgroud)

rob*_*rto 5

您是否尝试删除并重新添加配置文件,而不是仅更改 XML 内容以使用纯密码?

\n\n

我过去也遇到过类似的情况,这对我有用:

\n\n

此答案假设您只想保留网络上的 WiFi 密码而不是完整的 XML,并且 WiFi 的 SSID 为“My Network ”。

\n\n
    \n
  1. 断开网络连接:netsh wlan disconnect
  2. \n
  3. 将“我的网络”配置文件导出到其他地方,例如C:\\netsh wlan export profile\xc2\xa0folder="C:\\" name="My Network" key=clear--> 这应该创建C:\\Wi-Fi-My Network.xml. 生成的xml文件应该与您在 中看到的文件类似C:\\ProgramData\\Microsoft\\Wlansvc\\Profiles\\Interfaces,但部分<sharedKey>不受保护(这允许我们在下一步中仅进行一次替换)。显然,您也可以通过从Wlansvc,但这样做需要了解接口的 GUID。导出更容易,因为您只需要知道您的 SSID。
  4. \n
  5. 在复制的配置文件中,确保 是protectedfalse并填写keyMaterial纯密码(简单的文本替换,使用 VB 或 C# 应该很容易完成,但如果您需要纯粹在批处理脚本中执行此操作,请参阅更改标签数据使用 Windows 批处理文件的 XML 文件
  6. \n
  7. 删除当前存储的配置文件:netsh wlan delete profile name="My Network"
  8. \n
  9. 添加回个人资料:netsh wlan add profile filename="C:\\Wi-Fi-My Network.xml"
    \n(这将重新创建适当的文件C:\\ProgramData\\Microsoft\\Wlansvc\\Profiles\\Interfaces,并使用加密的密码。)
  10. \n
  11. 连接到网络:netsh wlan connect name="My Network"
  12. \n
\n\n

如果您同意存储完整的 XML,您还可以导出未加密的配置文件(步骤 2)并将其存储在网络驱动器中,然后您只需执行步骤 1、4、5 和 6。

\n\n

我希望这有帮助。

\n