Excel 各种密码的破解,各种大全值得收藏!(亲测有效)
本文介紹在 Excel 的多個文件版本中破解各類密碼,包含文件的查看、只讀密碼,工作表、工作簿的保護密碼,以及 VBA 工程密碼。內容非常全面,建議你收藏。文件作者加密碼是防止數(shù)據(jù)被查看,修改,所以,文件密碼破解僅供于學習參考,請尊重作者版權,不要斷人財路。
??下面的有些操作不易撤銷,為了防止文件被破壞,破解密碼前建議備份原文件。
1. 文件查看、只讀密碼破解
??Excel 文件的查看、只讀密碼目前只能采用暴力破解,就是用成千上萬個密碼一個一個去試。非常消耗資源,取決于你密碼的長度和復雜程度,有時也未必能破解成功。目前我還沒有找到比較好的免費工具去破解此類密碼,有一定及時推薦。在這里我介紹兩個網(wǎng)站可以破解此類密碼,付費的。
??http://www.password-online.com/index.php
??http://www.decryptum.com/
上傳文件前請檢查文件是否含比較私密的內容。
2. 工作表、工作簿保護密碼破解
??此密碼主要用于防止數(shù)據(jù)表的表格、格式、內容、公式等被修改刪除。當工作表的單元格被保護時,試圖編輯或刪除那些單元格時你會收到提示 “試圖更改的單元格或圖表在受保護的工作表中” 告訴你編輯失敗。工作簿被保護時,則不能新增、刪除工作表。此類密碼的破解方法因文件的后綴而異:
1) 后綴為 .xls 的文件
??用 Excel 打開工作簿,然后按 Alt + F11 進入 “開發(fā)工具” 界面,如下圖:
??在左邊的工程欄(Project)中選定節(jié)點 “ThisWorkbook”,雙擊左鍵,然后把下面的代碼復制到右邊的代碼編輯框中
Public Sub 工作表保護密碼破解()
? ? Const DBLSPACE As String = vbNewLine & vbNewLine
? ? Const AUTHORS As String = DBLSPACE & vbNewLine & _
? ? ? ? "作者:McCormick ? JE McGimpsey "
? ? Const HEADER As String = "工作表保護密碼破解"
? ? Const VERSION As String = DBLSPACE & "版本 Version 1.1.1"
? ? Const REPBACK As String = DBLSPACE & ""
? ? Const ZHENGLI As String = DBLSPACE & ""
? ? Const ALLCLEAR As String = DBLSPACE & "該工作簿中的工作表密碼保護已全部解除!!" & DBLSPACE & "請記得另保存" _
? ? ? ? & DBLSPACE & "注意:不要用在不當?shù)胤?#xff0c;要尊重他人的勞動成果!"
? ? Const MSGNOPWORDS1 As String = "該文件工作表中沒有加密"
? ? Const MSGNOPWORDS2 As String = "該文件工作表中沒有加密2"
? ? Const MSGTAKETIME As String = "解密需花費一定時間,請耐心等候!" & DBLSPACE & "按確定開始破解!"
? ? Const MSGPWORDFOUND1 As String = "密碼重新組合為:" & DBLSPACE & "$$" & DBLSPACE & _
? ? ? ? "如果該文件工作表有不同密碼,將搜索下一組密碼并修改清除"
? ? Const MSGPWORDFOUND2 As String = "密碼重新組合為:" & DBLSPACE & "$$" & DBLSPACE & _
? ? ? ? "如果該文件工作表有不同密碼,將搜索下一組密碼并解除"
? ? Const MSGONLYONE As String = "確保為唯一的?"
? ? 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
? ? 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 & ZHENGLI, vbInformation, HEADER
End Sub
完成后如下圖:
??然后點擊上圖的小三角按鈕(如藍色圓圈標注)執(zhí)行代碼破解密碼。如果 Excel 提示宏被禁用而導致代碼無法運行時,先在文件菜單中保存文件,然后關閉 Excel。重新打開 Excel 并啟用宏,按 Alt + F11 回到此界面再點擊小三角按鈕重新進行密碼破解。
破解期間會出現(xiàn)兩次提示的對話框,都選擇 “確認”。密碼破解完畢之后會出現(xiàn)如下窗口:
??這說明工作表或工作簿的保護密碼已被成功清除。最后按 Alt + F11 回到 “開發(fā)工具” 界面,刪除 “ThisWorkbook” 節(jié)點中的代碼,保存工作表。
后綴為 .xlsx 或 .xlsm 的文件
??在這里以 .xlsx 文件為例講解,首先把文件的后綴從 .xlsx 修改成 .rar 或 .zip,然后使用壓縮軟件,例如 WinRar, 7-Zip 打開壓縮文件。
工作表被鎖定:進入文件夾 xl\worksheets,找到被鎖定的工作表,例如 sheet1,如下圖:
選中此文件 “sheet1.xml” ,右擊,選擇記事本編輯。在記事本中查找字符串 <sheetProtection,找到后刪除從 <sheetProtection 到 /> 的內容,如下圖藍色標記:
工作簿被鎖定:進入文件夾 xl,找到文件 “workbook.xml”。選定右擊,選擇記事本編輯,在記事本中查找字符串 <workbookProtection,找到后刪除從<workbookProtection到/>的內容,如下圖藍色標記:
??刪除完成后在記事本中選擇 “文件” – “保存” 選項保存此文件。在記事本保存完成后壓縮軟件會提示你此文件已更改,是否更新?然后選擇 “是”。
??關閉壓縮軟件,把文件后綴從 .zip 或 .rar 修改回 .xlsx。用 Excel 打開 .xlsx 文件,此時你可以發(fā)現(xiàn)工作表或者工作簿的保護密碼已被清除。
3. VBA 工程密碼破解
??VBA 工程密碼也就是宏的保護密碼,它的破解也因文件的后綴而異:
1) 后綴為 .xls 的文件
??打開 Excel,新建一個文檔,按 Alt + F11 進入 “開發(fā)工具” 界面,如下圖:
在左邊的工程欄(Project)中選定節(jié)點 “ThisWorkbook”,雙擊左鍵,然后把下面的代碼復制到右邊的代碼編輯框中
Private Sub VBAPassword() ?'你要解保護的Excel文件路徑
? ? Filename = Application.GetOpenFilename("Excel文件(*.xls & *.xla & *.xlt),*.xls;*.xla;*.xlt", , "VBA破解")
? ? If Dir(Filename) = "" Then
? ? MsgBox "沒找到相關文件,清重新設置。"
? ? ? ? Exit Sub
? ? Else
? ? FileCopy Filename, Filename & ".bak" '備份文件。
? ? End If
? ? Dim GetData As String * 5
? ? Open Filename For Binary As #1
? ? Dim CMGs As Long
? ? Dim DPBo As Long
? ? For i = 1 To LOF(1)
? ? Get #1, i, GetData
? ? If GetData = "CMG=""" Then CMGs = i
? ? If GetData = "[Host" Then DPBo = i - 2: Exit For
? ? Next
? ? If CMGs = 0 Then
? ? MsgBox "請先對VBA編碼設置一個保護密碼...", 32, "提示"
? ? Exit Sub
? ? End If
? ? Dim St As String * 2
? ? Dim s20 As String * 1
? ? '取得一個0D0A十六進制字串
? ? Get #1, CMGs - 2, St
? ? '取得一個20十六制字串
? ? Get #1, DPBo + 16, s20
? ? '替換加密部份機碼
? ? For i = CMGs To DPBo Step 2
? ? Put #1, i, St
? ? Next
? ? '加入不配對符號
? ? If (DPBo - CMGs) Mod 2 <> 0 Then
? ? Put #1, DPBo + 1, s20
? ? End If
? ? MsgBox "文件解密成功......", 32, "提示"
? ? Close #1
End Sub
完成后如下圖:
??點擊上圖的小三角按鈕(如藍色圓圈標注)執(zhí)行代碼。在系統(tǒng)彈出的 “文件選擇對話框” 中選擇你要破解密碼的 Excel 文件,選中后點擊 “打開”。一會 Excel 提示 “文件解密成功”,這代表選定文件的 VBA 工程密碼已被清除。
2) 后綴為 .xlsm 的文件
??把文件的后綴從 .xlsm 修改成 .rar 或者 .zip,然后用壓縮軟件解壓這個壓縮文件。打開解壓后的文件,在文件夾 xl 中找到文件 vbaProject.bin,如下圖:
??用二進制文件編輯軟件,例如 XVI32 (可直接下載使用,免安裝) 打開 vbaProject.bin 文件,然后在其中查找 DPB,如下圖:
把 DPB 替換成 DPx, 如下:
??保存文件,重新壓縮,把文件的后綴重新修改回 .xlsm。用 Excel 打開文檔,期間出現(xiàn)的任何提示都點擊 “是” 或 “確認” 忽略它。
??按 Alt + F11 進入 “開發(fā)工具” 界面,在 Tools -> VBAProject Properties 的 Protection 欄重新設置一個新的 VBA 工程密碼,然后保存文件,關閉 Excel。
??重新打開之后先前的提示不會再出現(xiàn),用新密碼也可以成功打開 VBA 工程。VBA 工程密碼重設成功!
歡迎評論,如果你喜歡這篇文章, 請記得幫我點贊哦,謝謝!
?
總結
以上是生活随笔為你收集整理的Excel 各种密码的破解,各种大全值得收藏!(亲测有效)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 唯众高职软件技术专业解决方案
- 下一篇: access ribbon 编程_详解a