Расшифровка защищенного паролем LibreOffice Calc .ods (забытый пароль)

4

Когда-то я создал файл .ods с Libreoffice Calc, который я защитил паролем. Я забыл пароль, и в результате я не могу получить доступ к файлу. Есть ли способ обхода или восстановления пароля, например. как root использует терминал?

    
задан Kyle 28.11.2012 в 18:43
источник

4 ответа

7

Открытие файла .ods с правами root по-прежнему не позволит вам получить содержимое файла, поскольку они зашифрованы, что выходит за рамки полномочий пользователя root.

MiJyn предложил использовать взломщики паролей для OpenOffice.org. Эти программы часто используют атаки грубой силы или словаря. Я бы не использовал такие программы с закрытым исходным кодом из случайных, ненадежных источников, как это было предложено. Сканеры вирусов не находят все, поэтому вы все равно не можете доверять исполняемому файлу, потому что ClamAV ничего не обнаруживает.

Поскольку LibreOffice является открытым исходным кодом, я бы начал с изучения того, какое шифрование он использует. Ubuntu 12.04 поставляется с LibreOffice 3.5. Согласно Ссылка , он использует 256-битный AES-шифр.

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

Так как файлы .ods являются только Zip-файлами, я пытался зашифровать файл и извлечь содержимое. Как и ожидалось, содержимое документа зашифровано и неотличимо от случайных байтов. Конечно, существуют некоторые незашифрованные метаданные, один из которых - META-INF/manifest.xml . В моем примере зашифрованная электронная таблица содержала следующие заинтересованные части:

<manifest:encryption-data manifest:checksum-type="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0#sha256-1k" manifest:checksum="48KzqP1PL7Wu/YTtHzlN0buJeUmigGT247dZ6Wrj10s=">
<manifest:algorithm manifest:algorithm-name="http://www.w3.org/2001/04/xmlenc#aes256-cbc" manifest:initialisation-vector="82mrg52Yifh1iIye5W0xuw=="/>
<manifest:key-derivation manifest:key-derivation-name="PBKDF2" manifest:key-size="32" manifest:iteration-count="1024" manifest:salt="hUZrwD1BWkODYVklZiScqA=="/>
<manifest:start-key-generation manifest:start-key-generation-name="http://www.w3.org/2000/09/xmldsig#sha256" manifest:key-size="32"/>

Из этого можно узнать, что LibreOffice использует алгоритм хэширования SHA256 для проверки целостности данных, AES256 в Режим CBC . 32-байтный пароль получен из вашего пароля с использованием PBKDF2 с 1024 итерациями.

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

Как и в большинстве продуктов для шифрования, восстановление пароля почти невозможно. Я предлагаю:

  • Если файл просто хранит в течение недели, просто запустите и не тратьте время на дешифрование файла.
  • Попробуйте вспомнить пароль, если вы хотите расшифровать файл.
  • Если вы собираетесь использовать программу грубой силы, не используйте случайную программу, найденную в Интернете. Попробуйте найти программу с открытым исходным кодом. Если вы найдете программы с закрытым исходным кодом, загрузите их из надежного источника и убедитесь, что у него есть хорошие отзывы (из нескольких источников), поместите его через Ссылка и снова проверьте, что программа, которую вы пытаетесь, является законной.
ответ дан Lekensteyn 28.11.2012 в 20:49
5

Ответ был основан на разговоре, который я имел с OP в комментариях

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

Итак, если вы все еще заинтересованы в этом, вот еще один недостаток этой техники (yay!): это занимает очень много времени, потому что нужно найти все возможные комбинации паролей. Вот лишь некоторые очень простые математические данные, если для проверки пароля требуется 1 миллисекунда, а пароль - ASCII-кодированный, длиной 5 символов, то для его поиска потребуется 56 недель. Если у вас очень быстрый компьютер (может быть, даже суперкомпьютер), для каждого пароля потребуется около 5-10 микросекунд, поэтому для его расчета потребуется 1,5-3 дня. Если вы используете графическую карту вместо своего процессора, она сможет вычислять пароли намного быстрее, поскольку графические процессоры обычно имеют около 300-2000 ядер.

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

Теперь, когда у вас есть краткое введение в взлома паролей, некоторые быстрые поисковые запросы приводят меня на этот сайт: Ссылка . Еще не пробовал, но он должен работать, если у вас установлен WINE. Я сделал небольшую проверку на вирусы с помощью ClamAV, и это кажется нормально.

EDIT . Похоже, что он поддерживает только пароли Writer. Вот та же самая программа, которая, по-видимому, спроектирована для паролей Calc. Заметьте, что я тоже этого не пробовал, но у меня есть вирус, который тоже добавил в ClamAV: Ссылка

EDIT 2 : Lekensteyn отправил way лучший способ сделать это, чем использовать ненадежный .exe-файл. Я настоятельно рекомендую использовать его путь!

РЕДАКТИРОВАТЬ 3 . Основываясь на методе Lekensteyn, я написал небольшой инструмент, который его реализовал: Ссылка . Это, конечно, open-source (просто нажмите «код» из ссылки для загрузки). Все это просто интерфейс ODFJlib от Ringlord (тот же человек, который сделал документ Lekensteyn опубликованным). Обратите внимание, что этот инструмент написан на Java и довольно медленный (243 ключа / сек на моем компьютере). Однако я попытаюсь оптимизировать его для нескольких ядер.

Пример использования:

java -jar ./ooopassrecover.jar file.ods
    
ответ дан MiJyn 28.11.2012 в 19:20
1

Я нашел очень простой способ разблокировать лист (open office 1.0), но должен быть похож на другие версии.

  • Изменить расширение .ods на .zip
  • разархивируйте файл в папке.
  • Найдите файл document.xml или content.xml, который он содержит.
  • Отредактируйте этот XML-файл, чтобы найти что-то вроде этого:

    table:name="*****" table:style-name="ta1" table:protected="true" table:protection-key="wUuUTMMJGNiaa2+yng4cFP6WeFg="

удалить два элемента:

 table:protected="true" table:protection-key="wUuUTMMJGNiaa2+yng4cFP6WeFg="

скопировать измененный document.xml в файл zip-файла оригинала верните файл .ods для этого файла. Это сделано: ваш лист больше не защищен!

    
ответ дан user380090 18.02.2015 в 16:24
0

Я нашел более простой способ разблокировать электронную таблицу, модифицирующую предложение @ user380090:

  • Изменить расширение .ods на .zip
  • Извлеките .zip-файл в папку с помощью диспетчера архивов
  • Откройте файл content.xml с помощью Writer
  • Найти: таблица: protected="true"
  • Измените « true » на « false »
  • Сохраните файл content.xml и закройте Writer
  • Из файлов перетащите ранее измененный файл content.xml в файл .zip
  • Изменить расширение с .zip на .ods

Документ теперь незащищен, и вы можете его отредактировать.

    
ответ дан Spiv 25.01.2017 в 16:38