是否可以在 BAT 文件中加密/散列密码?

问题描述

:start
echo Try to hack this password!
set/p "pass=>"
if not %pass% == Ebaturvaline177 goto vale
echo Correct!!
pause
 start "" https://stackoverflow.com
exit
:vale
echo Wrong.
goto :start

我如何加密/散列密码,让人们无法查看代码并看到代码

解决方法

阅读您的问题后我很感兴趣,所以我决定制作一个批处理文件来完成您想要做的事情。我没有存储原始密码,而是将 MD5 Hash 存储在一个文件中,然后我将用户输入与存储在名为 pass.txt 的文件中的哈希值进行比较。

Crackme.bat:

@echo off & setlocal
:loop
set userinput=
set /p userinput=Try Crack me:
set "plaintext=%userinput%"
set "file=%temp%\%~n0.tmp"
set md5=

if not defined plaintext set /P "plaintext="

if exist "%plaintext%" (
    set "file=%plaintext%"
) else for %%I in ("%file%") do if %%~zI equ 0 (
    <NUL >"%file%" set /P "=%plaintext%"
)

for /f "skip=1 delims=" %%I in ('certutil -hashfile "%file%" MD5') do (
    if not defined md5 set "md5=%%I"
)

2>NUL del "%temp%\%~n0.tmp"

echo %md5: =% >>file.txt
set /p passhash=<file.txt
ping localhost -n 2 >nul
del file.txt
set /p passtocrackhash=<pass.txt
if %passhash% equ %passtocrackhash% ( goto cracked) else ( goto  error)
:error
echo Wrong pass
goto loop
:cracked
echo Hurrah!you cracked the password it was %userinput%


此批处理文件将接受用户输入并将其与存储在 pass.txt 中的哈希值进行比较,如果密码正确则显示成功消息,否则将抛出错误并循环回另一次尝试

pass.txt:

8b1a9953c4611296a827abf8c47804d7

只需创建一个名为 pass.txt 的文件并输入密码的 md5 哈希值并保存即可。您可以通过关注 batch-file 或在线创建一个 md5 哈希值。只需将代码保存为 .bat open cmd 在同一目录中,并将要散列的字符串作为批处理文件的参数

欢迎任何人编辑代码以进行改进...

,

如果用户可以访问源代码,他们就可以绕过密码。

如果这只是一个有趣的挑战,您可以尝试 hashing the input 并检查您的密码的散列版本,而不是存储明文。

然而,这需要一些文件系统管理。我不知道直接将输入散列到批处理文件的方法。