I have one excel workbook.2 years before I set password protection option for one of the sheet of that excel file.But now I have forgotten the password.Is there any way to recover the password of that excel sheet?

link|improve this question
Do you need the original password, or do you just need to open and edit the sheet? – Hello71 Jul 21 '10 at 14:17
feedback

migrated from stackoverflow.com Sep 23 '09 at 21:06

This question came from our site for professional and enthusiast programmers.

1 Answer

You cannot recover THE password, but you can unprotect the sheet(The hash used to protect the sheet is quite prone to collisions in the old versions of excel, so generating a collision is quite fast here).

There are scripts availale the will brute force open your sheet within a very short amount of time.

Take a look here for example: http://www.theofficeexperts.com/VBASamples/Excel02.htm

Here's the code:

Sub PasswordBreaker()
  'Author unknown but submitted by brettdj of www.experts-exchange.com

  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
link|improve this answer
+1 possible solution. Other way around it..program an app with Apache POI and Digester. Get through the file and copy it without touching the password. (Yes in some ways it is possible) – user8885 Sep 22 '09 at 9:26
1  
+1 Works like a charm and gets a collision in under 10 seconds. – Johan Dec 21 '11 at 9:01
feedback

Your Answer

 
or
required, but never shown