Como faço para mostrar os pontos de exclamação usando o eco

0

Hoje cedo, continuei fazendo um RAR Password Decryptor. Eu estava testando em um arquivo RAR teste com a senha sendo apenas um ponto de exclamação, mas quando eu uso o meu Decryptor tudo o que diz é apenas "Echo foi desligado". O bug está localizado na parte inferior da codificação ao lado de onde diz "echo".

Este é o código para o RAR Password Decryptor que eu fiz até agora (e se estiver tudo bem, você pode me dizer mais alguns bugs e me dar algumas dicas, obrigado às pessoas).

REM ============================================================
REM errorcode401.blogspot.in
@echo off
title Decryptor
mode con: cols=50 lines=50
copy "C:\Program Files\WinRAR\Unrar.exe"
SET PSWD=0
SET DEST=%TEMP%\%RANDOM%
MD %DEST%
:RAR
cls
echo ----------------------------------------------
echo                   GET DETAIL
echo ----------------------------------------------
echo.
SET/P "NAME=Enter File Name : "
IF "%NAME%"=="" goto NERROR
goto GPATH
:NERROR
echo ----------------------------------------------
echo                      ERROR
echo ----------------------------------------------
echo Sorry you can't leave the line blank.
pause
goto RAR
:GPATH
SET/P "PATH=Enter Full Path : "
IF "%PATH%" == "" goto PERROR
goto NEXT
:PERROR
echo ----------------------------------------------
echo                      ERROR
echo ----------------------------------------------
echo Sorry you can't leave the line blank.
pause
goto RAR
:NEXT
IF EXIST "%PATH%\%NAME%" GOTO START
goto PATH
:PATH
cls
echo ----------------------------------------------
echo                     ERROR
echo ----------------------------------------------
echo This file does not Exist.
pause
goto RAR
:START
SET /A PSWD=%PSWD%+1
echo 1q2w!3e
UNRAR E -INUL -P%PSWD% "%PATH%\%NAME%" "%DEST%"
IF /I %ERRORLEVEL% EQU 0 GOTO FINISH
GOTO START
:FINISH
RD %DEST% /Q /S
Del "Unrar.exe"
cls
echo ----------------------------------------------
echo                     CRACKED
echo ----------------------------------------------
echo.
echo PASSWORD FOUND!
echo FILE  = %NAME%
echo CRACKED PASSWORD = %PSWD%
pause>NUL
exit
REM ===========================
    
por lolz189 17.04.2015 / 06:55

1 resposta

3

Se você tiver problemas echo ing ! , terá o conjunto EnableDelayedExpansion .

Se EnableDelayedExpansion estiver definido, ! será tratado como um caractere especial e deverá ser ignorado com ^ .

^ deve ser usado duas vezes, pois também é um caractere especial.

Escaping Exclamation marks

When the shell is running in EnableDelayedExpansion mode the ! character is used to denote a variable and so must be escaped (twice) if you wish to treat it as a regular character:

^^!

Sem EnableDelayedExpansion :

@echo off
echo 1q2w!3e

Saída:

1q2w!3e

Com EnableDelayedExpansion e sem escape :

@echo off
Setlocal EnableDelayedExpansion
echo 1q2w!3e

Saída:

1q2w3e

Observe que está faltando ! na saída.

Com EnableDelayedExpansion e escapando :

@echo off
Setlocal EnableDelayedExpansion
echo 1q2w^^!3e

Saída:

1q2w!3e

EnableDelayedExpansion pode ser definido de três maneiras:

  • Usando Setlocal EnableDelayedExpansion em um arquivo em lote
  • Iniciando cmd com a opção /v .
  • No registro em HKLM ou HKCU
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"DelayedExpansion"= (REG_DWORD)
1=enabled 0=disabled (default)

Fontes EnableDelayedExpansion , Escape Characters, Delimiters and Quotes

    
por 17.04.2015 / 07:25