我自己找到一个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. Java NIo 笔记001

    1. Channel Channel接口只提供了两个方法: package java.nio.channels; public interface Channel { public boolean i ...

  2. jProfiler远程连接Linux监控jvm的运行状态

    第一步:下载软件官网地址:https://www.ej-technologies.com/download/jprofiler/files,下载一个linux服务端,一个windows客户端 GUI界 ...

  3. Jmeter+JDK的安装学习笔记

    第一步:首先从jmeter的官网下载jmeter,目前最新版本为3.3,支持的JDK最高为1.8 下载地址: jmeter:http://jmeter.apache.org/download_jmet ...

  4. Notepad++源代码阅读——窗口封装与继承

    引言 近期在看Notepad++的源代码,学习学习Win32 原生API的开发技巧. 本文以Notepad++ 1.0版本的源代码为例讲解如何封装windows窗口,实现面向对象开发,如何通过窗口的继 ...

  5. android 内部存储 安装apk

    在做应用自动更新模块下载apk时遇到了内部存储和sd卡存储两种情况,存在sk卡中存储apk可以正常安装,可是在内部存储中安装apk时出现了parse error的问题. 在网上搜了搜,大致分为两种方案 ...

  6. SmartProg2 Universal, ISP capable programmer

    http://www.elnec.com/products/universal-programmers/smartprog2/ 40 powerful TTL pindrivers provide H ...

  7. C# string byte[] Base64 常用互相转换

    参考: http://www.cnblogs.com/zxx193/p/3605238.html?utm_source=tuicool http://www.cnblogs.com/freeliver ...

  8. HDU2838 Cow Sorting 树状数组 区间求和加逆序数的应用

    这题目意思非常easy,就是给你一个数组,然后让你又一次排好序,排序有要求的,每次仅仅能交换两个元素的位置,交换须要一个代价 就是两个元素之和,问你把数组重小到大排好最少须要多少代价 可能一開始想不到 ...

  9. vim 之cscope的使用

    http://www.mcuos.com/thread-8488-1-1.html http://blog.csdn.net/longerzone/article/details/7789581 ht ...

  10. 怎样用代码方式退出IOS程序

    原文 :iOS Developer Library Technical Q&A QA1561 How do I programmatically quit my iOS application ...