使用批处理文件进行密码屏蔽

11 浏览
0 Comments

使用批处理文件进行密码屏蔽

在当前情况下,当我运行批处理文件时,窗口提示输入密码。当我输入密码时,字符在窗口提示中是可见的。

我想要屏蔽密码。

目前,在我的批处理文件中,我有以下代码来输入密码:

SET /p v_password=输入用户密码:

我应该在这里嵌入什么代码来屏蔽密码。

0
0 Comments

密码遮蔽的批处理文件出现的原因是为了保护用户的密码安全。为了解决这个问题,可以使用PowerShell命令来掩盖密码。以下是一些使用PowerShell命令在批处理文件中掩盖密码的示例代码。

第一个示例代码:

off

set "psCommand=powershell -C "$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

echo %password%

pause

这段代码使用PowerShell命令来掩盖密码。它要求用户输入密码,然后将密码转换为安全字符串,并通过批处理文件将其存储在变量中。最后,将密码打印出来。

第二个示例代码:

off

Title %~n0

Mode 50,5 & Color 0E

:CreatePassword

cls & Color 0E

setlocal DisableDelayedExpansion

Call :InputPassword "Please choose your password" pass1

Call :InputPassword "Please confirm your password" pass2

setlocal EnableDelayedExpansion

If !pass1!==!pass2! ( Goto:Good ) Else ( Goto:Bad )

::***********************************

:InputPassword

Cls

echo(

set "psCommand=powershell -Command "$pword = read-host '%1' -AsSecureString ; ^

$BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword); ^

[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)""

for /f "usebackq delims=" %%p in (`%psCommand%`) do set %2=%%p

Goto :eof

::***********************************

:Good

Color 0B

Cls

echo.

echo Good password

::TimeOut /T 2 /NoBreak>nul

echo Your password stored as : "!Pass2!" without quotes

pause>nul

Goto :Eof

::***********************************

:Bad

Color 0C

Cls

echo.

echo Wrong password try again

::TimeOut /T 2 /NoBreak>nul

echo Press any key to retry again

pause>nul

Goto :CreatePassword

::***********************************

这段代码通过调用PowerShell命令来掩盖密码,并要求用户输入密码两次以进行确认。如果两次输入的密码相同,则打印出密码并提示密码正确,否则会提示密码错误并要求重新输入。

以上是使用PowerShell在批处理文件中掩盖密码的示例代码。第一个示例代码将密码存储在变量中,而第二个示例代码通过用户输入进行验证,并在密码正确时打印密码。

0