问题描述
: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 并检查您的密码的散列版本,而不是存储明文。
然而,这需要一些文件系统管理。我不知道直接将输入散列到批处理文件的方法。