Необычное поведение запароленного rar-файла, который в winrar принимает неверный пароль, но ошибочно принимается в 7zip

Необычное поведение запароленного rar-файла, который в winrar принимает неверный пароль, но ошибочно принимается в 7zip

Я нашел старый файл .rar на своем компьютере, но не мог вспомнить пароль. У меня было приблизительное представление о том, что это было, поэтому я написал программу с использованием 7ziplib на C# для перебора нескольких перестановок.

После нескольких тысяч он нашел совпадение. Когда я открываю файл в 7zip, используя найденный пароль, он открывается, но не отображает файлы. Когда я пытаюсь открыть его в Winrar, он говорит, что архив поврежден или неверный пароль.

7ziplib сообщает размер несжатого файла как -1.

Я запустил ту же самую программу подбора паролей для другого zip-архива в той же папке, который имел похожий, но не идентичный пароль, и наблюдалось то же самое поведение.

В той же папке есть и другие файлы rar, которые не защищены паролем и открываются нормально.

Есть ли этому какое-то алгоритмическое объяснение? Может ли быть, что я нашел пароль, который проходит один этап проверки пароля, но не проходит другой? Или архив поврежден?

Если это поможет, формат сообщается как Rar4, который, по словам Google, использует AES-128, но Википедия утверждает, что он не существует, поскольку он переходит с версии 2.9 на 5.

решение1

Насколько мне известно, RAR использует 32-битные значения CRC для всех значений контрольной суммы, как файлов, так и заголовка архива. Поэтому при переборе паролей у вас есть 1 из 2^32 (~ 1 из 4 миллиардов) шансов на совпадение контрольной суммы заголовка, даже если декодированные данные заголовка (и любые последующие данные файла) являются мусором, поскольку пароль, а следовательно, и ключ дешифрования, на самом деле неверны. Мой опыт перебора RAR, похоже, подтверждает это.

Есть ли этому какое-то алгоритмическое объяснение? Может ли быть, что я нашел пароль, который проходит один этап проверки пароля, но не проходит другой?

Примерно так и произошло.

Связанный контент