Odzyskaj hasło ochrony arkusza w programie Excel

14

Mam skoroszyt programu Excel.

Dwa lata przed ustawieniem opcji ochrony hasłem dla jednego z arkuszy. Teraz zapomniałem hasła. Czy istnieje sposób na odzyskanie hasła do tego arkusza programu Excel?

slhck
źródło

Odpowiedzi:

17

Nie możesz odzyskać hasła, ale możesz odblokować arkusz (skrót używany do ochrony arkusza jest dość podatny na kolizje w starych wersjach programu Excel, więc generowanie kolizji jest tutaj dość szybkie).

Dostępne są skrypty, które brutalnie wymuszą otwarcie twojego arkusza w bardzo krótkim czasie.

Spójrz tutaj na przykład: http://www.theofficeexperts.com/VBASamples/Excel02.htm

Oto kod:

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
Johan - przywróć Monikę
źródło
+1 możliwe rozwiązanie. Odwrotnie: zaprogramuj aplikację za pomocą Apache POI i Digester. Przejdź przez plik i skopiuj go bez dotykania hasła. (Tak, pod pewnymi względami jest to możliwe)
user8885
2
+1 Działa jak urok i dostaje zderzenie w czasie krótszym niż 10 sekund.
Johan - przywróć Monikę
Łał. Niesamowite, że kolizje są (prawie?) Pewne na podstawie 194 560 prób. Miałem swój na około 3000 iteracji. To około 17 bitów całkowitej entropii!
jonallard
Jakikolwiek sposób inny niż VBA? Jestem na OSX i cały plik jest chroniony.
Jonny
Jestem prawie pewien, że to nie zadziała na plikach Excel chronionych programem Excel 2013 i późniejszymi, ze względu na wyższy poziom szyfrowania.
Ƭᴇcʜιᴇ007