我自己找到一个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. SpringBoot+SpringSecurity+Thymeleaf认证失败返回错误信息踩坑记录

    Spring boot +Spring Security + Thymeleaf认证失败返回错误信息踩坑记录 步入8102年,现在企业开发追求快速,Springboot以多种优秀特性引领潮流,在众多使 ...

  2. bzoj 1176: [Balkan2007]Mokia&&2683: 简单题 -- cdq分治

    2683: 简单题 Time Limit: 50 Sec  Memory Limit: 128 MB Description 你有一个N*N的棋盘,每个格子内有一个整数,初始时的时候全部为0,现在需要 ...

  3. Ajax提交进度显示实例

    概述:ajax提交比较大的文件的时候,我们希望能够看到它上传的进度,代码放下面了. <!DOCTYPE html> <html> <head> <meta c ...

  4. Eclipse批量替换

    情景: 我需要将项目中所有有"上样板"的字样替换为"PCR板",如果寻找单个页面肯定是很麻烦,而且替换很有可能不全,那么该怎么才能完全替换呢? 解决方法: ec ...

  5. JS浮点数运算

    //乘法函数,用来得到精确的乘法结果 //说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显.这个函数返回较为精确的乘法结果. //调用:accMul(arg1,arg2) ...

  6. 比較两个 List 的值是否相等

    public static <T extends Comparable<T>> boolean compare(List<T> a, List<T> b ...

  7. Mantis邮件服务器配置

    1.在apache下的php.ini中修改(这里是以163的邮箱为例子):[mail function];For Win32 only.SMTP = smtp.163.com; //设置邮箱的发送地址 ...

  8. Android之计算两个时间的相差

    参数:   sdate = 2013-07-16 16:14:47 /** * 以友好的方式显示时间 * @param sdate * @return */ public static String ...

  9. SharePoint 2013 升级

    原文地址:https://www.nothingbutsharepoint.com/sites/devwiki/articles/Pages/SharePoint-2013-Upgrade.aspx ...

  10. Git remotes/origin/pr/* 分支清理

    代码在gitHub上托管,每次git pull完后,用git branch -a都可以看到一堆remotes/origin/pr/*分支: 可以通过两种方式去除: 1,修改git的config文件找到 ...