一年前我开始写回忆录,写了 12 万字,用 LibreOffice 3 writer 密码保护。我休息了好几个月,打算几天前继续写。
然而..
我忘记了密码。这真是一场灾难。我告诉了妻子密码(以防万一!)但她也忘记了。
这是我的一个相当明显的问题——有没有办法不用密码访问回忆录?
我不懂技术,经过一番搜索,我发现了一种可能的方法,即使用 xmlcopyeditor 关闭密码,从而访问文档。但这行不通——xmlcopyeditor 似乎无法打开。
回忆录共有三份副本,一份在闪存驱动器上,一份在 CD-ROM 上,一份在笔记本电脑中,均受相同的密码保护。
确实很沮丧。
答案1
真的很抱歉,Libreoffice 在使用密码保护时使用 AES 加密,而 AES 没有已知的缺陷。唯一的方法是提供正确的密码,否则您无法绕过它。如果您的密码少于 7 个字符,您可以尝试暴力破解它。如果密码大于 6 个字符,则可能需要数年时间才能破解它。
答案2
这是从另一个答案复制粘贴的(链接在这里)。所有荣誉均归于问题的原作者。
您必须使用暴力破解软件才能打开它。这些程序通常使用暴力破解或基于字典的攻击。我不会像建议的那样使用来自随机、不受信任来源的闭源程序。病毒扫描程序无法找到所有内容,因此您仍然不能信任可执行文件,因为 ClamAV 什么都没检测到。
由于 LibreOffice 是开源的,我首先要查找它使用的加密类型。Ubuntu 12.04 附带 LibreOffice 3.5。根据http://wiki.documentfoundation.org/ReleaseNotes/3.5#Different_Encryption_Algorithm,它使用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 文件的论文这里,这些包含了制作您自己的暴力破解器的好信息,但可能不适合普通用户。
与大多数加密产品一样,密码恢复几乎是不可能的。我建议:
- 如果文件仅包含一周的簿记,则只需重新开始,不要浪费时间解密文件。
- 如果您想解密文件,请尝试回忆起密码。
- 如果你要使用暴力破解程序,不要使用在互联网上找到的随机程序。尝试找到一个开源程序。如果你只找到闭源程序,请从可靠的来源下载它,并确保它有良好的评价(来自多个来源),然后让它通过https://www.virustotal.com并再次检查您尝试的程序是否合法。