广为认知的方法是,运行一段猜测密码的VBA(https://uknowit.uwgb.edu/page.php?id=28850),几十秒就可以找到,因为密码Hash很短所以密码有多个。但是Excel2013里密码Hash很长所以密码几乎是唯一的,依靠这个VBA肯定找不到密码。
我虽然手头没有Excel 2013,但是推测,这个worksheet保护,其实没有对文件内容加密,仅仅是做了些标记,说不让修改某些制定的cell而已,应该是去掉了标记就可以自由修改了的。在Office 2010上实验了,的确没问题,只要把文件按照下面的方法修改一下就好了:
- 把xlsx文件后缀改成zip,解压。 (如果是xls,那就先保存成xlsx格式)
解压后的目录结构大致是:
顶层目录 _res目录 docProps目录 xl目录 [Content_Types].xml ....
- 在解压后的xl/worksheets目录里,找到sheet1.xml, sheet2.xml...,打开
- 把里面的<sheetProtect.....>这句给删除
<sheetProtection objects="1" password="????" scenarios="1" sheet="1"/>
- 把顶层目录的东西压缩,但是不包括顶层目录。把压缩有的文件后缀名改成xlsx,这就是可以自由修改的xls文件了。
估计这个方法应该在Excel2013里可以使用的。
这个方法就和去除pdf的复制打印保护的方法差不多,不需要密码,只需要用qpdf工具修改一下就好了。
qpdf --decrypt old_pdf_file new_pdf_file
时间: 2024-11-06 04:23:07