解鎖或加密PDF檔案:Colab PDF Protector / Unlocking or Encrypting PDF Files: Colab PDF Protector
PDF檔案的安全性加密與解除限制通常需要特別的軟體。如果我們只有手機的話,不妨來使用我開發的Colab PDF Protector,用Google Colab的腳本新增或移除PDF的安全性設定吧。
PDF file security encryption and decryption often require specialized software. If you only have a mobile phone, consider using my Colab PDF Protector, a Google Colab script designed to add or remove security settings from PDFs.
PDF的安全性設定 / PDF Security Settings
PDF (Portable Document Format) 檔案的保全設定,主要目的是為了保護檔案內容不被未經授權的存取、編輯或列印。你可以透過設定密碼來限制開啟檔案,或者設定權限密碼來限制使用者複製、列印等操作。這些保護措施可以保護檔案在傳輸和分享時,避免遭受未經授權的取用。
設定 PDF 安全性的方式,通常會區分為「開啟密碼」和「權限密碼」。「開啟密碼」是指當使用者嘗試打開 PDF 檔案時,必須輸入正確的密碼才能檢視內容;而「權限密碼」則是用來限制使用者對檔案的操作,例如是否允許複製文字、列印或編輯。透過這兩層密碼的設定,你可以更精細地控制檔案的授權條款。此外,有些 PDF 軟體還允許你設定數位憑證(digital certificate)來保護檔案,以此確保檔案的來源的可靠程度。
PDF命令列編輯工具:qpdf / PDF command line editing tool: qpdf
PDF安全性管理通常都得仰賴專門的PDF工具,例如Adobe Acrobat Pro或是X-Change PDF Editor。在Linux作業系統裡,我們通常是使用qpdf來處理PDF檔案。qpdf 是一款功能強大的命令列工具和 C++ 函式庫,專門用於對 PDF 檔案進行內容保留的轉換。它不僅可以執行 PDF 檔案的線性化(linearization,也稱為網路最佳化或快速網路檢視),還支援加密和解密 PDF 檔案,這包括了「開啟密碼」和「權限密碼」的設置。
舉例來說,我們可以用以下指令來為PDF加上開啟密碼「qazwsx」:
qpdf --encrypt qazwsx qazwsx 256 -- <input.pdf> <output.pdf>
如果我們要加上權限密碼「qazwsx」,讓PDF禁止列印與複製的話,指令如下:
qpdf --encrypt "" qazwsx 256 -extract=n -modify=none -annotate=n -- <input.pdf> <output.pdf>
當然,qpdf也能夠解除開啟密碼,不過你需要輸入明確的密碼本身,例如「qazwsx」。使用qpdf解除開啟密碼的指令如下:
qpdf --password=qazwsx --decrypt -- <input.pdf> <output.pdf>
qpdf能在多個平台運作,但是這也包括基於Linux作業系統運作的Google Colab。所以我們就可以在Colab安裝並使用qpdf,以此來為PDF檔案加密或解密。
Colab PDF Protector / Colab PDF Protector
我把qpdf包裝成Colab腳本並開發了Colab PDF Protector。你可以上傳待處理的 PDF 檔案、設定密碼、選擇要加密還是解密,這個工具會嘗試增加或移除 PDF 的保護限制,並輸出一個處理後的 PDF 檔案。
必須注意的是,此工具必須要你知道密碼才能使用。它不能拿來做猜測密碼的破解工具喔。
整個操作主要都在Google Colab上進行。這次我們就用手機來操作,看看如何移除PDF檔案上的密碼吧。
範例檔案 / Sample files
這是一個已經加上開啟密碼的PDF檔案。檔案名稱故意加上了中文跟空格,以此確保這種非英文的檔案名稱也能正常處理。
該檔案的相關密碼如下:
- 開啟密碼:open_password
- 編輯密碼:edit_password
就算是在手機中,也得要輸入密碼才能開啟。在Colab腳本中,這兩個皆是對應的預設密碼。
必須注意的是,開啟密碼跟編輯密碼一樣的時候,只有開啟密碼能夠生效。兩者密碼不一樣的時候,才能讓開啟密碼跟編輯密碼都生效。
用手機操作Colab PDF Protector / Use Colab PDF Protector with your mobile phone
接下來就請拿出手機,讓我們在手機上面操作Colab看看吧。
Step 1. 開啟Colab / Open Colab
首先,請用手機開啟Colab PDF Protector。等到上方紅圈的部分出現了RAM跟Disk,就表示Colab已經準備好了,可以進行下一步操作。
Step 2. 上傳待處理的PDF檔案 / Pending PDF Upload
開啟左上角的選單。
開啟「Show file browser」檔案瀏覽器。
等待「sample_data」資料夾出現,表示檔案瀏覽器已經準備好了。接下來請按下上傳按鈕。在手機上選擇你要處理的PDF檔案來上傳。
第一次上傳的時候會出現警告訊息。這個訊息是告訴你,這個檔案只是暫時存放在你帳號底下的虛擬機器裡面,不會長期保存。當然,其他人也無法看到你上傳的檔案。在Colab上的檔案會在不使用後一段時間自動刪除,處理完之後請記得把它下載你的電腦保存喔。確認後按「OK」繼續。
確認你要處理的檔案已經上傳之後,按下「X」關閉選單。
Step 3. 設定密碼與動作 / Set Passwords and Action
回到Colab筆記本。接下來我們要設定 OPEN_PASSWORD 開啟密碼跟 EDIT_PASSWORD 編輯密碼,然後將 PDF_ACTION 處理動作設為「Decrypt」解密。
Step 4. 執行腳本 / Run Scripts
準備好之後,開啟選單。
依序選擇「Runtime」執行階段跟「Run all」執行所有指令。
第一次執行的時候會出現警告訊息。因為這是我在GitHub上的筆記本,可能會有不安全的腳本。你可以確認下面程式碼的內容,如果沒有問題,則按下「Run anyway」繼續執行。
如果看到筆記本下方出現了「All PDFs have been processed. Check the /content/output directory.」,那就表示已經執行完成了。如果發生錯誤,上方會出現錯誤訊息的內容。舉例來說,密碼錯誤訊息如下:
qpdf: /content/o_lock.pdf: invalid password
Step 5. 下載處理完成的PDF檔案 / Download the Processed PDF File
接下來我們要來下載處理完成的檔案。請按左上角的選單。
開啟「Show file browser」檔案瀏覽器。
在「output」底下可以找到處理完的PDF檔案。如果沒有出現的話,表示執行過程發生了錯誤。選擇你要下載的檔案,按右邊的選單圖示。
按「Download」下載。
這樣下載的PDF檔案就沒有安全性限制,可以直接開啟了。
結語 / Conclusion
有了Colab,我們就算用手機也能為PDF檔案加密跟解密,真的很感謝Google推出了這麼棒的服務。
不過必須注意的是,加上編輯限制PDF檔案,在電腦裡雖然不能複製或列印,但是用Android的Xodo PDF閱讀器卻還是能夠照常複製跟加上註解。這可能是Android APP的特殊功能吧?總之,編輯限制可能沒有PDF宣稱的來得可靠就是了。
如果要提高大家複製或編輯的門檻,不妨可以試試看我之前介紹過的ScanSim PDF。他可以將PDF檔案轉換成以圖片構成的PDF,使其無法被直接選取複製。雖然最後仍可以用OCR識別文字的內容,不過至少還是提升一點防護效果吧。
https://queryweb.easycard.com.tw/thsrc_web/
當初會想要做Colab PDF Protector的原因是為了處理高鐵購票證明的PDF檔案。雖然我們可以從高鐵網頁上下載證明,但證明被開啟密碼鎖定。如果要將證明傳送給其他人報帳的話,我們就需要把PDF檔案的開啟密碼移除,不然就得把密碼告訴別人才行,這樣太尷尬了。
希望這個Colab PDF Protector能夠幫助到只有手機卻想要幫PDF檔案加密或解密的你。
這篇關於Colab PDF Protector的介紹就到這裡了。文章最後要來問大家的是:你是怎麼幫PDF加密的呢?
- 1. 使用軟體幫PDF檔案加上開啟密碼或編輯密碼。
- 2. 將PDF檔案用帶有密碼的方式壓縮,例如7-zip。
- 3. 印出來再掃描,這樣就不能直接選取複製了。
- 4. 不給人看,這就是物理加密。(但可能會被檢察官搜出來!)
- 5. 其他:歡迎在下面留言,說說你的看法吧!