- 内容提要
- 作者简介
- 技术评审者简介
- 致谢
- 译者序 会编程的人不一样
- 前言
- 本书的读者对象
- 编码规范
- 什么是编程
- 本书简介
- 下载和安装 Python
- 启动 IDLE
- 如何寻求帮助
- 聪明地提出编程问题
- 小结
- 第一部分 Python 编程基础
- 第1章 Python 基础
- 第2章 控制流
- 第3章 函数
- 第4章 列表
- 第5章 字典和结构化数据
- 第6章 字符串操作
- 第二部分 自动化任务
- 第7章 模式匹配与正则表达式
- 第8章 读写文件
- 第9章 组织文件
- 第10章 调试
- 第11章 从 Web 抓取信息
- 第12章 处理 Excel 电子表格
- 第13章 处理 PDF 和 Word 文档
- 第14章 处理 CSV 文件和 JSON 数据
- 第15章 保持时间、计划任务和启动程序
- 第16章 发送电子邮件和短信
- 第17章 操作图像
- 第18章 用 GUI 自动化控制键盘和鼠标
- 附录A 安装第三方模块
- 附录B 运行程序
- 附录C 习题答案
13.6 实践项目
作为实践,编程完成下列任务。
13.6.1 PDF偏执狂
利用第9章的os.walk()函数编写一个脚本,遍历文件夹中的所有PDF(包含子文件夹),用命令行提供的口令对这些PDF加密。用原来的文件名加上_encrypted.pdf后缀,保存每个加密的PDF。在删除原来的文件之前,尝试用一个程序读取并解密该文件,确保它被正确的加密。
然后编写一个程序,找到文件夹中所有加密的PDF文件(包括它的子文件夹),利用提供的口令,创建PDF的解密拷贝。如果口令不对,程序应该打印一条消息,并继续处理下一个PDF文件。
13.6.2 定制邀请函,保存为Word文档
假设你有一个客人名单的文本文件。这个guests.txt文件每行有一个名字,像下面这样:
Prof. Plum Miss Scarlet Col. Mustard Al Sweigart RoboCop
写一个程序,生成定制邀请函的Word文档,如图13-11所示。
图13-11 定制的邀请函脚本生成的Word文档
因为python-docx只能使用Word文档中已经存在的样式,所以你必须先将这些样式添加到一个空白Word文件中,然后用python-docx打开该文件。在生成的Word文档中,每份邀请函应该占据一页,所以在每份邀请函的最后一段调用add_break(),添加分页符。这样,你只需要打开一份Word文档,就能打印所有的邀请函。
你可以从http://nostarch.com/automatestuff/下载示例guests.txt文件。
13.6.3 暴力PDF口令破解程序
假定有一个加密的PDF文件,你忘记了口令,但记得它是一个英语单词。尝试猜测遗忘的口令是很无聊的任务。作为替代,你可以写一个程序,尝试用所有可能的英语单词来解密这个PDF文件,直到找到有效的口令。这称为暴力口令攻击。从http://nostarch.com/automatestuff/下载文本文件dictionary.txt。这个字典文件包含44000多个英语单词,每个单词占一行。
利用第8章学过的文件读取技巧来读取这个文件,创建一个单词字符串的列表。然后循环遍历这个列表中的每个单词,将它传递给decrypt()方法,如果这个方法返回整数 0,口令就是错的,程序应该继续尝试下一个口令。如果decrypt()返回1,程序就应该终止循环,打印出破解的口令。你应该尝试每个单词的大小写形式(在我的笔记本上,遍历来自字典文件的所有88000个大小写单词,只要几分钟时间。这就是不应该使用简单英语单词作为口令的原因)。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论