破解Excel密碼保護

破解Excel密碼保護

昨天朋友問了我這個問題

他們公司的Excel有發生部份使用者可以編輯、大部份使用者無法編輯的問題

當下是研判應該是Excel密碼保護的原因

因為從沒用過Excel的密碼保護,所以我本來也不知道原來密碼保護可以做到儲存格層級的密碼保護

還可以定義哪些儲存格是可以用密碼保護、哪些不用密碼保護、哪些使用者(AD也可)在存取這個儲存格時不需要密碼

接著來看看我當時去模擬他們使用者的動作,去做修改儲存格標題的資料時,發生的現象

lock

上面可以看到,取消保護工作表跟保護活頁簿都是反灰的,卻會出現要你【取消保護工作表】

那試看看編輯其他非標題的欄位好了,卻出現要密碼才能變更儲存格裡面的資料

lock2

再來試著編輯看看活頁簿的部份,也是有設定保護(保護的真徹底…)

lock3

確定是被Excel密碼保護的功能鎖住了,問我朋友密碼知不知道,得到的回應就是:【沒人知道】

那問題總要解決,畢竟這不是他們公司唯一一個有密碼保護的Excel,而是有非常多個,當然還是要一個一個解

在不知道密碼的時候,解法有分成兩種

第一種就是適用於解除【工作表】層級的密碼保護,這可以使用巨集的方式跟增益集來解決,這個案例我是使用巨集

下面就是VBA的語法,需要新增到巨集中,等等會解釋怎麼使用

Sub PasswordBreaker()
Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim i4 As Integer, i5 As Integer, i6 As Integer
On Error Resume Next
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
ActiveSheet.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 ActiveSheet.ProtectContents = False Then
MsgBox "One usable password is " & Chr(i) & Chr(j) & _
Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
ActiveWorkbook.Sheets(1).Select
Range("a1").FormulaR1C1 = Chr(i) & Chr(j) & _
Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
Exit Sub
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
End Sub

第二種就適用於【活頁簿】層級的密碼保護,這需要使用增益集的方式去解決,沒辦法使用巨集

因為這是它人開發的,我在此就只貼上連結http://www.straxx.com/excel/password.html

如果覺得它對你有幫助,你要樂捐感謝他也可以

12344

password_2007_2010.xlam是給Excel 2007~2010使用(是破解端的環境,而不是原始編輯的環境)

password.xla則是給Excel 2003以前的版本

像我這份Excel,原始的編輯環境是Excel 2003(看附檔名是XLS就知道)

然而我替它破解的電腦使用的是Excel 2010,所以我下載的是password_2007_2010.xlam

 

接著,我們要開始破解囉~

首先我們要先把共用活頁簿先取消,這樣才能安裝巨集跟解除密碼保護(解決取消密碼保護反灰的問題)

※這步驟不是每個Excel都會需要做

lock4

這邊請按【是】,就會解除活頁簿共用狀態

lock5

接著會因為有透過加密且有密碼保護的原因,會問你要不要轉換Open XML,因為我要還給他的是原Excel,所以選【否】

lock6

接著就可以看到【取消保護工作表】、【保護活頁簿】可以選了,而【保護活頁簿】是黃底的,表示有啟用

lock7

接著我們新增一個巨集,按一下上面的【檢視】→【巨集】→【錄製巨集】

lock8

在巨集的名稱,輸入【PasswordBreaker】,並確認巨集是儲存在【現用活頁簿】,且目前開啟的活頁簿是要被破解的

lock9

接著我們檢視這個新增的巨集

lock10

接著編輯剛剛新增的巨集

lock11

然後將剛剛的VBA全部貼到裡面,然後存檔

lock12

在存檔的過程中,會出現一個錯誤,直接按確定,在存一次就好

lock13

接著就可以執行看看,它會幫你把密碼解出來,並且直接幫你先解開

lock14

lock15

之所以前面沒有提到儲存格層級的保護破解,是因為解除了工作表的保護,就可以自行修改密碼了

lock16

lock17

當然你也可以新增或修改使用者權限,因為我不是他們公司的人,只會看到一串SID在那裏

所以新增權限的部份就交給他去處理吧

lock18

到這裡,工作表跟儲存格的保護就算是解除了,接著就是要去解除活頁簿層級的保護了

接著,就先存檔將這個Excel關閉,再去執行password_2007_2010.xlam

這時會需要啟用巨集,如果不放心的話…只能請您另外找東西去破解了..

lock19

開啟增益集之後,我們可以透過開啟舊檔的方式,去開啟我們要破解的Excel檔案

然後透過增益集,去選取要破解的是工作表,還是活頁簿,或者是全部

※增益集不會顯示密碼,這是我使用巨集的原因之一

lock21

按下去之後,就會破解了,我破解是只有花一秒鐘

lock22

接著我嘗試去新增活頁簿,確實是可以新增,也可以修改舊有的活頁簿名稱了

lock23

就這樣~再來就是把巨集清一清,寄回去交差囉~