前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >看我如何轻松破解加密PDF 转

看我如何轻松破解加密PDF 转

作者头像
双面人
发布2019-04-10 17:05:40
5.8K1
发布2019-04-10 17:05:40
举报
文章被收录于专栏:热爱IT热爱IT

文中将介绍如果利用开源工具、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工具了,这里用的命令是:

代码语言:javascript
复制
  1. hashcat-4.0.0hashcat64.exe --potfile-path=encryption_test.pot -m 10400 -a 3 -i "encryption_test - CONFIDENTIAL.hash" ?a?a?a?a?a?a 

使用的参数有:

代码语言:javascript
复制
  1. –potfile-path=encryption_test.pot : dedicated pot 文件是默认的 
  2. -m 10400 : 用于破解40-bit PDF加密方式 
  3. -a 3 : 暴力破解 
  4. ?a?a?a?a?a?a : 假设密码是6位数字字母字符 
  5. -i : 这个选项意味着密码不一定是6位,也可以是1,2,3,4,5位 

工具破解的结果是:

破解的密码是1806。

然后用QPDF进行验证:

结论

得出的结论是:用40bit加密的4位字符user密码保护的pdf文件,几秒钟就可以用免费的,开源工具破解了。

下面是一些破解加密pdf文件的开源工具:

Pdf工具地址:https://blog.didierstevens.com/programs/pdf-tools/

pdf-parser下载地址:http://didierstevens.com/files/software/pdf-parser_V0_6_8.zip

Makepdf下载地址:http://didierstevens.com/files/software/make-pdf_V0_1_7.zip

pdfid下载地址:http://didierstevens.com/files/software/pdfid_v0_2_2.zip

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018/01/20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档