Bat/Cmd интерфейс ввода пароля для пользователя

Для командной строки есть проблема - невозможно безопасно запросить данные у клиента для работы скрипта, например чтобы пользователь ввел пароль а мы скриптом его проверили бы. Нашлась программа под названием The Wizard's Apprentice, или WizApp. Подробности тут. Она и позволяет делать то, что нам надо. 

Запускать файл test.cmd
echo off
set watitle=Login windows.
set watext=Please enter the password: 
set wasig=(c) Raymond
set waico=buddy.ico
set wabmp=logo.bmp
set walabels=;Go!;Go!;%date%
set wabat=c:\11\wizap\test2.cmd

start /w c:\11\wizap\wizapp.exe NOCANCEL NOBACK EB PLAIN

<nul set /p strTemp=call passcheck.cmd >test3.cmd
tr -cd 0-9 <test2.cmd >>test3.cmd
call test3.cmd
pause

При запуске выдается такое окошко:

Где: 
watitle -  Заголовок окна
watext -  Текст окна
wasig -  Текст слева снизу
aico -  Иконка окна (в моем случае мишка)
wabmp -  Картинка часов 
walabels -  Надписи кнопок внизу окна (назад/вперед/финиш/отмена)
wabat -  Файл, в котором программа выведет то, что набрал пользователь.

start /w c:\11\wizap\wizapp.exe NOCANCEL NOBACK EB PLAIN -  Запуск самой программы с ключами

К сожалению особенности командной строки не позволяют программе добавить или изменить константу в процессе работы, поэтому она вынуждена создавать новый файл с введенными данными пользователя. В данном случае это будет файл c:\11\wizap\test2.cmd. Примерный вывод такого файла:
set waoutput=123123
set waoutnum=

Соответственно чтобы использовать эти данные, я делаю так. Создаю новый файл test3.cmd с командой call passcheck.cmd
<nul set /p strTemp=call passcheck.cmd >test3.cmd
Выдираю значение пароля и добавляю его в файл text3.cmd
tr -cd 0-9 <test2.cmd >>test3.cmd
В итоге в этом файле появляется команда вызова скрипта проверки пароля:
call passcheck.cmd 111222333
И в конце скрипта собственно делаю его вызов:
call test3.cmd
В самом файле passcheck.cmd происходит только показ пароля:
echo %1

На этом пока все. Возможно в будущем доработаю скрипт генерации и проверки временных паролей.
ċ
PassCheck.7z
(286k)
Raymond superadmin,
2 апр. 2015 г., 2:39