Какое наименьшее количество байтов я могу извлечь из зашифрованного файла RAR и как я могу извлечь его и проверить с помощью CRC32 - PullRequest
0 голосов
/ 07 мая 2018

У меня есть школьный проект, в котором я должен использовать атаку методом подбора, чтобы восстановить пароль зашифрованного файла RAR. Очевидно, что использование грубой силы в системе шифрования AES256 не очень полезно, но цель домашней работы - узнать о грубой силе, поэтому скорость взлома не важна. Атака по словарю и атака по известному тексту не допускаются учителем. И я узнал из постов, которые я читал на этом сайте, что эти методы не намного лучше взламывают пароли, когда дело доходит до AES.

Изучив различные библиотеки, извлекающие RAR, включая официальный исходный код winRAR (найденный на rarlab.com) и исходный код программного обеспечения для взлома паролей, называемого John the Ripper, я понял, что найти хешированный ключ из файла RAR невозможно (Эта тема обсуждалась и в другом вопросе на этом сайте).

Таким образом, единственный реальный способ попробовать атаку методом перебора на зашифрованный RAR-файл - это извлечь архив с предполагаемым паролем и вычислить контрольную сумму CRC32, чтобы проверить, правильно ли извлечены файлы.

Из исходного кода RAR-unlocker я нашел многочлен CRC32, который:

X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0

Исходный код здесь: https://github.com/RaMMicHaeL/RAR-Unlocker/blob/master/crc32.cpp

Теперь моя проблема в том, что, хотя я говорил в начале, что скорость взлома не очень важна, я не могу позволить себе извлекать весь архив и вычислять CRC32 для каждого предположения. Для большого файла это может означать минуты для каждой попытки.

Итак, я решил, что если бы я мог извлечь только небольшую часть архива (скажем, пару байтов) с моим предполагаемым ключом и вычислить контрольную сумму CRC32, чтобы увидеть, правильно ли извлечены файлы, я мог бы использовать тот же ключ для извлечения всего файла тоже.

Это то, где я сейчас нахожусь. Я очень новичок в криптографии, поэтому я не уверен на 100%, что то, что я предложил выше, вообще возможно. Если да, то какое наименьшее количество байтов я могу извлечь из архива, который можно использовать для контрольной суммы? Как извлечь выбранное количество байтов из архива?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...