我自己找到一个office的VBA加密方法,然后再去找一个方法来破解密码,好像有点自相矛盾啊。

如果excel文件是xls或xlm格式(如果不是请转化成此种方法),则可使用以下代码:

  1. '移除VBA编码保护
  2. Sub MoveProtect()
  3. Dim FileName As String
  4. FileName = Application.GetOpenFilename("Excel文件(*.xls & *.xla & *.xlsx & *.xlsm),*.xls;*.xla ;*.xlsx ; *.xlsm", , "VBA破解")
  5. If FileName = CStr(False) Then
  6. Exit Sub
  7. Else
  8. VBAPassword FileName, False
  9. End If
  10. End Sub
  11. '设置VBA编码保护
  12. Sub SetProtect()
  13. Dim FileName As String
  14. FileName = Application.GetOpenFilename("Excel文件(*.xls & *.xla & *.xlsx & *.xlsm),*.xls;*.xla ;*.xlsx ; *.xlsm", , "VBA破解")
  15. If FileName = CStr(False) Then
  16. Exit Sub
  17. Else
  18. VBAPassword FileName, True
  19. End If
  20. End Sub
  21. Private Function VBAPassword(FileName As String, Optional Protect As Boolean = False)
  22. If Dir(FileName) = "" Then
  23. Exit Function
  24. Else
  25. FileCopy FileName, FileName & ".bak"
  26. End If
  27.  
  28. Dim GetData As String * 5
  29. Open FileName For Binary As #1
  30. Dim CMGs As Long
  31. Dim DPBo As Long
  32. For i = 1 To LOF(1)
  33. Get #1, i, GetData
  34. If GetData = "CMG=""" Then CMGs = i
  35. If GetData = "[Host" Then DPBo = i - 2: Exit For
  36. Next
  37.  
  38. If CMGs = 0 Then
  39. MsgBox "请先对VBA编码设置一个保护密码...", 32, "提示"
  40. Exit Function
  41. End If
  42.  
  43. If Protect = False Then
  44. Dim St As String * 2
  45. Dim s20 As String * 1
  46.  
  47. '取得一个0D0A十六进制字串
  48. Get #1, CMGs - 2, St
  49.  
  50. '取得一个20十六制字串
  51. Get #1, DPBo + 16, s20
  52.  
  53. '替换加密部份机码
  54. For i = CMGs To DPBo Step 2
  55. Put #1, i, St
  56. Next
  57.  
  58. '加入不配对符号
  59. If (DPBo - CMGs) Mod 2 <> 0 Then
  60. Put #1, DPBo + 1, s20
  61. End If
  62. MsgBox "文件解密成功......", 32, "提示"
  63. Else
  64. Dim MMs As String * 5
  65. MMs = "DPB="""
  66. Put #1, CMGs, MMs
  67. MsgBox "对文件特殊加密成功......", 32, "提示"
  68. End If
  69. Close #1
  70. End Function

破解OfficeVBA密码的方法的更多相关文章

  1. 使用John the ripper工具来尝试破解Linux密码

    这篇文章主要介绍了使用John the ripper工具来尝试破解Linux密码的方法,这款工具可能主要被用来破解系统用户的密码以获得文件操作权限,需要的朋友可以参考下 John有别于Hdra之类的工 ...

  2. Ubuntu破解开机密码

    使用Ubuntu和使用windows系列产品一样,会忘记开机密码.难道我们在忘记开机密码的时候就必须重装系统吗?当然不是了!既然在windows下面我们可以破解开机密码,那么在Ubuntu里面一样可行 ...

  3. Kali Linux下破解WIFI密码挂载usb无线网卡的方法

    Kali Linux下破解WIFI密码挂载usb无线网卡的方法 时间:2014-10-12    来源:服务器之家    投稿:root 首先我要说的是,wifi密码的破解不是想象中的那么容易,目前还 ...

  4. AOPR破解的密码复制的方法

    Advanced Office Password Recovery是一款office密码破解工具,简称AOPR.使用过Advanced Office Password Recovery的用户都知道成功 ...

  5. [信安Presentation]一种基于GPU并行计算的MD5密码解密方法

    -------------------paper--------------------- 一种基于GPU并行计算的MD5密码解密方法 0.abstract1.md5算法概述2.md5安全性分析3.基 ...

  6. [原创]kali linux下破解wifi密码以及局域网渗透

    无线破解是进行无线渗透的第一步.破解无线目前只有两种方法:抓包.跑pin. 破解无线方法一:抓包.我是在kali linux下进行的. 将无线网卡的模式调为监听模式. airmon-ng start ...

  7. 5分钟破解wpa2密码(转)

    首先大家要明白一种数学运算,它叫做哈希算法(hash),这是一种不可逆运算,你不能通过运算结果来求解出原来的未知数是多少,有时我们还需要不同的未知数通过该算法计算后得到的结果不能相同,即你不太可能找到 ...

  8. 如何获得WPA握手包&EWSA破解WPA密码教程[zz]

    获得WPA\WPA2 握手包的方法有很多,下面介绍通过aircrack-ng工具包来载获握手数据包. 1.下载aircrack-ng工具包. 2.终端里输入 sudo airmon-ng start ...

  9. (转)mysql账号权限密码设置方法

    原文:http://www.greensoftcode.net/techntxt/2013410134247568042483 mysql账号权限密码设置方法 我的mysql安装在c:\mysql 一 ...

随机推荐

  1. (Nginx和PHP下)URL重写,TP实现URL重写

    UrlRewrite就是我们通常说的地址重写,用户得到的全部都是经过处理后的URL地址. 优点 一:提高安全性,可以有效的避免一些参数名.ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规则的话 ...

  2. hdu 1514 记忆化搜索

    题意是给4堆(堆的高度小于等于40)有颜色(颜色的种类小于等于20)的物品,你有一个篮子最多能装5件物品,每次从这4堆物品里面任取一件物品放进篮子里,但是取每堆物品时,必须先取上面的物品,才能取下面的 ...

  3. java 中常用的类

    java 中常用的类 Math Math 类,包含用于执行基本数学运算的方法 常用API 取整 l  static double abs(double  a) 获取double 的绝对值 l  sta ...

  4. mutiplemap 总结

    之前只是在C++ Primer里面看过关联容器,可能因为没有实际用过,只是看看,所以导致用的时候并不熟悉: 在这之前,map和set的特性应该要了解,map是关联数组,也就是由键值对组成的,而set只 ...

  5. UVA 10177 Sqr/Rects/Cubes/Boxes?

    Problem J (2/3/4)-D Sqr/Rects/Cubes/Boxes? Input: standard input Output: standard output Time Limit: ...

  6. 使用postMessage进行react和iframe的数据通信.md

    将react的数据传递给iframe 1.首先在父组件(react文件)内引入iframe <iframe style={{border:0,width:"100%",hei ...

  7. 通过maven-war-plugin插件对war包分环境打包

    针对多环节,从源头打包入手,当然这些都可以在运维阶段用脚本进行替换来代替 resources/environment/下有四个环境,local本地.dev开发.test测试.pre预上线.prod生产 ...

  8. PowerDesigner导出表为Excel(转)

    打开脚本运行器Ctrl+Shift+X 导出: '*************************************************************************** ...

  9. Centos6.5下Oracle 11g R2安装过程

    1准备 CentOS-6.5-x86_64-bin-DVD1 linux_11gR2_database_1of2 linux_11gR2_database_2of2 VMware Workstatio ...

  10. Objective-C中的hasPrefix

    Objective-C中的hasPrefix hasPrefix:方法的功能是判断创建的字符串内容是否以某个字符开始,其语法形式如下: -(BOOL)hasPrefix:(NSString*)aStr ...