文中將介紹如果利用開源工具、python代碼等秒破加密的pdf文件。
過程分析
因為pdf文件加密的密碼是隨機的,而且密碼不長。首先,我們需要指導pdf的加密方式。
pdfid.py可以查看pdf文件的加密方式:
pdf-parser.py可以讓我們了解更多信息:
加密信息在obj 26:
我們可以得出結論使用的標準加密器。這種加密方法用的密鑰是40bit的(註:一般會有字典記錄:/length40,但是這裡沒有出現)。
為了保證pdf文件的機密性可以對文件進行加密,而用user密碼加密的pdf文件需要提供加密密碼才可以打開。而owner密碼加密的pdf文件可以不提供密碼打開,但是打開後的pdf文件會有一些限制,比如不能列印等。
QPDF是一款用於確定pdf文件機密的方式。
QPDF的輸出是invalid password,這說明pdf是用user 密碼加密的。
作者寫過很多關閉解密pdf文件的blog,但是使用的方法大多數是暴力破解,文章中作者用一種新的工具hashcat來破解密碼。
首先,需要從pdf文件中提取需要破解的hash值,作者用了pdf2john.py來完成這個操作。註:因為pdf2john.py在運行中會出現一些問題,比如如果/length不指定,就不能產生40bit密鑰的hash值。作者用打過補丁的pdf2john.py文件解決了默認40位密鑰的問題。
下面是作者從pdf文件中提取到的hash值:
這個格式是比較適合 John the Ripper,因為如果是hashcat呢,就只需要hash(field 2),而不需要其他域。
下面就提取field 2的內容(也可以用awk替換csv-cut.py):
可以把輸出保存在「encryption_test – CONFIDENTIAL.hash」中。
然後就可以用hashcat工具了,這裡用的命令是:
hashcat-4.0.0hashcat64.exe--potfile-path=encryption_test.pot-m10400-a3-i"encryption_test-CONFIDENTIAL.hash"?a?a?a?a?a?a
使用的參數有:
–potfile-path=encryption_test.pot:dedicatedpot文件是默認的
-m10400:用於破解40-bitPDF加密方式
-a3:暴力破解
?a?a?a?a?a?a:假設密碼是6位數字字母字符
-i:這個選項意味著密碼不一定是6位,也可以是1,2,3,4,5位
工具破解的結果是:
破解的密碼是1806。
然後用QPDF進行驗證:
結論
得出的結論是:用40bit加密的4位字符user密碼保護的pdf文件,幾秒鐘就可以用免費的,開源工具破解了。