ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 26157|回复: 48

[求助] 解除工作表密码

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2016-9-23 14:39 | 显示全部楼层 |阅读模式

  1. Sub RemoveShProtect()
  2. Dim i1 As Integer, i2 As Integer, i3 As Integer
  3. Dim i4 As Integer, i5 As Integer, i6 As Integer
  4. Dim i7 As Integer, i8 As Integer, i9 As Integer
  5. Dim i10 As Integer, i11 As Integer, i12 As Integer
  6. Dim t As String
  7. On Error Resume Next
  8. If ActiveSheet.ProtectContents = False Then
  9. MsgBox "该工作表没有保护密码!"
  10. Exit Sub
  11. End If
  12. t = Timer
  13. For i1 = 65 To 66: For i2 = 65 To 66: For i3 = 65 To 66
  14. For i4 = 65 To 66: For i5 = 65 To 66: For i6 = 65 To 66
  15. For i7 = 65 To 66: For i8 = 65 To 66: For i9 = 65 To 66
  16. For i10 = 65 To 66: For i11 = 65 To 66: For i12 = 32 To 126
  17. ActiveSheet.Unprotect Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) _
  18. & Chr(i6) & Chr(i7) & Chr(i8) & Chr(i9) & Chr(i10) & Chr(i11) & Chr(i12)
  19. If ActiveSheet.ProtectContents = False Then
  20. MsgBox "解除工作表保护!用时" & Format(Timer - t, "0.00") & "秒"
  21. Exit Sub
  22. End If
  23. Next: Next: Next: Next: Next: Next
  24. Next: Next: Next: Next: Next: Next
  25. End Sub
复制代码
解除工作表密码时用那么多的FOR,i1到i11是65到66,i12是32到126,对所有工作簿都管用吗?有什么原理?在代码中用Chr函数来返回指定字符码所代表的字符,至于i1到i11是65到66,说实话我也有点奇怪,字符集中应该是32到126,65是A,66是B。请知道的朋友解释一下

工作表的保护与取消保护.zip

13.77 KB, 下载次数: 852

TA的精华主题

TA的得分主题

发表于 2016-9-23 15:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
是的,上面的程序可以破解工作表保護密碼。
它可以破解密碼,並非是找出原本的密碼。
你可以這樣測試,設置工作表密碼=123,然後程序的msgbox內容改為:
MsgBox "解除工作表保护!用时" & Format(Timer - t, "0.00") & "秒,密碼:" & _
Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(i7) & Chr(i8) & Chr(i9) & Chr(i10) & Chr(i11) & Chr(i12)
看看它破解的密碼是什麽?
結果有沒有很驚訝?無非就是類似ABABABABABAx的樣子...
你還可以這樣測試,設置工作表密碼=test,然後再解除工作表保護,不過解除時用zzyw來解除,
是不是也能解除密碼?
這是爲什麽呢?工作表保護時,會根據保護密碼生成一個hash值,解除密碼時會先將輸入的解除密碼也生成一個hash值,然後比較兩個hash值...
到這裡,應該差不多明白了吧?
是的,根據工作表的加密方式,很多不同的密碼可以生成相同的hash值!
上面test和zzyw生成就是同一個hash值。
程序破解出來的密碼也是和原密碼生成同一個hash值另一個密碼。
就是這個理...

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-9-24 07:36 | 显示全部楼层
解0人 发表于 2016-9-23 15:43
是的,上面的程序可以破解工作表保護密碼。
它可以破解密碼,並非是找出原本的密碼。
你可以這樣測試,設 ...

谢谢精彩解说,看来解密是技术活。

TA的精华主题

TA的得分主题

发表于 2016-12-15 19:37 | 显示全部楼层
哪用这么麻烦,立即窗口中运行下面两句:
sheet1.protect allowfiltering:=true
sheet1.Unprotect
OK,工作表保护已经破解了,excel2007和2013下均测试通过。。。

评分

6

查看全部评分

TA的精华主题

TA的得分主题

发表于 2016-12-15 19:52 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-12-16 10:59 | 显示全部楼层
硅谷少年 发表于 2016-12-15 19:37
哪用这么麻烦,立即窗口中运行下面两句:
sheet1.protect allowfiltering:=true
sheet1.Unprotect

WOW,怎么回事,真的能破解了。

TA的精华主题

TA的得分主题

发表于 2016-12-19 16:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
tospo 发表于 2016-12-16 10:59
WOW,怎么回事,真的能破解了。

只遇到过一次这个方法不能破解的,但我没找到原因(可能是里面工作表太多,30多个工作表,密码还有4种,不同的工作表密码还不同),猜想可能是2016做的文件。

TA的精华主题

TA的得分主题

发表于 2016-12-19 17:40 | 显示全部楼层
硅谷少年 发表于 2016-12-15 19:37
哪用这么麻烦,立即窗口中运行下面两句:
sheet1.protect allowfiltering:=true
sheet1.Unprotect

mark 留个记号 。。

TA的精华主题

TA的得分主题

发表于 2016-12-19 18:00 | 显示全部楼层
tospo 发表于 2016-12-16 10:59
WOW,怎么回事,真的能破解了。

所以所谓的加密只能骗骗不懂的人>>>>>>>>>

TA的精华主题

TA的得分主题

发表于 2017-9-7 23:10 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-24 10:28 , Processed in 0.043665 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表