2017-01-01 11 views
0
cls 
@ECHO OFF 
title Folder Secure 
if EXIST "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" goto UNLOCK 
if NOT EXIST Secure goto MDLOCKER 
:CONFIRM 
echo (Y/N) 
set/p "cho=>" 
if %cho%==Y goto LOCK 
if %cho%==y goto LOCK 
if %cho%==n goto END 
if %cho%==N goto END 
echo Invalid choice. 
goto CONFIRM 
:LOCK 
ren Secure "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" 
attrib +h +s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" 
echo Folder locked 
goto End 
:UNLOCK 
set/p "variable=>" 
if NOT %variable%== (Here is Enter Your Password) goto FAIL 
attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" 
ren "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" Secure 
echo Folder Unlocked successfully 
goto End 
:FAIL 
echo Invalid password 
goto end 
:MDLOCKER 
md Secure 
echo Secure created successfully 
goto End 
:End 

Вот мой код эха, который предназначен для скрытия папки с помощью команды y/n и unhide с использованием пароля. он работает правильно, по моему мнению, нет ошибки.В пакетном файле, как маскировать ввод со звездочкой * используя Powershell?

Но проблема в том, что мне нужен командный файл для маскировки входного текста с помощью *.

и я нашел его на:

http://stackoverflow.com/questions/22942383/batch-file-to-mask-input-with-without-an-external-file 

Вот способ сделать это с помощью Powershell в пакетном файле Мэтт Уильямсон

set "psCommand=powershell -Command "$pword = read-host 'Enter Password' -AsSecureString ;^
$BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword);^
[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)"" 
for /f "usebackq delims=" %%p in (`%psCommand%`) do set password=%%pass 

После этого Чудесная решение, которое прекрасно работает маскировать мой текст. , но после некоторой модификации я не могу понять, куда положить свой пароль?

Кто-то мне помогает !! где я могу поместить свой пароль в пакетный файл?

Вот окончательный код:

cls 
@ECHO OFF 
title Folder Secure 
if EXIST "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" goto UNLOCK 
if NOT EXIST Secure goto MDLOCKER 
:CONFIRM 
echo (Y/N) 
set/p "cho=>" 
if %cho%==Y goto LOCK 
if %cho%==y goto LOCK 
if %cho%==n goto END 
if %cho%==N goto END 
echo Invalid choice. 
goto CONFIRM 
:LOCK 
ren Secure "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" 
attrib +h +s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" 
echo Folder locked 
goto End 
:UNLOCK 

set "psCommand=powershell -Command "$pword = read-host 'Enter Password' -AsSecureString ;^
$BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword);^
[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)"" 
for /f "usebackq delims=" %%p in (`%psCommand%`) do set password=%%pass 

if NOT %pass%== folder goto FAIL 
attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" 
ren "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" Secure 
echo Folder Unlocked successfully 
goto End 
:FAIL 
echo Invalid password 
goto end 
:MDLOCKER 
md Secure 
echo Secure created successfully 
goto End 
:End 

Но он не принял мой пароль. У меня нет знаний о Powershell !! вот почему мне нужна помощь!

извините за мой плохой английский С наилучшими пожеланиями: Али Хайдер Thanku Все :)

+0

Изменить 'do set password = %% pass' на' do set pass = %% p' –

+0

Вы понимаете, что это вообще не обеспечивает никакой безопасности, не так ли? –

+3

@AliHyder Почему вы изобретаете колесо? См. [Что такое пакетный эквивалент Windows для типа ввода HTML = «пароль»?] (Http://stackoverflow.com/questions/286871/) Также см. Также [Скрыть ввод в пакетном файле] (http: // stackoverflow. com/questions/5852759 /) и [Могу ли я маскировать входной текст в файле bat?] (http://stackoverflow.com/questions/664957/) – Mofi

ответ

0

Вы должны использовать %% р потому, что вы храните его там. Во-вторых, вы вообще не предоставляете такую ​​безопасность. В соответствующей Powershell вы можете использовать приведенный ниже код в разделе Powershell, который поможет вам зашифровать с помощью собственного ключа, а также расшифровать его.

Вместо:

set "psCommand=powershell -Command "$pword = read-host 'Enter Password' -AsSecureString ;^
$BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword);^
[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)"" 
for /f "usebackq delims=" %%p in (`%psCommand%`) do set password=%%pass 

Использование должны сделать это:

set "psCommand=powershell -Command "$pword = read-host 'Enter Password' -AsSecureString ;^
$BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword);^
[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)"" 
for /f "usebackq delims=" %%p in (`%psCommand%`) do set password=%%p 

Powershell:

Ссылку оказывает пример, где я использовал зашифрованное пароль на основе AES. Вы можете включить то же самое в свой код.

## For the current user , it can encrypt and decrypt as well 
$username = "[email protected]" 
$pwdTxt = Get-Content $SecurePwdFilePath ; 
$securePwd = $pwdTxt | ConvertTo-SecureString ; 
$credObject = New-Object System.Management.Automation.PSCredential -ArgumentList $username, $securePwd ; 
# You can use the $credObject anywhere in your script now. 

Надеюсь, что это поможет вам в понимании.

+0

Thanku Ranadip Dutta ... –

+0

@AliHyder: Пожалуйста, примите ответ, если он вам поможет. –

+0

Но это не работает для меня :(вы можете сделать это для меня полностью? Я знаю, что это не безопасно, но для меня это достаточно для моего домашнего использования. Я не большой программист, но все же новичок. у меня нет знаний о powershell. –

 Смежные вопросы

  • Нет связанных вопросов^_^