security - Excel VBA 代码的密码保护如何工作?

标签 security vba excel password-protection

此问题与 my previous one 相关.

您能否解释一下或提供一个链接来说明 Excel VBA 代码密码保护在 2007 年之前的版本中实际上是如何工作的? Excel 2007和以前的版本在密码保护方面有什么区别?

Excel 的密码保护是否真的对代码进行了加密?如果代码被加密,Excel 如何执行代码?

最后,Excel密码清除软件如何工作?

最佳答案

人们普遍认为 VBA 安全性相当差。 VBA 代码未编译,源代码可在 Excel 文件中找到。密码保护很容易被绕过。

据我了解,Office 2003 及更早版本将 vba 代码保存为工作表(或文档/演示文稿)的二进制格式的一部分。当您启动 VBA IDE 时,它只是查看 VBA 代码是否已受到“保护”。这并不意味着它已加密 - 只是无法查看。理论上,这可以阻止您的用户干预您的代码,但硬核编码人员将能够绕过密码。

因此 Excel 不需要解密任何代码 - 它只需要阻止人们查看它。

Office 2007 确实加密宏(不要问我如何加密或使用什么算法)。这可能是必要的,因为 XLSM 文件(或任何 Office 2007 文件)只是具有不同扩展名的 zip 文件。任何人都可以进入这些文件并进行浏览。

要回答您的最后一个问题 - 密码删除如何在旧版 Office 格式上发挥作用,我并不完全确定。不同的供应商可能会以不同的方式解决这个问题,但我怀疑最常见的方法是对密码进行暴力攻击,直到找到匹配项。

Excel VBProject 对象具有 Protection 属性,该属性将根据宏的保护状态返回不同的枚举(例如,如果宏 protected ,则为 vbext_pp_locked)。如果您继续以编程方式尝试密码,直到 vbext_pp_locked 评估为 false,您就会找到密码。

关于security - Excel VBA 代码的密码保护如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/259897/

相关文章:

security - 我应该为哪些 Content-Type 设置与安全相关的 HTTP 响应 header ?

c# - LDAP 查询中的 LDAP 注入(inject) c#

vba - VBA中重复值的问题

excel - 是否有一个 Excel 函数将多个值相加,每个值乘以不同的查找值?

android - iOS、Android、Blackberry 等,哪个移动操作系统对黑客最友好?

database - 为什么我不应该让外人访问我的数据库?

vba - 循环遍历 Excel 工作表

python - 如何在 Outlook (2010) 全局地址列表中搜索名称?

excel - 从关闭的 Excel 文件导入数据

c# - 为什么创建数据透视表(Excel 互操作)的尝试失败?