3秒钟,用python破解加密PDF|附工具地址
文中将介绍如果利用开源工具、python代码等秒破加密的pdf文件。
过程分析
因为pdf文件加密的密码是随机的,而且密码不长。首先,我们需要指导pdf的加密方式。
pdfid.py可以查看pdf文件的加密方式:
pdf-parser.py可以让我们了解更多信息:
加密信息在obj 26:
我们可以得出结论使用的标准加密器。这种加密方法用的密钥是40bit的。
QPDF是一款用于确定pdf文件机密的方式。
QPDF的输出是invalid password,这说明pdf是用user 密码加密的。
作者写过很多关闭解密pdf文件的blog,但是使用的方法大多数是暴力破解,文章中作者用一种新的工具hashcat来破解密码。
下面是作者从pdf文件中提取到的hash值:
这个格式是比较适合 John the Ripper,因为如果是hashcat呢,就只需要hash(field 2),而不需要其他域。
下面就提取field 2的内容:
可以把输出保存在“encryption_test – CONFIDENTIAL.hash”中。
然后就可以用hashcat工具了,这里用的命令是:
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
使用的参数有:
- –potfile-path=encryption_test.pot : dedicated pot 文件是默认的
- -m 10400 : 用于破解40-bit PDF加密方式
- -a 3 : 暴力破解
- ?a?a?a?a?a?a : 假设密码是6位数字字母字符
- -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
- Java操作数据库Spring(2)
- 解决SSH连接linux中文显示乱码问题
- 设计模式——类图以及类与类之间的关系
- sysdba登录报错insufficient privileges的原因分析(r7笔记第64天)
- JDBC基础入门(1)
- LeetCode——Add Two Numbers
- python 中numpy基本方法总结可以类推tensorflow
- python基础知识——函数
- tensorflow之tf.placeholder 与 tf.Variable区别对比
- 11g备库搭建碰到自己给自己埋的坑(r7笔记第63天)
- JDBC基础入门(2)
- 11g备库无法开启ADG的原因分析 (r7笔记第62天)
- JDBC基础入门(3)
- Python多元线性回归-sklearn.linear_model,并对其预测结果评估
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Usual*** CMS 8.0代码审计
- 由一条like语句引发的SQL注入新玩法
- 《黑神话:悟空》B站弹幕、知乎回答分析
- 12岁小读者使用Python暴力破解Wi-Fi密码
- 深度学习入门Fast.ai 2.0上线!自带中文字幕,所有笔记、资源全部免费!
- 七夕节脱单“神助攻”!AI教你写情话
- Python初学者请注意!别这样直接运行python命令,否则电脑等于“裸奔”
- 一篇文章构建你的 Node.js 知识体系
- MySQL:The CHAR and VARCHAR Types
- 更新一个10年有效期的 Kubernetes 证书
- 哇,ElasticSearch多字段权重排序居然可以这么玩
- Python 自动化,Appium 凭什么使用 UiAutomator2?
- 我用几行 Python 自动化脚本完美解决掉了小姐姐的微信焦虑感
- 【设计模式】692- TypeScript 设计模式之发布-订阅模式
- 强网杯-upload