美文网首页
get破解excel加密工作表

get破解excel加密工作表

作者: 一只不想被槌的Young | 来源:发表于2017-05-09 17:48 被阅读57次

    做为一名财务工作者,经常会跟各种表格打交道,有自己做的,有别人提供的,经常会遇到税务局提供税务报送表格。

    但是让人比较尴尬的是,这些表格加密时对局部需要编辑的单元格也进行了加密,这样我们就无法对表上加密单元格进行编辑,必须取得密码。但是很多时候我们根本联系不上表格作者询问到密码,所以这个时候我们就得发扬自力更生、艰苦奋斗的革命品质自己想办法破解表中加密单元格的密码。

    听着是不是很高大上啊!有木有一种好莱坞大片里间谍的感觉呀?

    言归正传,让我们看一下excel被保护表单元格无法编辑的状态。如下图:

    接下来,我们进入在菜单栏点击“插入——模板”进入“”编辑页面。如下图:

    然后我们把破解密码的代码粘贴到编辑栏中,效果如下图:

    粘贴完成后在键盘敲“F5”按钮,开始运算“宏”代码。

    运算完成后会将破解的密码显示出来,如下图所示:

    经过以上的步骤,此Excel的表格的密码已经自动除去,点击“确定”退出即可。

    下面我把破解代码贴出来,大家遇到问题可以自行操作。注:代码来自度娘,大家自行感谢写下这段伟大代码的朋友吧!

    Public Sub AllInternalPasswords()

    ' Breaks worksheet and workbook structure passwords. Bob McCormick

    ' probably originator of base code algorithm modified for coverage

    ' of workbook structure / windows passwords and for multiple passwords

    '

    ' Norman Harker and JE McGimpsey 27-Dec-2002 (Version 1.1)

    ' Modified 2003-Apr-04 by JEM: All msgs to constants, and

    ' eliminate one Exit Sub (Version 1.1.1)

    ' Reveals hashed passwords NOT original passwords

    Const DBLSPACE As String = vbNewLine & vbNewLine

    Const AUTHORS As String = DBLSPACE & vbNewLine & _

    "Adapted from Bob McCormick base code by" & _

    "Norman Harker and JE McGimpsey"

    Const HEADER As String = "AllInternalPasswords User Message"

    Const VERSION As String = DBLSPACE & "Version 1.1.1 2003-Apr-04"

    Const REPBACK As String = DBLSPACE & "Please report failure " & _

    "to the microsoft.public.excel.programming newsgroup."

    Const ALLCLEAR As String = DBLSPACE & "The workbook should " & _

    "now be free of all password protection, so make sure you:" & _

    DBLSPACE & "SAVE IT NOW!" & DBLSPACE & "and also" & _

    DBLSPACE & "BACKUP!, BACKUP!!, BACKUP!!!" & _

    DBLSPACE & "Also, remember that the password was " & _

    "put there for a reason. Don't stuff up crucial formulas " & _

    "or data." & DBLSPACE & "Access and use of some data " & _

    "may be an offense. If in doubt, don't."

    Const MSGNOPWORDS1 As String = "There were no passwords on " & _

    "sheets, or workbook structure or windows." & AUTHORS & VERSION

    Const MSGNOPWORDS2 As String = "There was no protection to " & _

    "workbook structure or windows." & DBLSPACE & _

    "Proceeding to unprotect sheets." & AUTHORS & VERSION

    Const MSGTAKETIME As String = "After pressing OK button this " & _

    "will take some time." & DBLSPACE & "Amount of time " & _

    "depends on how many different passwords, the " & _

    "passwords, and your computer's specification." & DBLSPACE & _

    "Just be patient! Make me a coffee!" & AUTHORS & VERSION

    Const MSGPWORDFOUND1 As String = "You had a Worksheet " & _

    "Structure or Windows Password set." & DBLSPACE & _

    "The password found was: " & DBLSPACE & "$$" & DBLSPACE & _

    "Note it down for potential future use in other workbooks by " & _

    "the same person who set this password." & DBLSPACE & _

    "Now to check and clear other passwords." & AUTHORS & VERSION

    Const MSGPWORDFOUND2 As String = "You had a Worksheet " & _

    "password set." & DBLSPACE & "The password found was: " & _

    DBLSPACE & "$$" & DBLSPACE & "Note it down for potential " & _

    "future use in other workbooks by same person who " & _

    "set this password." & DBLSPACE & "Now to check and clear " & _

    "other passwords." & AUTHORS & VERSION

    Const MSGONLYONE As String = "Only structure / windows " & _

    "protected with the password that was just found." & _

    ALLCLEAR & AUTHORS & VERSION & REPBACK

    Dim w1 As Worksheet, w2 As Worksheet

    Dim i As Integer, j As Integer, k As Integer, l As Integer

    Dim m As Integer, n As Integer, i1 As Integer, i2 As Integer

    Dim i3 As Integer, i4 As Integer, i5 As Integer, i6 As Integer

    Dim PWord1 As String

    Dim ShTag As Boolean, WinTag As Boolean

    Application.ScreenUpdating = False

    With ActiveWorkbook

    WinTag = .ProtectStructure Or .ProtectWindows

    End With

    ShTag = False

    For Each w1 In Worksheets

    ShTag = ShTag Or w1.ProtectContents

    Next w1

    If Not ShTag And Not WinTag Then

    MsgBox MSGNOPWORDS1, vbInformation, HEADER

    Exit Sub

    End If

    MsgBox MSGTAKETIME, vbInformation, HEADER

    If Not WinTag Then

    MsgBox MSGNOPWORDS2, vbInformation, HEADER

    Else

    On Error Resume Next

    Do 'dummy do loop

    For i = 65 To 66: For j = 65 To 66: For k = 65 To 66

    For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66

    For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66

    For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126

    With ActiveWorkbook

    .Unprotect Chr(i) & Chr(j) & Chr(k) & _

    Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _

    Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)

    If .ProtectStructure = False And _

    .ProtectWindows = False Then

    PWord1 = Chr(i) & Chr(j) & Chr(k) & Chr(l) & _

    Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _

    Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)

    MsgBox Application.Substitute(MSGPWORDFOUND1, _

    "$$", PWord1), vbInformation, HEADER

    Exit Do 'Bypass all for...nexts

    End If

    End With

    Next: Next: Next: Next: Next: Next

    Next: Next: Next: Next: Next: Next

    Loop Until True

    On Error GoTo 0

    End If

    If WinTag And Not ShTag Then

    MsgBox MSGONLYONE, vbInformation, HEADER

    Exit Sub

    End If

    On Error Resume Next

    For Each w1 In Worksheets

    'Attempt clearance with PWord1

    w1.Unprotect PWord1

    Next w1

    On Error GoTo 0

    ShTag = False

    For Each w1 In Worksheets

    'Checks for all clear ShTag triggered to 1 if not.

    ShTag = ShTag Or w1.ProtectContents

    Next w1

    If ShTag Then

    For Each w1 In Worksheets

    With w1

    If .ProtectContents Then

    On Error Resume Next

    Do 'Dummy do loop

    For i = 65 To 66: For j = 65 To 66: For k = 65 To 66

    For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66

    For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66

    For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126

    .Unprotect Chr(i) & Chr(j) & Chr(k) & _

    Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _

    Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)

    If Not .ProtectContents Then

    PWord1 = Chr(i) & Chr(j) & Chr(k) & Chr(l) & _

    Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _

    Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)

    MsgBox Application.Substitute(MSGPWORDFOUND2, _

    "$$", PWord1), vbInformation, HEADER

    'leverage finding Pword by trying on other sheets

    For Each w2 In Worksheets

    w2.Unprotect PWord1

    Next w2

    Exit Do 'Bypass all for...nexts

    End If

    Next: Next: Next: Next: Next: Next

    Next: Next: Next: Next: Next: Next

    Loop Until True

    On Error GoTo 0

    End If

    End With

    Next w1

    End If

    MsgBox ALLCLEAR & AUTHORS & VERSION & REPBACK, vbInformation, HEADER

    End Sub

    这就是破解加密excel表格密码的全过程,你学会了吗?

    相关文章

      网友评论

          本文标题:get破解excel加密工作表

          本文链接:https://www.haomeiwen.com/subject/lfwbtxtx.html