1 选那份被保护的 PDF
2 看看它上面有什么
一份 PDF 可以用两种看着很像、其实完全不同的方式锁上。一种是打开密码,没有密码谁都过不去。另一种是一组限制,不许打印、不许复制、不许编辑,而这个文件本身谁都打得开,那把锁是你的阅读器同意去遵守的一个请求,不是任何密码学上的东西。这里会说这份文档带的是两种里的哪一种。
还没有选文件。文档到了这里之后,这句话会说它是两种里的哪一种、那层加密值多少,以及到底需不需要密码。
- 保护方式
- 这值多少
- 是什么打开的
- 这份文档
3 把保护去掉
顺便把文件记着的来历也去掉 锁上它的那个程序的名字、它是什么时候做的、最后一次编辑是什么时候、XMP 包,以及排版软件留下的那些私有块。这跟去掉保护是两件事,你不主动要就不做,另外,不管做不做,你文档上的其他一切都原样通过。
# PDF 解锁 权限限制与打开密码不同。页面会说明你的 PDF 使用哪种保护。 > 在本地移除 PDF 权限限制,或移除你提供的打开密码。页面会先识别文件的保护类型,再请求密码。不上传内容,也不猜测密码。 This is an interactive browser tool at https://httcup.github.io/tools/unlock-pdf/. Files are processed on the device running that browser. Any deliberate sharing or optional network feature is described on the page. What follows is its written explanation; open the address to use it. ## Your 文档 are **processed in your browser**. No processing upload. 你选的那份文档,打开、解密、写回,全都在这台机器的内存里完成,用的是从这个地址发来的代码。这里根本没有能做上传的东西,这一页的另一头也没有服务器可以接收。文件不会离开这个标签页,你打进去的密码也不会。 - ✗ 不上传 - ✗ 不注册 - ✓ 断网可用 - ✓ 开源 - ✓ 文件留在你的设备上 ## 怎么去掉 PDF 的密码或者那些限制 1. **选那份被保护的 PDF。** 选择一个文档。浏览器从磁盘读取它,首先尝试空密码。对于只限制权限、不要求密码即可阅读的文件,这样便能打开。 2. **看这一页找到了什么。** 它会说这个文件带的是两种保护里的哪一种、用的是什么方案、那个方案在今天值多少,并且列出这份文档请阅读器遵守的每一条限制:打印、复制、编辑、批注、填表单、调整页序,甚至朗读给看不见的人听。 3. **输密码,但只在它开口要的时候。** 密码框只在空密码没能打开这份文档的时候才出现,而那也是密码唯一有用的时候。文档的两个密码哪个都行,打开它的那个,或者解除限制的权限密码。这里什么都不猜,你打进去的东西也留在这个标签页里。 4. **去掉它,然后读那句写着「已核对」的话。** 文档会用它自己的密钥解密,再写回去,出来的文件里连加密字典都没有。接着做好的文件会在这里被重新打开一次,不给密码,用的是一个碰到加密文档就拒绝的读取器。要是它打不开,或者页数跟原来对不上,你不会拿到下载,只会拿到一句说明。 ## The longer version [如何解锁 PDF,先知道是哪种锁](https://httcup.github.io/tools/guides/unlock-a-pdf/): 不能打印与不能打开是两个问题。了解为何一个一键解决,另一个必须有密码,以及如何辨别。 ## Also in the box - [PDF 加密](https://httcup.github.io/tools/protect-pdf/): 把文档锁上,而不是为了锁它先把它交给一个网站。 - [PDF 水印](https://httcup.github.io/tools/watermark-pdf/): 一份写着自己去了哪里的扫描件,就没法悄悄再去别的地方。 - [PDF 涂黑](https://httcup.github.io/tools/redact-pdf/): 字从文件里删掉,然后再搜一遍这个文件来证明。 - [PDF 转 CSV](https://httcup.github.io/tools/pdf-to-csv/): 将检测到的 PDF 文本表格转换成电子表格可打开的行。 ## Questions ### 我需要密码吗? 取决于保护类型。PDF 无需密码即可打开、但限制打印或复制时,可以在这里不输入密码就移除这些权限限制。若需要打开密码,请提供用户密码或所有者密码。页面先尝试空密码,再解释检测到的情况。 ### 我没有密码的 PDF,它能打开吗? 不能。本工具不猜测密码,也不搜索加密密钥。可查看 `src/shared/pdf-crypt.js` 了解它如何处理提供的密码。其他恢复工具可能猜测弱密码或攻击过时加密,但不保证成功;本页面两者都不做。不知道有效密码时,请向发送者索取密码或可访问的副本。 ### 两个密码有什么区别? PDF 可以有两种密码。*用户*密码用于打开文档;*所有者*密码授予全部权限。文档可以设置所有者密码而将用户密码留空,此时能自由打开,但阅读器仍执行打印或复制限制。本工具接受你提供的任一种密码,并说明检测结果。 ### 去掉这些限制合法吗? 这取决于是哪份文档、你在哪里,而且这是一个关于你对这个文件有什么权利的问题,不是关于技术的问题。能明说的是这个格式本身是怎么回事:那些限制是文档里面的一个字段,阅读器按约定去遵守它,它不是一道密码学的墙,而 Adobe 从它被引入的那天起就是这么写的。这个工具是给你有权使用的文档用的,你自己那份打不出来的对账单、你花钱买了却复制不了的报告、你需要重排页序的扫描件。如果这个文件本来就不该归你用,这里的任何东西都改变不了这一点。 ### 它支持哪些加密方式? 公开发布过的每一种:40 位和 128 位的 RC4(修订 2 和 3)、AES-128(修订 4),以及 AES-256 的两种形态,2008 年那个后来被撤回的版本和当前 PDF 2.0 的版本(修订 5 和 6)。不支持的是基于证书的加密,那种情况下密钥属于一张智能卡或者一个密钥库而不是一个密码,另外还有 Adobe 那个唯一没有公开的变体。这两种都会被拒绝,并且说明它们分别是什么,而不是含糊地失败。 ### 做完之后文档看上去会不一样吗? 不会。什么都不会被重新渲染、重新编码或者重排:每一页的绘制指令、每一个嵌入字体、每一张图片,都原样复制过去。文字还能选,扫描件还是原来的分辨率,什么都不会移位。文件可能会小一点,因为一次重写会把早先编辑留在里面、已经被取代的旧对象丢掉。 ### 带签名的文档会怎么样? 它的签名会失效,而且没有办法绕过去。签名覆盖的是它当初签的那个文件的确切字节,所以任何改动,任何程序做的,包括当初签它的那个程序,都会让它失效。这正是签名的意义所在。这个工具写的是一个新文件,发现原件带签名时会在结果里说明。把你的原件留着:那一份仍然是签过名的。 ### 我的文档或者密码会被上传到什么地方吗? 不会。文件是你自己的浏览器在你自己的硬件上读取、解密、写出的,密码进的是一段跑在这个标签页里的密钥推导。这个工具没有服务器那一端,页面的 `Content-Security-Policy` 列出了它可以联系的每一个地址,其中没有一个属于本站。最简单的验证办法,是把网线拔掉,照样用这一页。 ### 我怎么知道保护真的没了? 因为这个工具会在你的机器上核对,并且把结果给你看。文件写好之后,它会被交给本站其他 PDF 工具用的同一个读取器,一个碰到加密文档就直接拒绝的读取器,而它必须在不给密码的情况下打开,并且页数跟原来一样。要是过不了,这次运行就报告为失败,什么都不会给你下载。你事后也可以自己验:用任何一个阅读器打开它,去看文档属性,那里每一项权限现在都应该写着「允许」。 ### 有大小限制吗?要钱吗? 工具里没有写死任何限制。限制是你自己的机器:文档在处理的时候是放在内存里的,几百兆的量,一台笔记本吃得下,再往上就会吃力。它是免费的,不注册、不登录,也没有试用期。本站带广告,那是养活它的东西;广告拿不到任何关于你文档的内容。 ### 断网能用吗? 能。把页面加载一次,然后断开网络,它照样能用。这也是证明什么都没被上传的最简单的办法:一个把你的文档发出去解锁的工具,你一拔网线它就停了。 ## How the privacy claim is verifiable - **页面区分权限限制和打开密码。** 一份 PDF 可以带着两种完全不同的东西。*打开密码*是真的:没有它,这个文件谁都读不了,这里也找不出来。*限制*,不许打印、不许复制、不许编辑,则不是。只带着限制的文件谁都打得开,这就意味着它必须自己装着推导出自身密钥所需要的一切,因为你的阅读器就是这么推出来的。真正拦着阅读器不让打印的,是文档里面的一个权限字段,靠的是行为端正的程序之间的约定。Adobe 从一开始就是这么写的。把它去掉不是在破解什么,只是不再自愿配合。这一页会告诉你手上是两种里的哪一种,并且只在真的需要密码的时候才开口要。 - **它不猜密码,里面也没有哪个循环能拿来猜。** 如果一份文档有打开密码,那要么你给出来,要么它就一直关着。这里没有字典,没有词表,也没有去碰 1990 年代那种真的搜得出来的 40 位密钥。这是一条故意划下的线,不是谁没顾上补的缺口:一个悄悄替你试上几百万个密码的页面,是另一个名字的另一个工具,不是这一个。打开文档的那个密码,和解除限制的权限密码,两个都收,因为不管哪一个,都是别人给你的密码。 - **密码在这里打进去,也在这里用掉。** 你打进去的东西进的是一段跑在这个标签页里的密钥推导,别处都不去。它不会被存下来,不会在两个文件之间被记住,也不会被写进地址栏;页面的 `Content-Security-Policy` 列出了这一页可以联系的每一个地址,其中没有一个属于本站。一个工具问你要文档密码、然后发起一次网络请求,是这类工具能做的最坏的一件事。 - **做好的文件在交给你之前,会在这里重新打开一次。** 在那之前,上面这些话都只是这个工具在给自己判卷。所以那些马上就要变成你下载的字节,会被交给[压缩器](https://httcup.github.io/compress-pdf/)、[合并器](https://httcup.github.io/merge-pdf/)和[涂黑工具](https://httcup.github.io/redact-pdf/)用的同一个读取器,一个碰到加密文档就直接拒绝的读取器,而它必须在不给任何密码的情况下打开,并且页数跟原来一样。一个还带着任何加密的文件是过不了这一关的。过不了,这次运行就报告为失败,也不会有下载。 - **页面本身不会被重新渲染、重新编码,也不会重排。** 变的是文档外面那层加密,不是文档。每一页的绘制指令、每一个嵌入字体、每一张图片,都按原样写回去,所以文字还能选、还能搜,扫描件还是扫描时的分辨率,页面上什么都不会移位。唯一会变的是任何一次重写都会变的东西:早先编辑留下的、已经被取代的旧对象不再带过来,通常还会让文件小一点。 - **数字签名过不了这一关,有签名的时候页面会说。** 签名覆盖的是它当初签的那个文件的确切字节,所以任何重写都会让它失效,这正是签名的用处。这个工具写的是一个新文件,所以你拿回去的那份是没有签名的;发现文件带着签名时,它会在结果里说明。你的原件仍然是那份签过名的。这件事没有绕过去的办法,也没有哪个工具有。 - **它会说那层保护到底值多少。** 一份 1998 年用 40 位 RC4 锁上的文档,和一份去年用 AES-256 锁上的文档,在阅读器里都写着「已加密」,而它们之间差了几十年。这一页会说出方案、密钥长度和修订号,并且直说其中哪些早就被攻破、哪些只是过时、哪一个还是当前的。对一份别人告诉你「很安全」的文件来说,这值得知道,而没有哪个阅读器会摆给你看。 - **用证书锁的文档会被直接拒绝,而不是半开着。** 有些文档是加密给一张证书而不是一个密码的,企业里那种,密钥放在智能卡或者密钥库里。这些会被拒绝,并且说明它们是什么。密码框里打什么都代替不了一把私钥,假装可以只是浪费你的时间。 - **Google 加载了什么,又没拿到什么。** 广告和统计脚本来自 Google。这两个都没有拿到关于你文档的任何东西:不是文件,不是某一页,不是文件名、大小、页数、密码,也不是这个文件被什么保护着。每一行读取、解密或者写出 PDF 的代码都由这个源站发出,并且列在代码仓库里。 - **打赏按钮加载了什么,又没拿到什么。** 页眉上那个「Buy me a coffee」按钮,是由 cdnjs.buymeacoffee.com 的一段脚本画出来的,字体取自 Google Fonts。它就是一个链接,仅此而已:它不上报访问,也拿不到任何关于你或者你文档的东西。你不点它就什么都不会发生,而点下去要去的是别人的网站。 - **断网也能用。** 把网络断掉,这一页上的所有功能照常。这是最简单的一个证明:一个把你的文档发出去解锁的工具,这时候就停了。 **Check it yourself.** None of the above has to be taken on trust. This page is generated from the templates and config in the repository by a build script you can read and run yourself, and the result is committed to the `dist` branch — so you can diff what is served against what a build of the sources produces: https://github.com/httcup/tools The files worth reading first are `config/site.toml` for the Content-Security-Policy,一个密码是怎么变成文档密钥的,以及那里面根本没有循环这件事,看 `src/shared/pdf-crypt.js`;两种密码算法本身在 `src/shared/aes.js` 和 `src/shared/rc4.js`。这几个都够不着网络,旁边负责读和写的部分也一样。
怎么去掉 PDF 的密码或者那些限制
- 选那份被保护的 PDF。选择一个文档。浏览器从磁盘读取它,首先尝试空密码。对于只限制权限、不要求密码即可阅读的文件,这样便能打开。
- 看这一页找到了什么。它会说这个文件带的是两种保护里的哪一种、用的是什么方案、那个方案在今天值多少,并且列出这份文档请阅读器遵守的每一条限制:打印、复制、编辑、批注、填表单、调整页序,甚至朗读给看不见的人听。
- 输密码,但只在它开口要的时候。密码框只在空密码没能打开这份文档的时候才出现,而那也是密码唯一有用的时候。文档的两个密码哪个都行,打开它的那个,或者解除限制的权限密码。这里什么都不猜,你打进去的东西也留在这个标签页里。
- 去掉它,然后读那句写着「已核对」的话。文档会用它自己的密钥解密,再写回去,出来的文件里连加密字典都没有。接着做好的文件会在这里被重新打开一次,不给密码,用的是一个碰到加密文档就拒绝的读取器。要是它打不开,或者页数跟原来对不上,你不会拿到下载,只会拿到一句说明。
更完整的说明
如何解锁 PDF,先知道是哪种锁 不能打印与不能打开是两个问题。了解为何一个一键解决,另一个必须有密码,以及如何辨别。
盒子里还有什么
有疑问?
我需要密码吗?
取决于保护类型。PDF 无需密码即可打开、但限制打印或复制时,可以在这里不输入密码就移除这些权限限制。若需要打开密码,请提供用户密码或所有者密码。页面先尝试空密码,再解释检测到的情况。
我没有密码的 PDF,它能打开吗?
不能。本工具不猜测密码,也不搜索加密密钥。可查看 src/shared/pdf-crypt.js 了解它如何处理提供的密码。其他恢复工具可能猜测弱密码或攻击过时加密,但不保证成功;本页面两者都不做。不知道有效密码时,请向发送者索取密码或可访问的副本。
两个密码有什么区别?
PDF 可以有两种密码。用户密码用于打开文档;所有者密码授予全部权限。文档可以设置所有者密码而将用户密码留空,此时能自由打开,但阅读器仍执行打印或复制限制。本工具接受你提供的任一种密码,并说明检测结果。
去掉这些限制合法吗?
这取决于是哪份文档、你在哪里,而且这是一个关于你对这个文件有什么权利的问题,不是关于技术的问题。能明说的是这个格式本身是怎么回事:那些限制是文档里面的一个字段,阅读器按约定去遵守它,它不是一道密码学的墙,而 Adobe 从它被引入的那天起就是这么写的。这个工具是给你有权使用的文档用的,你自己那份打不出来的对账单、你花钱买了却复制不了的报告、你需要重排页序的扫描件。如果这个文件本来就不该归你用,这里的任何东西都改变不了这一点。
它支持哪些加密方式?
公开发布过的每一种:40 位和 128 位的 RC4(修订 2 和 3)、AES-128(修订 4),以及 AES-256 的两种形态,2008 年那个后来被撤回的版本和当前 PDF 2.0 的版本(修订 5 和 6)。不支持的是基于证书的加密,那种情况下密钥属于一张智能卡或者一个密钥库而不是一个密码,另外还有 Adobe 那个唯一没有公开的变体。这两种都会被拒绝,并且说明它们分别是什么,而不是含糊地失败。
做完之后文档看上去会不一样吗?
不会。什么都不会被重新渲染、重新编码或者重排:每一页的绘制指令、每一个嵌入字体、每一张图片,都原样复制过去。文字还能选,扫描件还是原来的分辨率,什么都不会移位。文件可能会小一点,因为一次重写会把早先编辑留在里面、已经被取代的旧对象丢掉。
带签名的文档会怎么样?
它的签名会失效,而且没有办法绕过去。签名覆盖的是它当初签的那个文件的确切字节,所以任何改动,任何程序做的,包括当初签它的那个程序,都会让它失效。这正是签名的意义所在。这个工具写的是一个新文件,发现原件带签名时会在结果里说明。把你的原件留着:那一份仍然是签过名的。
我的文档或者密码会被上传到什么地方吗?
不会。文件是你自己的浏览器在你自己的硬件上读取、解密、写出的,密码进的是一段跑在这个标签页里的密钥推导。这个工具没有服务器那一端,页面的 Content-Security-Policy 列出了它可以联系的每一个地址,其中没有一个属于本站。最简单的验证办法,是把网线拔掉,照样用这一页。
我怎么知道保护真的没了?
因为这个工具会在你的机器上核对,并且把结果给你看。文件写好之后,它会被交给本站其他 PDF 工具用的同一个读取器,一个碰到加密文档就直接拒绝的读取器,而它必须在不给密码的情况下打开,并且页数跟原来一样。要是过不了,这次运行就报告为失败,什么都不会给你下载。你事后也可以自己验:用任何一个阅读器打开它,去看文档属性,那里每一项权限现在都应该写着「允许」。
有大小限制吗?要钱吗?
工具里没有写死任何限制。限制是你自己的机器:文档在处理的时候是放在内存里的,几百兆的量,一台笔记本吃得下,再往上就会吃力。它是免费的,不注册、不登录,也没有试用期。本站带广告,那是养活它的东西;广告拿不到任何关于你文档的内容。
断网能用吗?
能。把页面加载一次,然后断开网络,它照样能用。这也是证明什么都没被上传的最简单的办法:一个把你的文档发出去解锁的工具,你一拔网线它就停了。