PDF的加密解密,解密後隨便怎麼玩

摘要:
首先,我們要清楚PDF的加密類型和方式:PDF的密碼常規分爲兩類:user password 和 owner password,

user password(用戶密碼):我們要打開/查看/獲取任何該PDF的信息所需要的密碼,也就是任何viewer和編輯軟件打開此PDF需要輸入的,等於一把外部鎖,沒有鑰匙,you can get nothing
owner password(權限密碼):一般是針對PDF內容的加密,分級別,一般的設置是可以print,但是不能edit,copy等,是PDF所有者保證版權的手段

對於一個同時擁有兩種密碼的PDF,我們可以做的有限(如果知道PDF的加密方式是早期的40bit的RC4算法,那麼現在一些暴力破解軟件可以強行破解,但如果是現代的128bit或256bit的加密,暴力破解的可能性很小)

我們要討論的是沒有user password,但是有owner password的PDF的處理方式,而且我們遇到的絕大多是加密的PDF都是這種加密方式,他的潛臺詞是:你可以看,但你不能改。那種設置了雙重密碼的PDF,是不讓看,更不讓改,所以流傳出來的機率很小,好了,廢話少說,言歸正傳:

怎麼處理:批量解密
使用工具:java 的 PDF 處理模塊itext(題外:之前此功能作爲itext的一個bug存在,5.3.5以後被修復)
關鍵代碼:
1.自定義解密類:

class MyReader extends PdfReader {
    public MyReader(String filename) throws IOException {
        super(filename);
    }
    public void decryptOnPurpose() {
        encrypted = false;
    }
}

2.關鍵參數設置,實例化類:

PdfReader.unethicalreading = true;
MyReader reader = new MyReader(src);

3.解密成功,另存爲就好了

PdfStamper s = new PdfStamper(outputstream, reader);
s.close();
reader.close();

加密就好說了,隨便找軟件,插件都能加上,不在此囉嗦

打完收工,沒想到PDF的加密這麼容易被繞過去(注意並不是真正意義上的破解到了密碼)
至於解密後怎麼玩,請參看樓主早期日誌

發佈了45 篇原創文章 · 獲贊 40 · 訪問量 1001萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章