В больнице длительного ухода, где я работаю волонтером, в первый день каждого месяца меняется пароль для подключения к гостевому Wi-Fi. Это требует большой работы для персонала и большого разочарования для пациентов, многие из которых имеют очень ограниченную подвижность.
(Да, реальное решение — заставить ИТ-команду сохранить тот же пароль, но этого не произойдет).
Большинство пациентов подключаются к внешнему миру через ноутбуки с Windows. Я хотел бы создать пакетный скрипт, который мы можем установить на их компьютеры, который будет автоматически получать пароль на следующий месяц и применять его, как только это потребуется.
Я могу поместить гостевой пароль на следующий месяц в файл во внутренней сети больницы, где к нему может получить доступ только тот, у кого в настоящее время есть пароль на этот месяц, и я могу использовать bitsadmin
в пакетном сценарии для извлечения пароля к локальному файлу (см. ниже). Я могу настроить задачу на компьютере каждого пациента для запуска этого скрипта незадолго до конца месяца.
Мой вопрос: когда пароль прошлого месяца не работает в начале нового месяца, как я могу изменить пароль для этого сетевого подключения из пакетного сценария?
Я знаю, что могу использовать...
netsh wlan show profile name=“INSERT_SSID_HERE” key=clear
... чтобы узнать текущий пароль, но как его установить?
РЕДАКТИРОВАТЬ: я обнаружил, что в 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>
Я предполагаю, что для смены пароля мне нужно зашифровать новый пароль с помощью соответствующего алгоритма и обновить этот файл XML. Есть ли команда, которую я могу использовать, чтобы сделать это автоматически? Если нет, то какой алгоритм шифрования следует использовать?
Более простой альтернативой может быть удаление шифрования:
<protected>false</protected>
<keyMaterial>plainTextPassword</keyMaterial>
Однако, когда я пытаюсь перезапустить соединение 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
results.txt
, содержащий пароль, в любом месте на компьютере конечного пользователя. Вы можете считать, что такой файл существует и находится там, где вы хотите. - person James Newton   schedule 29.01.2016