缘起:
最近要辅导NOIP,光用“一本通”实在有点乏力,于是忍痛花了一百多大洋从网上买了一套课件。内容确实不错,物有所值,只可惜是只读的,有修改密码。每张幻灯片上都有别人的LOGO,而且不能微调与整合,这就有点不爽了。那么,能不能干掉这个密码呢?
尝试:
我们先尝试着,处理单个文件。
以前做PPTX图片批量下载的时候,曾经了解到,PPTX的本质其实是个压缩包,直接改扩展名为ZIP就能解压。百度PPTX密码破解,发现修改权限密码,其实只要找到压缩包中的“presentation.xml”并删除其中的“modifyVerifier”节点,再重新压缩后改回PPTX扩展名就可以。
没错就是这么简单,所以微软当年这个功能显然是防君子不防小人的一个功能,可以仅仅是怕误修改吧。
随便给个Step传送门:
https://jingyan.baidu.com/article/ed2a5d1f3c93dc09f6be17e6.html
思路:
一个文件的处理,就是这么简单。那么,如果批量呢,比如一章中的所有PPTX,总不可能一个个的手工处理吧?哈哈,是不是想起一句话,“人生苦短,我用Python”?如何批量,我们来梳理一下:
遍历文件夹,把里面所有PPTX读到一个列表中。
循环访问列表,重命名所有的PPTX文件为ZIP。
解压每个ZIP,按上述规则删除加密信息。
压缩修改后的目录,拷贝ZIP文件到新位置。
批量将ZIP改回为PPTX文件。
用到的知识点:
文件遍历访问与命名,主要用的OS库的walk方法。
压缩与解压缩,Python居然自带了一个zipfile库,很强大。
批量重命名文件扩展名,用os.listdir即可。
字符串的定位与删除,用replace替换,文件流中write重新写入。
实现:
本部分用到的知识点,比较简单,而且参考资料很多。所以文件夹压缩、批量重命名,基本是采用网上固有代码生成函数。其它的,核心就是写好循环遍历即可:
扩展:
本文代码经测试,只适用修改密码的破解。如果要破解打开密码,还是要通过暴力破解,你需要一个好一点的数据字典。当然,密码破解更多的是应急,或者防止自己忘记。对于原创有独特价值的文档,还是建议付费支持。
结语
其实高中学Python编程,真的不是要死抠语法,大搞算法。主要还是在遇到问题,特别是批量处理类的难题时,能有个清晰的思路,并利用Python丰富的库和互联网资源快速的搭建框架,实现我们的目标。
唯此,编程语言才真正成为一个辅助工具;也唯此,编程思维,才成为一种核心素养。大抵,这就是新课改的方向,和选用Python的初衷吧。
附:代码百度云盘链接
https://pan.baidu.com/s/1mU94W1PkpYm1r2Vp-8R5sg 密码:wchw
更多python基础入门学习,可以购买Python基础课程:
领取专属 10元无门槛券
私享最新 技术干货