excel工作薄密码破解/清除

时间:2021-01-10 15:53:18

废话

大家都知道程序员是无所不能的,于是今天有个朋友问我怎么清除excel的密码,刚开始我也不知道怎么搞,于是简单研究了一下excel文件的加密。

简介

目前excel文件加密分两种,一种是打开文件时候的密码,要输入密码才能查看文档;
第二种是工作簿锁定密码,工作簿部分区域是被锁定的,不能进行复制、编辑等修改操作,效果就像图片一样,不过也可以设置为局部只读。

目前,主流的excel文件目前也分两种xls和xlsx(cvs啥的暂时不谈)。
经过简单了解发现,xls存的是以二进制形式存储的字节流,xlsx是压缩包中存放的xml文件,相信做过word excel导入导出或者文档转换的童鞋应该有所了解。
于是我的思路就是从xlsx入手。

开始

首先把xls文件另存为xlsx格式文件,然后解压缩(或者直接用压缩工具软件打开),这时候便可以查看xlsx文件中的各个xml配置文件的信息了,这时,我们还不知道工作簿的加密信息在哪个配置文件中。于是想了个简单地办法:创建一个新的xlsx文件,然后复制一份,对copied文件进行工作簿加密。加密设置尽可能简单,这里只是为了定位加密的配置信息的位置,防止设置过于复杂导致密码隐藏太深。

接下来将新建的文件和加密过得文件分别解压,得到xml文件。
再用文本对比工具对两个解压目录下的相同文件进行对比,最终对比结果发现,除了修改时间的配置文件有区别外,还有一个文件是有区别的,路径为
xxx.xlsx/xl/worksheets/sheet1.xml
这两个文件中有区别的地方为

<sheetProtection password="CF66" sheet="1" objects="1" scenarios="1"/>

excel工作薄密码破解/清除
如图所示,emp由新建的空文件解压,pwd由加密的文件解压,最终比对结果可知加密的文件中比未加密的文件多出了上述配置。

于是我尝试将该行删去并保存,最后将这个删除掉加密信息的文件sheet1.xml替换到原来的xlsx文件中相应位置,这时再用office打开,惊喜的发现工作簿的锁定已经没有了。

结束

虽然事办完了而且也不复杂,高兴至于顺便吐槽一下,这样的简单加密会不会对excel的保护太差了点?以后如果真的需要加密还是尽量不用这种方式了为好。还是用转换工具转为图片比较好,再适当加上水印以降低ocr的识别率。至于pdf,你懂得,这年头除了图片,基本都能转得,而且格式不会差太多,就算差也只是一丁点编码的问题,改改多半能解决问题。