Есть ли способ, которым я могу автоматизировать установку паролей для списка пользователей в Windows 10? - PullRequest
0 голосов
/ 24 октября 2019

Это мой первый вопрос на этом сайте, поэтому позвольте мне вникнуть в него.

Я нахожусь в Cyber ​​Patriots, соревновании по кибербезопасности, проводимым военно-воздушными силами. Я являюсь основным человеком для Windows в моей команде. Последние несколько лет я изо всех сил пытался создать скрипт, который автоматизировал бы установку пароля для пользователей из списка. Я делаю это в пакетном режиме [Windows] , и в настоящее время у меня есть скрипт, который работает, но не работает автоматически.

Вот код, который у меня сейчас есть

:A
net user 
timeout /t 5
echo Change User Password
set /p UER=Which User Password Would You Like To Change?
echo Please Paste Password:
net user %UER% *
goto A

Чтоэто делает, он перечисляет всех пользователей в сети, затем запрашивает пользователя, которого вы хотите выбрать, принимает ваши данные и изменяет их пароль.

Метод, который я перечислил, работает, но это не такавтомат, как я хочу, чтобы это было. Есть ли способ сделать это автоматически? Однако я бы предпочел придерживаться пакета, если есть способ сделать это на каком-то другом языке, который тоже был бы великолепен.

Последнее. Моя другая мысль состояла в том, чтобы как-то прочитать файл, содержащий все имена пользователей и пароли. Однако, в отличие от Ubuntu, нет файла, в котором перечислены пользователи, с которых я могу читать, поэтому я не знаю, как мне поступить.

В любом случае, спасибо за вашу помощь!

1 Ответ

0 голосов
/ 25 октября 2019

Я просто написал это, чтобы показать, что это можно сделать, даже если бы я никогда не делал этого в рабочей среде.

@echo off
set list=KLMNOPQRST2345UVWXYZabcdefghiABCDEFGHIJjklmnopqrstuvwxyz016789
setlocal enabledelayedexpansion
:start
cls
set /a num=0
for /f "delims=" %%i in ('dir /b c:\users') do (
  set /a num+=1
  set "user[!num!]=%%i"
)

for /l %%c in (1,1,%num%) do echo !user[%%c]!
set /p "to_change=Select user to change Password: "
call :passwd
net user %to_change% !pw! >nul 2>&1
echo(
echo New password for '%to_change%' is: !pw!
pause
goto :start
:passwd
set pw=
for /l %%a IN (0,1,8) DO (
  set /a rand=!random! * 62 / 32768 + 1
  for /f %%b in ('echo %%list:~!rand!^,1%%') do set pw=!pw!%%b
)

Это просто перечисляет всех пользователей, полученных dir /b c:\users Есликаталог пользователя находится где-то еще, вам необходимо обновить его в скрипте.

Затем мы предложим ввести одного из пользователей, перечисленных в списке, при вводе и нажатии Enter он сгенерирует случайный пароль,выполните изменение, а затем введите новый пароль, который вам нужно сохранить.

Вы можете изменить его, чтобы автоматически изменять все пароли и просто показывать вам, какие новые пароли есть на пользователя, очевидно, исключая administrator

@echo off
set list=KLMNOPQRST2345UVWXYZabcdefghiABCDEFGHIJjklmnopqrstuvwxyz016789
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /b c:\users') do (
    if /i not "%%i"=="administrator" (
       call :passwd
       net user "%%i" !pw! >nul 2>&1
       echo(
       echo Password for '%%i' is !pw!
  )
)
echo(
pause
goto :eof
:passwd
set pw=
for /l %%a IN (0,1,8) DO (
  set /a rand=!random! * 62 / 32768 + 1
  for /f %%b in ('echo %%list:~!rand!^,1%%') do set pw=!pw!%%b
)

Если вы выиграете что-либо в «Конкурсе по кибербезопасности» , помните, что обмен информацией - это забота :D

...