第1关:zip压缩文件暴力破解
任务描述
本关任务:编写一个能暴力破解加密Zip文件的小程序。
相关知识
对于一个zip格式的压缩包,默认密码为6位,是数字和字母的组合。暴力破解的基本思路是,调用Python中的zipfile模块的extractall函数,尝试各种数字、字母组合,成功解压时返回相应的压缩密码。评测系统会判断返回的结果是否正确,正确即返回解压成功。
同学们可以思考下,如何破解密码是数字、字母、以及特殊字符的组合。
提示:itertools模块,使用迭代器可以防止爆破的位数太多而爆内存。
编程要求
有一个加密的Zip格式的压缩文件src/step1/evil.zip,它的密码未知。
现在已知密码是数字012345与字母asd的排列组合,请在右侧编辑器中的Try函数中,尝试破解这个文件的密码,并将其密码返回。
评测系统会尝试使用这个密码解压src/step1/evil.zip,如果解压成功,则会输出解压成功,否则会输出解压失败。
测试说明
使用密码成功解压时输出的解压成功即为通关条件。
第2关:PDF取证
任务描述
本关任务:编写一个能读取PDF元数据的小程序。
相关知识
曾经有一次案件,当时黑客组织发布了ANONOPS_The_Press_Release这份稿件,希腊警方在稿件的元信息中发现了作者Alex Tapanaris的名字,然后以此为证据将其逮捕,也就是所谓的电子取证。基本思路是,调用Python中的PyPDF2模块的getDocumentInfo函数,提取PDF文件中的元数据。
PyPDF2
PyPDF2是作为PDF工具包构建的python库,它能够:
提取文档信息(标题,作者,…)
按页拆分文档
逐页合并文档
裁剪页面
合并多个页面到一个页
对pdf文档进行加密解密
等等
注意,这个模块的名字对大小写是敏感的,所以,确保y是小写的,其他字母都是大写的
PdfFileReader
构造方法:
PyPDF2.PdfFileReader(stream,strict = True,warndest = None,overwriteWarnings = True)
初始化一个 PdfFileReader 对象,此操作可能需要一些时间,因为 PDF 流的交叉引用表被读入内存。
参数 | 含义 |
---|---|
stream | File 对象或支持与 File 对象类似的标准读取和查找方法的对象,也可以是表示 PDF 文件路径的字符串。 |
strict(bool) | 确定是否应该警告用户所用的问题,也导致一些可纠正的问题是致命的,默认是 True |
warndest | 记录警告的目标(默认是 sys.stderr) |
overwriteWarnings(bool)| | 确定是否 warnings.py 用自定义实现覆盖 Python |