Ошибка в LibreOffice портит парольную защиту в xls-файлах Microsoft Excel

ВерниДоступ.ру стал получать странные xls-файлы: пользователь вводит верный пароль, но Microsoft Excel его не принимает, а наш сервис не может найти ключ шифрования для таких файлов.

В чём причина?

Оказалось, что LibreOffice может портить защищённые паролем файлы Microsoft Excel.

Подробности и решение в нашей заметке.

Онлайн сервис ВерниДоступ.ру использует оригинальные радужные таблицы Пасковери, находит в них ключ шифрования ( только 40-ка битные ключи!), расшифровывает защищённый паролем документ Microsoft Excel/Word 97-2003 и удаляет Пароль открытия из файла.

Успех при этом настолько близок к абсолютному, что мы считаем его 100%-ым.

Для оставшихся единичных случаев в наших программах есть поиск ключа шифрования. Он требует больше времени, но обеспечивает по настоящему 100% гарантию успешного нахождения ключа.

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

Оказалось, что в месте хранения данных о ключе шифрования пусто, сами данные не зашифрованы, но в файле по прежнему включён флаг о использовании парольной защиты. И да, тут же рядом в файле Microsoft Excel хранится запись о вероятном виновнике: Calc…

Владелец одного из таких странных файлов прояснил ситуацию:

“Файл был создан в Office 2003 и защищен паролем, далее много раз редактировался и дополнялся в Office 2013.

В Office 2013 много раз добавлялась информация. Каждый раз файл принимал пароль и все было хорошо.

Вчера на новом компьютере я открыл файл в Libre Office Версия: 5.4.3.2 (x64) и внес изменения, далее сохранил. Он мне предложил сохранить в старом формате 97-2003 или создать новый файл, я выбрал сохранить в Office 97-2003. После этого ни сам Libre Office, ни 2003, ни 2007 не стали открывать эти файлы. То есть пароль известен но он не принимается.”

Эта история повторяется раз за разом у разных пользователей, кто присылает свои файлы для расшифровки на ВерниДоступ.ру: файл был создан и защищён в Microsoft Excel, но после его редактирования в LibreOffice что-то пошло не так и пароль не подходит.

Удаляем «парольную защиту» из файлов Excel, повреждённых в LibreOffice

Для работы потребуется HEX-редактор. Мы использовали Notepad++ с дополнительным плагином, но также рекомендуем редактор HxD.

ВНИМАНИЕ: Перед началом редактирования сделайте резервную копию файла на всякий случай. Если что-то пойдёт не так — вы не пожалеете об этом.

  1. Откройте файл в HEX-редакторе и найдите заголовок потока данных. Он начинается с отпечатка 0x09081000 и обычно находится по адресу 0x600, но возможны варианты (начало заголовка всегда выровнено на 0x200).

  2. Перейдите к заголовку шифрования. Он начинается с отпечатка 0x2F003600.


    Начало потока данных и заголовка шифрования в Microsoft Excel
  3. Оцените подходит ли открытый файл под описанную проблему повреждения: если в блоке данных за отпечатком заголовка шифрования вместо «плотного» набора случайных чисел находятся нули и заканчивается он читаемой подписью Calc – это нужный случай:


    Типичный вид заголовка шифрования файла Excel, повреждённого в LibreOffice

    Для сравнения, вот как выглядит этот блок данных в зашифрованном и неповреждённом файле Excel:


    Типичный вид заголовка шифрования в зашифрованном файле Excel
  4. Замените значение в отпечатке заголовка с 0x2F на 0x22, чтобы получилось 0x22003600:


    Закройте заголовок шифрования в повреждённом файле от использования

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

    Из-за какой-то внутренней ошибки LibreOffice сохранил защищённый паролем файл без защиты, но при этом оставил запись о том, что защита применяется.

    Вы эту запись удалили простым изменением одного байта.

  5. Сохраните изменения в HEX-редакторе и откройте файл в Microsoft Office или LibreOffice. Пароль для этого вам уже не потребуется. В файле нет защиты и пароль не установлен.

ВНИМАНИЕ: Этот метод не удаляет пароль из зашифрованного файла Excel! Этот метод исправляет ошибку сохранения файла Excel из LibreOffice, при которой документ оказывается незашифрован, но с активной записью о применении парольной защиты. Для поиска и удаления паролей в файлах Microsoft Excel/Word используйте Accent OFFICE Password Recovery с ускорением на GPU.