Descriptografar um arquivo LibreOffice Calc .ods protegido por senha (senha esquecida)

5

Algum tempo atrás eu criei um arquivo .ods com o LibreOffice Calc que eu protegi por senha. Esqueci a senha e, como resultado, não consigo acessar o arquivo. Existe alguma maneira de contornar ou recuperar a senha, por exemplo, como root usando o terminal?

    
por Kyle 28.11.2012 / 19:43

4 respostas

8

Abrir o arquivo .ods como root ainda não permitirá que você recupere o conteúdo do arquivo porque ele está criptografado, o que está além da capacidade de um usuário root.

MiJyn sugeriu o uso de crackers de senha para o OpenOffice.org. Esses programas geralmente usam ataques de força bruta ou de dicionário. Eu não usaria esses programas de código fechado de fontes aleatórias e não confiáveis, como sugerido. Scanners de vírus não encontram tudo, então você ainda não pode confiar no executável porque o ClamAV não detecta nada.

Como o LibreOffice é open source, eu começaria procurando o tipo de criptografia que ele usa. Ubuntu 12.04 vem com o LibreOffice 3.5. De acordo com o link , ele usa uma cifra AES de 256 bits.

Esta postagem na lista de discussão também deixa claro que a senha é derivada usando PBKDF2 , o que significa que o forçamento brutal será muito mais lento com uma contagem de iteração alta suficiente.

Como os arquivos .ods são apenas arquivos Zip, tentei criptografar o arquivo e extraí o conteúdo. Como esperado, o conteúdo do documento é criptografado e indistinguível de bytes aleatórios. É claro que existem alguns metadados não criptografados, sendo um deles META-INF/manifest.xml . Meu exemplo de planilha criptografada continha as seguintes partes interessadas:

<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"/>

A partir disso, podemos aprender que o LibreOffice usa um algoritmo de hash SHA256 para verificar a integridade dos dados, AES256 em Modo de CBC . A senha de 32 bytes é derivada de sua senha usando PBKDF2 com 1024 iterações.

Um documento sobre a descriptografia de arquivos ODF está disponível aqui, eles contêm informações interessantes para criar seu próprio bruto -forcer, mas provavelmente não são adequados para o usuário médio.

Assim como a maioria dos produtos de criptografia, a recuperação de senha é quase impossível. Eu sugiro:

  • Se o arquivo contiver apenas a contabilidade por uma semana, basta começar de novo e não perder tempo descriptografando o arquivo.
  • Tente recuperar a senha se você quiser descriptografar o arquivo.
  • Se você for usar um programa de força bruta, não use um programa aleatório encontrado na internet. Tente encontrar um programa de código aberto. Se você encontrar apenas programas de código fechado, baixe-o de uma fonte confiável e garanta que ele tenha boas críticas (de várias fontes), coloque-o no link a> e verifique novamente que o programa que você está tentando é legítimo.
por Lekensteyn 28.11.2012 / 21:49
5

A resposta foi baseada na conversa que tive com o OP nos comentários

Não há como ignorar a senha porque, se fosse possível, ela frustraria completamente o propósito de ter um documento protegido por senha (as únicas pessoas que não gostariam de usar o passante de senha são aquelas que têm a senha). A única opção é realmente usar um cracker de senha. Esse método é legal if e somente se você for o proprietário do documento ou a pessoa que enviou o documento lhe conceder permissão para violar a senha. Mas, é claro, hoje em dia ninguém se importa em estar do lado certo da lei: P

Então, se você ainda está interessado em fazer isso, aqui está outra desvantagem dessa técnica (yay!): Demora muito tempo, porque ela precisa encontrar todas as combinações possíveis de senhas. Apenas algumas contas muito básicas aqui, se você levar 1 milissegundo para tentar uma senha, e a senha for codificada em ASCII, 5 caracteres, então levaria 56 semanas para encontrá-la. Se você tem um computador muito rápido (talvez até mesmo um supercomputador), levaria cerca de 5 a 10 microssegundos por senha, então levaria de 1,5 a 3 dias para calculá-lo. Se você usar uma placa gráfica em vez de sua CPU, ela poderá calcular as senhas muito mais rapidamente, já que as GPUs normalmente têm em torno de 300 a 2000 núcleos.

Outro problema, específico para as senhas do OpenOffice, é que o OpenOffice possui métodos de criptografia muito bons, tornando muito mais difícil e mais fácil encontrar senhas. Isso significa que apenas um ataque de força bruta (o ataque mais lento) funcionará!

Agora que você tem uma breve introdução à quebra de senhas, algumas informações rápidas do Google me levam a este site: link . Ainda não tentei, mas deve funcionar se você tiver o WINE instalado. Eu fiz uma pequena verificação de vírus com o ClamAV e parece ok.

EDITAR : Parece que uma só suporta senhas do Writer. Aqui está o mesmo programa, aparentemente projetado para senhas do Calc. Observe que eu também não tentei isso, mas eu tenho vírus checed aquele com ClamAV também: link

EDIT 2 : Lekensteyn postou uma maneira melhor maneira de fazer isso do que usar um arquivo .exe não confiável. Eu recomendo usar o caminho dele em vez disso!

EDIT 3 : Baseado no método que Lekensteyn postou, eu escrevi uma pequena ferramenta que o implementou, localizada aqui: link . É, claro, open-source (basta clicar em "código" no link de download). Tudo o que é é apenas uma interface para ODFJlib por Ringlord (mesma pessoa que fez o documento Lekensteyn postado). Observe que esta ferramenta está escrita em Java e é bastante lenta (243 chaves / seg no meu computador). Vou tentar otimizá-lo para vários núcleos embora.

Exemplo de uso:

java -jar ./ooopassrecover.jar file.ods
    
por MiJyn 28.11.2012 / 20:20
1

Eu encontrei uma maneira muito simples de desbloquear uma planilha (open office 1.0), mas deve ser semelhante em outras versões.

  • Alterar extensão .ods para .zip
  • descompacte o arquivo em uma pasta.
  • Encontre o arquivo document.xml ou content.xml que ele contém.
  • Edite esse arquivo xml para encontrar algo assim:

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

elimine os dois elementos:

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

copie o document.xml modificado no arquivo zip original devolva a extensão .ods para aquele arquivo. Feito: sua planilha não está mais protegida!

    
por user380090 18.02.2015 / 17:24
0

Encontrei uma maneira mais fácil de desbloquear uma planilha modificando a sugestão dada por @ user380090:

  • Alterar extensão .ods para .zip
  • Extraia o arquivo .zip em uma pasta usando o Gerenciador de arquivos
  • Abra o arquivo: content.xml com o Writer
  • Localizar: table: protected="true"
  • Alterar " true " para " falso "
  • Salve o arquivo content.xml e feche o Writer
  • Em Arquivos, arraste e solte o arquivo content.xml modificado anteriormente no arquivo .zip
  • Alterar extensão de .zip para .ods

O documento agora está desprotegido e você pode editá-lo.

    
por Spiv 25.01.2017 / 17:38