如何优雅地干掉ppt的密码


最近收到了一个上面发下来的PPT文件需要学习内容,在打开的时候觉得PPT的模板很不错,想要收拾收拾方便后面使用,却发现文件被加了编辑密码,遂在研究后成此文。

被加密的PPT

有时我们收到一些PPT文件时会遇到文件被原作者使用密码进行编辑保护的情况,导致我们无法方便的使用源文件的模板或者修改内容,但是我们又无法获取到原始密码,那么我们就要想办法删除密码。
首先我们打开被加密的PPT发现出现了一个让我们输入密码的弹窗,但是很明显,我们不知道密码。
被加密的PPT
这时候,我们看到弹窗的右下角有一个只读按钮,点进去之后就会顺利的打开PPT的文件进行阅读。但是此时我们可以看见开始菜单栏里的所有按钮都是灰色的,也就是处于被保护状态,无法被编辑。
只读模式打开被加密PPT
那我们该怎么处理呢?

解包PPT

首先,我们需要对PPT有一个认知,那就是PPT的本质是一个压缩包,里面是由许多xml文件记录文件的参数信息组成的。换而言之,PPT文件是可以被压缩软件解压的。
那么事情就会变的很简单,既然PPT本质上是由一堆xml文件组成的,那么加密的密码也必然会被写在这一堆xml文件里,只要找到并删掉那就可以对文件为所欲为了嘿嘿嘿🤠。
于是,我们就可以进行如下的操作来解压出源文件的原始xml:

  1. 将原有的文件 1.pptx (例名)复制一份副本出来,并重命名为 1.zip
    重命名文件之后的文件结构
  2. 右键 1.zip并解压;
    重命名文件之后的文件结构
    解压之后我们就获得了源文件的原始xml。

淦密码!

现在我们已经把原始xml解压出来了,那么我们要怎么找到密码写在哪个文件里呢?很明显,作为一个加密手段,源文件的密码不会作为明文进行存储,所以原密码必然是被加密过的。
现在,我们找到 /ppt/presentation.xml 并打开,这里面存储着我们解压出的ppt的所有原始文件信息,其中也包括加密文件的密码:
presentation.xml
但是对着这么一大坨xml,眼睛都看花了,鬼知道啥写的啥啊!
很明显,开发者也不是傻子,根据开发原则,文件中的变量名需要尽可能和功能匹配,那么我们只需要找一下类似于password``Verify的字段就好了。经过搜索我们找到了<p:modifyVerifier .../>这个字段,很明显,这个字段写着的就是源文件的加密验证部分了。我们直接把这个字段删掉保存文件即可。
presentation.xml

完工!

现在,密码已经被删除了,那我们要如何把删掉密码的文件重新变回PPT呢?非常简单:

  1. 把文件夹重新压缩为 1.zip;
  2. 重命名文件为 1.pptx
    打开文件就会发现已经可以编辑啦!
    淦完密码之后

总结

在这次的问题中,我们需要注意到以下几点:

  1. PPT的本质是一个压缩包
  2. 密码验证是文件的一部分,必然会存在于源文件的配置中

此外,这一方法理论上也可以扩展到所有的MS Office格式文件中,至于是否可用,需要各位读者自行验证,本人不做过多赘述与测试。

感谢阅读!