我想解码base64编码的文本并使用它来登录网站。 base64编码的文本是用户名和密码。我找到了像Base64.exe和b64.exe这样的工具但它们将输入作为文件输入,而在我的情况下输入是一个字符串。请帮助我。所有这些只在批处理文件中完成,并且还从config.txt文件中读取编码文本。
答案 0 :(得分:6)
您可以在不安装外部软件的情况下使用CERTUTIL
命令(虽然它需要临时文件):
@echo off
del /q /f "%temp%\b64" >nul 2>nul
del /q /f "%temp%\decoded" >nul 2>nul
set "base64string=YmFzZTY0c3RyaW5n"
echo -----BEGIN CERTIFICATE----->"%temp%\b64"
<nul set /p=%base64string% >>"%temp%\b64"
echo -----END CERTIFICATE----->>"%temp%\b64"
certutil /decode "%temp%\b64" "%temp%\decoded" >nul 2>nul
for /f "useback tokens=* delims=" %%# in ("%temp%\decoded") do set "decoded=%%#"
echo %decoded%
del /q /f "%temp%\b64" >nul 2>nul
del /q /f "%temp%\decoded" >nul 2>nul
你也可以使用powershell,尽管没有临时文件,但它会慢一些:
set "base64string=YmFzZTY0c3RyaW5n"
for /f "tokens=* delims=" %%# in ('powershell [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("""%base64string%"""^)^)') do set "decoded=%%#"
echo %decoded%
您也可以尝试使用atob.bat:
call atob.bat YmFzZTY0c3RyaW5n decoded
echo %decoded%
for /f "tokens=* delims=" %%# in ('base64.bat -decode YmFzZTY0c3RyaW5n') do set "decoded=%%#"
echo %decoded%
答案 1 :(得分:0)
我找到了解决方案。我从&#34; config.txt&#34;中提取base64编码的文本。到一个新文件说&#34; tmp.txt&#34;。现在我运行cmd&#34; b64.exe -d tmp.txt tmp2.txt&#34;。我在新的&#34; tmp2.txt&#34;中得到解码后的文本。文件。我删除了&#34; tmp.txt&#34;和&#34; tmp2.txt&#34;一旦我读了用户名和密码。 谢谢
答案 2 :(得分:0)
您可以使用由 @jeb , @dbenham 和 @Ed Dyreen 发明的macro style:
@echo off
====SETLOCAL DisableDelayedExpansion EnableExtensions
set ^"LF=^
%===EXPANDS TO NOTHING===%
"
REM \n is an escaped LF + caret
set ^"\n=^^^%LF%%LF%^%LF%%LF%^^"
REM Initalize macro
set ^"$b64d=FOR %%$ in (%%$ MainMacro) do if "%%$" == "MainMacro" (%\n%
^>nul %__APPDIR__%CERTUTIL.EXE -f -decodehex args.tmp proc.tmp 1%\n%
type proc.tmp%\n%
del args.tmp proc.tmp%\n%
) ELSE ^>args.tmp echo("
echo BEFORE :: %time%
%$b64d%dGhpcwppcwpzaWNrIQo=
echo AFTER :: %time%
输出:
BEFORE :: 21:13:31.94 this is sick! AFTER :: 21:13:32.02