У меня есть школьный проект, в котором я должен использовать атаку методом подбора, чтобы восстановить пароль зашифрованного файла 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%, что то, что я предложил выше, вообще возможно. Если да, то какое наименьшее количество байтов я могу извлечь из архива, который можно использовать для контрольной суммы? Как извлечь выбранное количество байтов из архива?
Спасибо.