批量十六进制到Asciic使字符串无用?

时间:2016-02-01 08:08:33

标签: windows batch-file cmd

我相信我找到了一个很好的方法,可以立即向多个批处理窗口发送命令行,以下是我的看法:

  1. 使用Set with / p允许我输入一个我保存为消息的字符串
  2. 使用“Echo set command =%message%> command.bat
  3. 将其导出到自己的bat文件
  4. 使用echo键入ftp信息,然后使用“Ftp -s:upload.txt ftp.example.com
  5. 运行它
  6. 这会将其上传到我的网站,我将使用bitadmin.exe下载文件
  7. 然后运行command.bat并确保在运行命令之前字符串%命令%不相同
  8. 一切正常,但事实并非如此,但我觉得我的ftp名称/密码过于暴露给任何拥有IQ的人“右键单击编辑 “并检查代码。我已经到了这样的地步,我试图通过查看批处理文件来让它变得更难实现。

    到目前为止,我将密码转换为HEX并使用花哨的批处理文件将其转换回来自我调用的批处理文件的字符串,然后使用ftp连接文件将其导出。它一直工作,直到批处理读取ftp连接文件并卡在“需要密码”,即使我检查我的ftp连接文件,然后密码正确键入正确的地方,没有额外的空格或奇怪的东西。但它不会工作,直到我删除该行并在我自己键入它。 (另一种方式,我正在考虑使用批处理程序,但只是在临时文件夹中运行批处理文件,每个人都知道)我在这里使用的十六进制密码只是“密码”

    到目前为止

    代码:

    @Echo Off
    
    :Start
    
    Rem (1)Set/(2)Export Message
    
    Rem (1)
    Set /p message=
    
    Rem (2)
    Echo set run=%message% >command.bat
    
    Rem (1)Decode Hex/(2)Running hex output/(3)Acces FTP service
    
    Rem (1)
    Start HEX.bat 70617373776f7264
    
    Rem (2)
    Call CODE.bat
    Del /Q CODE.bat
    
    Rem (3)
    Echo darkrock> upload.txt
    Echo %code%>> upload.txt
    Echo asc>>upload.txt
    Echo put command.bat>> upload.txt
    Echo quit >> upload.txt
    Ftp -s:upload.txt ftp.example.com
    
    Goto :Start
    

    十六进制转换器来到这里:

    @echo off
    setlocal DisableDelayedExpansion
    set Caret=^^
    set ControlChar={SOH} {STX} {ETX} {EOT} {ENQ} {ACK} {BEL} {BS} {HT} {LF} {VT} {FF} {CR} {SO} {SI} {DLE} {XON}
    set ControlChar=%ControlChar% {DC2} {XOFF} {DC4} {NAK} {SYN} {ETB} {CAN} {EM} {SUB} {ESC} {FS} {GS} {RS} {US}
    set AsciiChar= !"#$%%&'()*+,-./0123456789:;<=>?
    setlocal EnableDelayedExpansion
    set AsciiChar=!AsciiChar!@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]!Caret!_`abcdefghijklmnopqrstuvwxyz{^|}~
    set AsciiChar=!AsciiChar!€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿
    set AsciiChar=!AsciiChar!ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
    
    set HexCode=%1
    call :Conversion
    echo Hex:   %1
    echo Dec:   %DecimalCode%
    echo Ascii: !AsciiCode!
    echo Bin:   %BinaryCode%
    cls
    goto :EOF
    
    
    :Conversion
    set DecimalCode=
    set AsciiCode=
    set BinaryCode=
    :ConvertHex
       set /A Decimal=0x%HexCode:~0,2%, DecChar=Decimal-32
       set DecimalCode=%DecimalCode%%Decimal%,
       if %Decimal% lss 32 (
          if %Decimal% equ 0 (
             set AsciiCode=!AsciiCode!{NUL}
          ) else (
             for /F "tokens=%Decimal%" %%c in ("%ControlChar%") do set AsciiCode=!AsciiCode!%%c
          )
       ) else (   
          set AsciiCode=!AsciiCode!!AsciiChar:~%DecChar%,1!
       )
       call :DecToBin
       set BinaryCode=%BinaryCode%%Binary%,
       set HexCode=%HexCode:~2%
       if defined HexCode goto ConvertHex
    exit /B
    
    :DecToBin
    set Binary=
    for /L %%i in (1,1,8) do (
       set /A "Bit=Decimal&1, Decimal>>=1"
       set Binary=!Bit!!Binary!
    )        
    echo set code=%AsciiCode% >Code.bat
    exit /B
    
    提前thx! :)可能是我在代码中错过了一些东西,但我相信我最近两天尝试过,而不是忙于拼贴。

0 个答案:

没有答案