【问题标题】:problem with unlocking user-password secured PDF解锁用户密码保护的 PDF 的问题
【发布时间】:2022-01-28 15:25:58
【问题描述】:

我有一个受密码保护的 PDF 文件 - 我知道正确的用户密码。问题是,我只能在 Windows Adob​​e Reader 上打开它。其他所有 PDF 查看器(还有用于删除密码的 Linux 命令提示工具)都会返回密码错误的信息。

潜在原因:密码过长(30 个字符)并且包含非拉丁(波兰语)字符(如 łó ę ć ź ą)。我尝试了 Unicode 到 ASCII 转换器之类的东西,但它不起作用。

有人知道为什么它只在 Acrobat 中有效吗?我只想在 Linux 上打开这个文档。最好是删除密码。

编辑:文档由 128 位 AES 保护,Acrobat 提到“可以由 Acrobat 7.0 或更高版本打开”。不允许打印、复印等。

EDIT2:感谢您对 cme​​ts 的帮助,我尝试了 SumatraPDF,它可以工作 - 但只允许将其打印到不可搜索的图像 pdf 中。 我检查了它是基于 mupdf 引擎的,但是 Linux 上的 mupdf 无法处理这个文件 - 它崩溃了。 苏门答腊有开源,有人知道如何编辑它以正常方式打印成PDF吗?

【问题讨论】:

  • 根据旧(PDF 2.0 之前)加密算法的规范:“密码字符串是从主机系统代码页字符(或系统脚本)通过首先将字符串转换为 PDFDocEncoding 生成的。如果输入是 Unicode,首先转换为代码页编码,然后再转换为 PDFDocEncoding 以实现向后兼容性。”因此,平台依赖性和不明确的转换是设计的一部分。所以不要在那些旧算法的密码中使用非 ASCII 字符。 PDF 2.0 中的 AES-256 改变了游戏规则。
  • 我刚刚尝试了 Windows Foxit 和 SumatraPDF - 我非常震惊,SumatraPDF 可以正常工作。我和我的大学朋友尝试了很多 PDF 阅读器,但没有一个可以工作。
  • 在这种情况下,您知道什么工具还可以处理密码并将其打印为可搜索文本吗?

标签: pdf passwords adobe-reader


【解决方案1】:

SumatraPDF 使用 MuPDF 作为多种格式的引擎,例如 ePub HTML,当然还有 PDF。它可以将已知密码存储(而不是删除)作为哈希值,因此无需继续输入以供日常阅读或将 cmets 添加到 PDF。

因此,如果按照@mkl 的建议,在本地 PC 上使用带有本地字符的密码可能在 SumatraPDF 中工作,它应该在更基本的查看器 MuPDF-GL 中工作。剧透,当然我可以删除我自己加密的简单 9 个字符 challenge.pdf(8 个顺序字母字符是一个已知的半随机序列)以在 MuPDF 中保存为 unprotected.pdf,但还没有人破解它:-)

然而 MuPDF-GL 隐藏在表面之下还有许多更强大的能力。

使用 MuPDF-GL,您应该能够在提示输入密码时打开文件。然后按 A 启动注释器(您不需要添加任何内容),只需更改另存为设置。

因此,在这种情况下,如果出现错误,它将修复任何需要重新保存的问题,但首先关闭增量并将加密设置为无。不能保证这适用于所有情况,但值得一试。

如果 mupdf-gl 在 linux 上不适合你,你可以试试

MuToolmutool draw -p password -o unprotected.pdf protected.pdf

OR qpdf 也可以在输入正确密码的情况下重建具有不同限制的 PDF。

qpdf --password=myverylongstring!"^$% --decrypt protected.pdf unprotected.pdf

或者如果密码可能导致命令行 UTF 问题,请将其保存为文本文件的第一行并使用

qpdf -password-file=password.txt --decrypt protected.pdf unprotected.pdf

最后如果您想在 Linux 上打印 pdf 文件,您有两种可能的选择,因为阅读器 OLD Evince 在 Windows 32 位上为我工作,但对于 64 位,我更喜欢夜间尖端 Okular。

【讨论】:

  • 感谢您的回答,但我之前尝试过 mupdf。它适用于linux,我可以打开其他PDF文件。但是对于我的文件,在打开和写入正确密码时出现此错误:` X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 12 (X_ConfigureWindow) Value in failed request: 0x0 失败请求的序列号:678 输出流中的当前序列号:679 ` 然后 mupdf 崩溃。正如我所提到的,这个密码包含 30 个字符,其中许多是非拉丁字母
猜你喜欢
  • 2015-08-11
  • 1970-01-01
  • 2012-02-03
  • 2011-12-23
  • 2020-12-21
  • 1970-01-01
  • 1970-01-01
  • 2016-09-30
  • 1970-01-01
相关资源
最近更新 更多