這個頁面的程式碼沒跑起來。

直接從資料夾裡開啟 index.html,瀏覽器會攔下 JavaScript 模組,於是你選好一份 PDF之後,頁面不會有任何反應。改用 http 把這個資料夾提供出去:

powershell -ExecutionPolicy Bypass -File serve.ps1

然後開啟 http://localhost:8080/。

PDF 解鎖 把密碼和那些限制一起去掉

大多數「加了密」的 PDF 其實根本不用密碼。這一頁會先告訴你手上是哪一種,再動它。

語言: 繁體中文
檢視原始碼
你的文件不會上傳。這裡根本沒有伺服器。

你選的那份文件,開啟、解密、寫回,全都在這臺機器的記憶體裡完成,用的是從這個地址發來的程式碼。這裡根本沒有能做上傳的東西,這一頁的另一頭也沒有伺服器可以接收。檔案不會離開這個分頁,你打進去的密碼也不會。

即時檢查: 檢查中…

離線: 檢查中…

別聽我們說。開啟開發者工具,盯著網路面板,然後解鎖點什麼。沒有任何一條請求帶著文件、密碼或者檔名。或者乾脆斷網,照樣能解。

1 選那份被保護的 PDF

2 看看它上面有什麼

一份 PDF 可以用兩種看起來很像、其實完全不同的方式鎖上。一種是開啟密碼,沒有密碼誰都過不去。另一種是一組限制,不許列印、不許複製、不許編輯,而這個檔案本身誰都打得開,那把鎖是你的閱讀器同意去遵守的一個請求,不是任何密碼學上的東西。這裡會說這份文件帶的是兩種裡的哪一種。

還沒有選檔案。文件到了這裡之後,這句話會說它是兩種裡的哪一種、那層加密值多少,以及到底需不需要密碼。

3 把保護去掉

順便把檔案記著的來歷也去掉 鎖上它的那個程式的名字、它是什麼時候做的、最後一次編輯是什麼時候、XMP 包,以及排版軟體留下的那些私有塊。這跟去掉保護是兩件事,你不主動要就不做,另外,不管做不做,你文件上的其他一切都原樣透過。

以 Markdown 檢視

怎麼去掉 PDF 的密碼或者那些限制

  1. 選那份被保護的 PDF。一次一份文件。瀏覽器直接從你的硬碟上把它讀進來,而第一件發生的事,是拿一個空密碼去試它,而這正是大多數被保護的檔案能開啟的原因,因為它們大多數根本就沒被關上過。
  2. 看這一頁找到了什麼。它會說這個檔案帶的是兩種保護裡的哪一種、用的是什麼方案、那個方案在今天值多少,並且列出這份文件請閱讀器遵守的每一條限制:列印、複製、編輯、註解、填表單、調整頁序,甚至朗讀給看不見的人聽。
  3. 輸密碼,但只在它開口要的時候。密碼框只在空密碼沒能開啟這份文件的時候才出現,而那也是密碼唯一有用的時候。文件的兩個密碼哪個都行,開啟它的那個,或者解除限制的許可權密碼。這裡什麼都不猜,你打進去的東西也留在這個分頁裡。
  4. 去掉它,然後讀那句寫著「已核對」的話。文件會用它自己的金鑰解密,再寫回去,出來的檔案裡連加密字典都沒有。接著做好的檔案會在這裡被重新開啟一次,不給密碼,用的是一個碰到加密文件就拒絕的讀取器。要是它打不開,或者頁數跟原來對不上,你不會拿到下載,只會拿到一句說明。

說得更細的版本

How to unlock a PDF, and which kind of locked it is A PDF that will not print and a PDF that will not open are two different problems with one name. What each of them actually is, why one comes off in a click and the other cannot come off at all, and how to tell which you have.

常見問題

我需要密碼嗎?

通常不需要,而且選好檔案之後一秒之內這一頁就會告訴你。大多數「被保護」的 PDF,銀行對帳單、工資單、匯出的報表、辦公軟體那個「限制編輯」框做出來的東西,都是誰都打得開的,它們只是帶著一份請閱讀器不要做的事情清單。這些一鍵就能去掉,不用密碼。真正在你開啟時問你要密碼的,是另一種,那一種你得有密碼。

我沒有密碼的 PDF,它能開啟嗎?

不能,而且它根本不去試。這個工具裡沒有字典、沒有詞表,也沒有任何暴力搜尋,你可以自己讀 src/crypt.js,裡面連一個迴圈都沒有。對最老的那批 40 位金鑰的文件來說,搜尋確實是奏效的,正因為如此,這條拒絕才必須寫下來,而不是留給人去假定。如果你把自己文件的密碼弄丟了,這一頁幫不了你,任何一個誠實的頁面也幫不了。

兩個密碼有什麼區別?

一份 PDF 裡有兩個位置。開啟密碼是閱讀器向你要的那個,沒有它檔案就打不開。許可權密碼解除的是那些限制,列印、複製、編輯,而一份文件常常只有許可權密碼、根本沒有開啟密碼,這就是它誰都打得開、卻還是不肯列印的原因。這個工具兩個都收,並且會告訴你它究竟是靠哪一個進去的。

去掉這些限制合法嗎?

這取決於是哪份文件、你在哪裡,而且這是一個關於你對這個檔案有什麼權利的問題,不是關於技術的問題。能明說的是這個格式本身是怎麼回事:那些限制是文件裡面的一個欄位,閱讀器按約定去遵守它,它不是一道密碼學的牆,而 Adobe 從它被引入的那天起就是這麼寫的。這個工具是給你有權使用的文件用的,你自己那份打不出來的對帳單、你花錢買了卻複製不了的報告、你需要重排頁序的掃描檔。如果這個檔案本來就不該歸你用,這裡的任何東西都改變不了這一點。

它支援哪些加密方式?

公開發布過的每一種:40 位和 128 位的 RC4(修訂 2 和 3)、AES-128(修訂 4),以及 AES-256 的兩種形態,2008 年那個後來被撤回的版本和當前 PDF 2.0 的版本(修訂 5 和 6)。不支援的是基於證書的加密,那種情況下金鑰屬於一張智慧卡或者一個金鑰庫而不是一個密碼,另外還有 Adobe 那個唯一沒有公開的變體。這兩種都會被拒絕,並且說明它們分別是什麼,而不是含糊地失敗。

做完之後文件看上去會不一樣嗎?

不會。什麼都不會被重新渲染、重新編碼或者重排:每一頁的繪製指令、每一個嵌入字型、每一張圖片,都原樣複製過去。文字還能選,掃描檔還是原來的解析度,什麼都不會移位。檔案可能會小一點,因為一次重寫會把早先編輯留在裡面、已經被取代的舊物件丟掉。

帶簽名的文件會怎麼樣?

它的簽名會失效,而且沒有辦法繞過去。簽名覆蓋的是它當初籤的那個檔案的確切位元組,所以任何改動,任何程式做的,包括當初籤它的那個程式,都會讓它失效。這正是簽名的意義所在。這個工具寫的是一個新檔案,發現原件帶簽名時會在結果裡說明。把你的原件留著:那一份仍然是簽過名的。

我的文件或者密碼會被上傳到什麼地方嗎?

不會。檔案是你自己的瀏覽器在你自己的硬體上讀取、解密、寫出的,密碼進的是一段跑在這個分頁裡的金鑰推導。這個工具沒有伺服器那一端,頁面的 Content-Security-Policy 列出了它可以聯絡的每一個地址,其中沒有一個屬於本站。最簡單的驗證辦法,是把網線拔掉,照樣用這一頁。

我怎麼知道保護真的沒了?

因為這個工具會在你的機器上核對,並且把結果給你看。檔案寫好之後,它會被交給本站其他 PDF 工具用的同一個讀取器,一個碰到加密文件就直接拒絕的讀取器,而它必須在不給密碼的情況下開啟,並且頁數跟原來一樣。要是過不了,這次執行就報告為失敗,什麼都不會給你下載。你事後也可以自己驗:用任何一個閱讀器開啟它,去看文件屬性,那裡每一項許可權現在都應該寫著「允許」。

有大小限制嗎?要錢嗎?

工具裡沒有寫死任何限制。限制是你自己的機器:文件在處理的時候是放在記憶體裡的,幾百 MB 的量,一臺筆記本吃得下,再往上就會吃力。它是免費的,不註冊、不登入,也沒有試用期。本站帶廣告,那是養活它的東西;廣告拿不到任何關於你文件的內容。

斷網能用嗎?

能。把頁面載入一次,然後斷開網路,它照樣能用。這也是證明什麼都沒被上傳的最簡單的辦法:一個把你的文件發出去解鎖的工具,你一拔網線它就停了。