- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PDF加密解内密幕三彻底破解加密PDF文件
1 一般的口令验证
我想很多人在学习某个技术或者其它之前总会想想如果换作自己来设计会怎么办,比如说PDF文件的解密,我就会想,文件内容是经过加密的,那么必须要有一个密钥才能解密文件的内容。而这一定和要求输入的口令是有关。那么这之间有什么关系呢?
当然有很多种可能,在很久以前,一些系统竟然在后台用明文保存用户口令和口令,这样用户在登录系统的时候就直接比较用户名密码是否一致,当然这些用户名和密码全部掌握在管理员的手中;到我们比较注重系统安全的时候,用口令通过HASH函数生成HASH序列保存在数据库里,这样就比较安全,因为HASH函数是单向的,没有输入的口令的话只有用暴力破解的方法了。如果你的口令设置的比较简单也是很容易被破解的。因此现在一些对安全性比较高的网站都会要求你不要将口令设置的过于简单。
????那么解密PDF的时候口令是如何来验证的呢?
????是不是由我们的口令生成的HASH序列保存在PDF文件里,然后在打开的时候由你输入的口令再生成一个HASH序列,两者比对,同则由你输入的口令会同PDF文件中的其它内容生成密钥,然后解密?这只是我们的设想,那么PDF文件解密是不是真的这样做的呢?
图1 假想的PDF解密
下面我们来寻找问题的答案。
2 PDF文件口令验证
在上几篇文章中我们也知道了PDF有两组口令,一为Owner Password, 另外一组称为User Password,因为Owner Password是用来控制权限的,在文章中我们把它称为权限口令;而User Password是用来打开文件的,称为打开口令。
如果一个文件同时设置了打开口令和权限口令,那么在打开PDF文件的时候只要输入任何一个口令就可以打开该加密的PDF文件了。
而当我们输入口令的时候,一般处理PDF的软件会先判断是否权限口令,如果是,那么开放所有的操作权限,用户就可以没有任何限制地使用该PDF文件;如果不是权限口令,那么会判断输入的口令是否为打开口令,如果验证成功,那么PDF文件就解密,就可以看到文件的内容,但是此时文件的其它操作是受限制的。
算法3.6和算法3.7分别描述了对用户口令和权限口令的验证。如果你尚未读过前一篇文章,那么如果你感兴趣的话可以去看一看,然后再回过来看本文。
2.1算法 3.6 验证用户口令
1利用用户提供的口令执行算法3.4(R2)或算法3.5(R3或更高)。
2 如果步骤1的输出和PDF文件中加密字典中的U值一致(R2),或者前16位一致(R3或更高),因为版本3或更高的情况后十六位是任意补足的。那么该输入的用户口令正确,并且可以按照算法3.1对文件内容进行解密。
2.2 算法3.7 验证主口令
1.????根据算法3.3的1到4步,由提供的口令串计算得到一个密钥。
2.????(仅版本2)用步骤1得到的密钥解密加密字典中的O条目值。
((版本3或更高)做20次:用前一次的输出作为下一次的输入进行解密;密钥是由第1步产生的原始密钥的单个字节依次和循环数和进行XOR(异或)运算得到的(循环数从19到0)。
下面为该过程的伪码:
Test[32] = 加密字典对象中条目O的32位字符串值;
temKey = Test[32];
keyLength = length/8;
for (i = 19; i = 0; --i)
{
for (j = 0; j keyLength; ++j)
{
????? tmpKey[j] = fileKey[j] ^ i;
}
rc4InitKey(tmpKey, keyLength, fState);
fx = fy = 0;
for (j = 0; j 32; ++j)
{
????? test[j] = rc4DecryptByte(fState, fx, fy, test[j]);
}
}
3 步骤2产生的结果假定为打开口令(user password),用算法6来验证该用户口令。如果正确,那么提供的口令就为权限口令(owner password)。
3 可能的破解方法
对加密的PDF文件进行破解我想是很多人最感兴趣的,那么在此也来讨论一下对口令加密的PDF文件是否可以被破解?有那些方法可以来破解口令加密的PDF文件?
???????对于第一个问题的答案是显而易见的,没有那种加密方法是绝对安全的,绝对不能被破解的,我们很多时候所说的不能破解是指破解的时间相当长,长到对你破解的内容没有意义的时候。下面我们来看看有哪几种常规的破解加密PDF文件的方法。
3.1 常规暴力破解
这是对任何需要口令验证或解密的系统或加密文件都有效的方法,这个方法最简单,就是通过穷举计算HASH序列来比对。当该口令或密码设置的非常简单的时候,该方法是有非常有效的。
破解过程按照算法3.6和算法3.7
文档评论(0)