字符串批处理文件

时间:2017-03-16 05:26:29

标签: batch-file cmd base64 decode encode

我想解码base64编码的文本并使用它来登录网站。 base64编码的文本是用户名和密码。我找到了像Base64.exe和b64.exe这样的工具但它们将输入作为文件输入,而在我的情况下输入是一个字符串。请帮助我。所有这些只在批处理文件中完成,并且还从config.txt文件中读取编码文本。

3 个答案:

答案 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%

base64.bat

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