解密密码保护LibreOffice Calc .ods文件(忘记密码)

前段时间我用Libreoffice Calc创建了一个.ods文件,我用密码保护了它。 我现在忘记了密码,因此我无法访问该文件。 有没有办法绕过或恢复密码,例如使用终端root?

以root身份打开.ods文件仍然不允许您检索文件内容,因为这些内容是加密的,超出了root用户的权限。

MiJyn建议在OpenOffice.org上使用密码破解程序。 这些程序通常使用暴力破解或基于字典的攻击。 我建议不要使用来自随机,不受信任来源的闭源程序。 病毒扫描程序找不到所有内容,因此您仍然无法信任可执行文件,因为ClamAV没有检测到任何内容。

由于LibreOffice是开源的,我首先要查看它使用的是哪种加密方式。 Ubuntu 12.04随附LibreOffice 3.5。 根据http://wiki.documentfoundation.org/ReleaseNotes/3.5#Different_Encryption_Algorithm ,它使用256位AES密码。

这个邮件列表post也清楚地表明密码是使用PBKDF2导出的,这意味着如果有足够高的迭代次数,强制执行会慢得多。

由于.ods文件只是Zip文件,我试图加密文件并提取内容。 正如所料,文档的内容是加密的,与随机字节无法区分。 当然存在一些未加密的元数据,其中一个是META-INF/manifest.xml 。 我的示例加密电子表格包含以下感兴趣的部分:

     

由此我们可以了解到LibreOffice使用SHA256哈希算法来检查数据完整性,在CBC模式下使用 AES256 。 32字节密码是使用PBKDF2从1024次迭代的密码派生的。

这里有一篇关于解密ODF文件的文章 ,这些文件包含了很好的信息来制作你自己的粗暴程序,但可能不适合普通用户。

与大多数加密产品一样,密码恢复几乎是不可能的。 我建议:

  • 如果文件只包含一周的簿记,请重新开始,不要浪费时间解密文件。
  • 如果要解密文件,请尝试调用密码。
  • 如果您打算使用暴力程序,请不要使用互联网上的随机程序。 尝试找一个开源程序。 如果您只找到闭源程序,请从可靠的来源下载它并确保它有良好的评论(来自多个来源),通过https://www.virustotal.com并再次检查您正在尝试的程序是合法的。

答案是基于我在评论中与OP的对话

没有办法绕过密码,因为如果可能的话,它将完全失去拥有受密码保护的文件的目的(唯一不想使用密码的人是by-passer是拥有密码的人) 。 唯一的选择是实际使用密码破解程序。 如果仅当您是文档的所有者或者向您发送文档的人授予您破解密码的权限时,此方法才是合法的。 但是,当然,现在没有人关心在法律的右边:P

所以,如果你仍然有兴趣这样做,这是这种技术的另一个缺点(耶!):它需要很长时间,因为它必须找到每一个可能的密码组合。 这里只是一些非常基本的数学,如果尝试密码需要1毫秒,密码是ASCII编码的,5个字符长,那么需要56周才能找到它。 如果您的计算机速度非常快(甚至可能是超级计算机),则每个密码大约需要5-10微秒,因此计算它需要1.5-3天。 如果使用显卡而不是CPU,它将能够更快地计算密码,因为GPU通常具有大约300-2000个内核。

另一个特定于OpenOffice密码的问题是,OpenOffice具有非常好的加密方法,使得查找密码的时间更长,更难。 这意味着只有蛮力攻击 (最慢的攻击)才有效!

现在你已经简要介绍了密码破解,一些快速的谷歌搜索引导我到这个网站: http : //www.filebuzz.com/fileinfo/37067/OpenOffice_Writer_Password_Recovery.html 。 尚未尝试过,但如果安装了WINE,它应该可以使用。 我用ClamAV做了一个小病毒检查,看起来还可以。

编辑 :似乎只支持Writer密码。 这是相同的程序,显然是为Calc密码设计的。 请注意,我也没有尝试过那个,但是我的病毒也与ClamAV有关: http : //www.sharewareconnection.com/download-openoffice-calc-password-recovery-from-sharecon.html

编辑2 :Lekensteyn发布了一种比使用不受信任的.exe文件更好的方法。 我强烈建议改用他的方式!

编辑3 :基于Lekensteyn发布的方法,我写了一个实现它的小工具,位于: https : //github.com/MiJyn/ooo-pass-recover/downloads 。 当然,它是开源的(只需点击下载链接中的“代码”)。 它只是Ringlord的ODFJlib接口(Lekensteyn发布文件的同一个人)。 请注意,此工具是用Java编写的,速度相当慢(我的计算机上的速度为243键/秒)。 我会尽量优化多核。

用法示例:

 java -jar ./ooopassrecover.jar file.ods 

我找到了一种非常简单的方法来解锁工作表(开放式办公室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=" 

复制原始zip文件中的修改后的document.xml ,将.ods扩展名返回给该文件已完成:您的工作表不再受到保护!

我找到了一种更简单的方法来解锁修改@ user380090给出的建议的电子表格:

  • 将扩展名.ods更改为.zip
  • 使用Archive Manager提取文件夹中的.zip文件
  • 使用Writer打开: content.xml文件
  • 发现: table:protected =“true”
  • 将“ true ”更改为“ false
  • 保存content.xml文件并关闭Writer
  • 从“文件”中,将以前修改的content.xml文件拖放到.zip文件中
  • 将扩展名从.zip更改为.ods

该文档现在不受保护,您可以编辑它。