Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
bkcrack — Взлом устаревшего шифрования zip с помощью атаки по известному открытому тексту Бихама и Кохера. | Kitploit
Инструменты/GitHubGitHub/kimci86/bkcrack
Взлом паролейИнструменты шифрования/дешифрованияАнализ уязвимостейКриптография
GitHubkimci86/bkcrack

bkcrack

Взлом устаревшего шифрования zip с помощью атаки по известному открытому тексту Бихама и Кохера.

Репозиторий
2.2k188211 месяц назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

bkcrack

CI badge coverage badge release badge license badge GitHub Sponsors badge

Взлом устаревшего шифрования zip с помощью атаки с известным открытым текстом Бихама и Кохера.

Обзор

ZIP-архив может содержать множество записей, содержимое которых может быть сжато и/или зашифровано. В частности, записи могут быть зашифрованы с помощью симметричного алгоритма шифрования на основе пароля, называемого традиционным шифрованием PKWARE, устаревшим шифрованием или ZipCrypto. Этот алгоритм генерирует псевдослучайный поток байтов (ключевой поток), который XOR-ится с содержимым записи (открытым текстом) для получения зашифрованных данных (шифротекста). Состояние генератора, состоящее из трех 32-битных целых чисел, инициализируется с помощью пароля и затем непрерывно обновляется открытым текстом по мере шифрования. Этот алгоритм шифрования уязвим для атак с известным открытым текстом, как показали Эли Бихам и Пол К. Кохер в исследовательской статье A known plaintext attack on the PKZIP stream cipher. При наличии шифротекста и 12 или более байтов соответствующего открытого текста можно восстановить внутреннее состояние генератора ключевого потока. Этого внутреннего состояния достаточно, чтобы полностью расшифровать шифротекст, а также другие записи, зашифрованные тем же паролем. Его также можно использовать для перебора пароля со сложностью nl-6, где n — размер набора символов, а l — длина пароля.

bkcrack — это инструмент командной строки, реализующий эту атаку с известным открытым текстом. Основные возможности:

  • Восстановление внутреннего состояния из шифротекста и открытого текста.
  • Удаление или изменение пароля ZIP-архива с помощью внутреннего состояния.
  • Восстановление исходного пароля из внутреннего состояния.

Установка

Предварительно скомпилированные пакеты

Вы можете получить последний официальный релиз на GitHub.

Предварительно скомпилированные пакеты для Ubuntu, MacOS и Windows доступны для загрузки. Распакуйте загруженный архив туда, куда вам удобно.

В Windows для работы bkcrack необходимы библиотеки времени выполнения Microsoft. Если они еще не установлены в вашей системе, загрузите и установите последний пакет Microsoft Visual C++ Redistributable.

Скомпилировать из исходников

Кроме того, вы можете скомпилировать проект с помощью CMake.

Сначала загрузите исходные файлы или клонируйте git-репозиторий. Затем выполните следующие команды в дереве исходных файлов, чтобы создать установку в папке install.

cmake -S . -B build -DCMAKE_INSTALL_PREFIX=install
cmake --build build --config Release
cmake --build build --config Release --target install

Пакеты от сторонних разработчиков

bkcrack доступен в репозиториях пакетов, перечисленных ниже. Эти пакеты предоставляются внешними сопровождающими.

Packaging status

Использование

Список записей

Вы можете просмотреть список имен записей и метаданных в архиве с именем archive.zip следующим образом:

bkcrack -L archive.zip

Записи, использующие шифрование ZipCrypto, уязвимы для атаки с известным открытым текстом.

Восстановление внутренних ключей

Для атаки требуется не менее 12 байт известного открытого текста. По крайней мере 8 из них должны быть непрерывными. Чем больше непрерывного известного открытого текста, тем быстрее атака.

Загрузка данных из ZIP-архивов

Имея ZIP-архив encrypted.zip с записью cipher в качестве шифротекста и plain.zip с записью plain в качестве известного открытого текста, bkcrack можно запустить следующим образом:

bkcrack -C encrypted.zip -c cipher -P plain.zip -p plain

Загрузка данных из файлов

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

bkcrack -c cipherfile -p plainfile

Смещение

Если открытый текст соответствует части, отличной от начала шифротекста, вы можете указать смещение. Оно может быть отрицательным, если открытый текст включает часть заголовка шифрования.

bkcrack -c cipherfile -p plainfile -o offset

Разреженный открытый текст

Если вы знаете небольшой непрерывный открытый текст (от 8 до 11 байт), но знаете некоторые байты в некоторых других известных смещениях, вы можете предоставить эту информацию, чтобы достичь требования в 12 известных байт в общей сложности. Для этого используйте флаг -x, за которым следует смещение и байты в шестнадцатеричном формате.

bkcrack -c cipherfile -p plainfile -x 25 4b4f -x 30 21

Расшифровка

Если атака успешна, расшифрованные данные, связанные с шифротекстом, использованным для атаки, могут быть сохранены:

bkcrack -c cipherfile -p plainfile -d decipheredfile

Если ключи известны из предыдущей атаки, можно использовать bkcrack для расшифровки данных:

bkcrack -c cipherfile -k 12345678 23456789 34567890 -d decipheredfile

Декомпрессия

Расшифрованные данные могут быть сжаты в зависимости от того, использовалось ли сжатие при создании zip-файла. Если использовалось сжатие deflate, можно использовать скрипт Python 3, предоставленный в папке tools, для декомпрессии данных.

python3 tools/inflate.py < decipheredfile > decompressedfile

Удаление пароля

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

bkcrack -C encrypted.zip -k 12345678 23456789 34567890 -D decrypted.zip

Изменение пароля

Также можно создать новый зашифрованный архив с паролем по вашему выбору:

bkcrack -C encrypted.zip -k 12345678 23456789 34567890 -U unlocked.zip new_password

Вы также можете задать новый пароль через его внутреннее представление.

bkcrack -C encrypted.zip -k 12345678 23456789 34567890 --change-keys unlocked.zip 581da44e 8e40167f 50c009a0

Эти две команды можно использовать вместе для изменения содержимого зашифрованного архива, не зная пароля, но зная только внутренние ключи: вы можете сделать копию, зашифрованную выбранным вами паролем, затем отредактировать копию с помощью архиватора, введя выбранный пароль при запросе, и, наконец, сделать копию измененного архива обратно с исходными ключами шифрования.

Восстановление пароля

Зная внутренние ключи, bkcrack может попытаться найти исходный пароль.

Восстановление пароля перебором

Вы можете искать пароль, используя символы в заданном наборе символов:

bkcrack -k 1ded830c 24454157 7213b8c5 -b ?p

Вы можете ограничить поиск паролями заданной длины или диапазона длин:

bkcrack -k 1ded830c 24454157 7213b8c5 -b ?p -l 9
bkcrack -k 1ded830c 24454157 7213b8c5 -b ?p -l 8..10

Опция -r <длина> <набор_символов> является сокращением для -l 0..<length> -b <charset>:

bkcrack -k 1ded830c 24454157 7213b8c5 -r 10 ?p

Восстановление пароля по маске

Скачать инструмент