1

Ранее сегодня я продолжал делать расшифровщик паролей RAR. Я тестировал его на тестовом RAR-файле с паролем, который был просто восклицательным знаком, но когда я использую свой Decryptor, все, что он говорит, это просто "Эхо было отключено". Ошибка находится в нижней части кода рядом с тем, где написано "эхо".

Это кодирование для расшифровщика паролей RAR, которое я сделал до сих пор (и, если все в порядке, вы можете сообщить мне больше ошибок и дать несколько советов, спасибо людям).

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 ===========================

1 ответ1

4

Если у вас есть проблемы с echo ! тогда у вас установлен EnableDelayedExpansion .

Если EnableDelayedExpansion установлен, то ! рассматривается как специальный символ и должен быть экранирован с помощью ^ .

^ должен использоваться дважды, так как это также специальный символ.

Избегание восклицательных знаков

Когда оболочка работает в режиме EnableDelayedExpansion, то! символ используется для обозначения переменной и поэтому должен быть экранирован (дважды), если вы хотите рассматривать его как обычный символ:

^^!


Без EnableDelayedExpansion:

@echo off
echo 1q2w!3e

Выход:

1q2w!3e

С EnableDelayedExpansion и без экранирования:

@echo off
Setlocal EnableDelayedExpansion
echo 1q2w!3e

Выход:

1q2w3e

Обратите внимание на пропавшее ! на выходе.


С EnableDelayedExpansion и экранированием:

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

Выход:

1q2w!3e

EnableDelayedExpansion можно установить тремя способами:

  • Использование Setlocal EnableDelayedExpansion в командном файле
  • Запуск cmd с ключом /v .
  • В реестре под HKLM или HKCU
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"DelayedExpansion"= (REG_DWORD)
1=enabled 0=disabled (default)

Источники EnableDelayedExpansion, Escape-символы, разделители и кавычки

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .