Récupérer le mot de passe de protection des feuilles dans Excel

14

J'ai un classeur Excel.

Deux ans avant de définir l'option de protection par mot de passe pour l'une des feuilles. Maintenant, j'ai oublié le mot de passe. Existe-t-il un moyen de récupérer le mot de passe de cette feuille Excel?

slhck
la source

Réponses:

17

Vous ne pouvez pas récupérer LE mot de passe, mais vous pouvez déprotéger la feuille (le hachage utilisé pour protéger la feuille est assez sujet aux collisions dans les anciennes versions d'Excel, donc générer une collision est assez rapide ici).

Il existe des scripts disponibles qui permettront à la force brute d'ouvrir votre feuille en très peu de temps.

Jetez un œil ici par exemple: http://www.theofficeexperts.com/VBASamples/Excel02.htm

Voici le 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
Johan - réintègre Monica
la source
+1 solution possible. Sinon, programmez une application avec Apache POI et Digester. Parcourez le fichier et copiez-le sans toucher au mot de passe. (Oui, à certains égards, c'est possible)
user8885
2
+1 Fonctionne comme un charme et obtient une collision en moins de 10 secondes.
Johan - réintègre Monica
Sensationnel. Incroyable que les collisions soient (presque?) Certaines sous 194 560 tentatives. J'ai eu le mien à environ 3000e itération. C'est environ 17 bits d'entropie totale!
jonallard
Une manière non-vba? Je suis sur OSX et l'ensemble du fichier est protégé.
Jonny
Je suis presque sûr que cela ne fonctionnera pas sur les fichiers Excel protégés avec Excel 2013 et versions ultérieures, en raison de l'augmentation des niveaux de cryptage.
Ƭᴇcʜιᴇ007