Accueil > > > OTER LES PROTECTION DE FEUILLES ET CLASSEUR EXCEL. MÉTHODE SANS ÉCHEC.
OTER LES PROTECTION DE FEUILLES ET CLASSEUR EXCEL. MÉTHODE SANS ÉCHEC.
Information sur la source
Description
Cette macro supprime les protection du classeur actif ou de la feuille active et fournit un mot de passe équivalent. La méthode est basé sur l'algorithme de hachage de Microsoft et trouve obligatoirement un mot de passe. La macro contient tous les commentaires explicatifs. Cette macro est postée pour éclaircir celle proposée par Granddebutant sur le forum le 03/07/2002 et répondre aux questions posées (enfin j'espère !). Activez la feuille ou le classeur à déprotéger et lancez la macro.
Source
- Attribute VB_Name = "Deprotection"
- '
- 'Déprotection sans échec du classeur ou de la feuille Excel avec extraction de mot de passe.
- '
- 'Auteur : CHEPAKOIDIR
- '
- 'PRINCIPE :
- 'Excel ne mémorise pas le mot de passe mais une clé sur 15 bits calculée à partir de ce mot de passe.
- 'Il y a donc 2^15 = 32768 possibilités de clés (de 0 à 32767) en tout et pour tout (c'est dire la fiabilité !).
- 'Il existe ainsi des milliards de mots de passe qui donnent la même clé. Ils sont EQUIVALENTS. On peut protéger
- 'avec un mot de passe et déprotéger avec un équivalent, reprotéger avec un autre équivalent, etc.
- 'Ceci pour répondre à ceux qui voudraient trouver le "bon" mot de passe. C'est impossible et ça n'a aucune
- 'importance, si vous voulez pirater un classeur sans que son propriétaire s'en rende compte (c'est pas bien ça),
- 'déprotégez-le puis reprotégez-le avec le mot de passe équivalent trouvé, il n'y verra que du feu.
- '
- 'CALCUL DE LA CLE PAR EXCEL :
- 'Microsoft n'en fait pas un secret et l'on peut trouver facilement la méthode sur internet.
- 'On applique à chaque caractère du mot de passe une rotation à gauche sur 15 bits. Le premier caractère tourne
- 'de 1 bit, le deuxième caractère tourne de 2 bits, etc. Comme c'est une rotation sur 15 bits, le 15ème caractère
- 'tourne de 0 bits, le 16ème tourne de 1 bit et on recommence par tranche de 15 ...
- 'Tous les résultats des rotations sont ensuite combinés avec des Ou Exclusifs (XOR pour les prétentieux).
- 'Puis on fait encore un ou exclusif entre le résultat final et la longueur du mot de passe.
- 'Enfin, on fait un dernier ou exclusif avec la constante CE4Bh. Notez que les ou exclusifs sont commutatifs.
- 'La clé ainsi calculée est stockée dans l'enregistrement numéro 13h du stream de la feuille ou du classeur.
- 'Par exemple, le mot de passe "toto" donne la clé CA4Bh. Le mot de passe "CCCBBBBBBCBBBBC" donne la même.
- '
- 'ALGORITHME :
- 'Cette macro utilise 15 boucles imbriquées de deux valeurs. Peu importe les valeurs, elles doivent juste être deux
- 'valeurs CONSECUTIVES et IDENTIQUES pour toutes les boucles (pour assurer que les 32768 possibilités soient
- 'couvertes). Attention, la première valeur doit être PAIRE. Ces deux valeurs doivent aussi être les codes ASCII de
- 'caractères acceptés par Excel dans les mots de passe.
- 'Exemples : "0" et "1" ou "B" et "C" ou "x" et "y" mais pas "A" et "B" (codes 65 et 66, le premier est impair).
- 'Le bit de poids faible de chaque variable de boucle correspond ainsi à 1 bit de la clé (0 ou 1 = 2 valeurs). Les
- 'autres bits des variables sont sans importance puisqu'ils sont constants et l'on est sûr de parcourir les 32768
- 'possibilités mais pas forcément dans l'ordre, ce qui n'a aucune importance.
- 'A chaque tour, les 15 caractères sont concaténés pour former le mot de passe à essayer et on boucle jusqu'à
- 'trouver celui qui marche.
- 'Sur un pentium à 2 GHz normalement constitué, il faut un peu plus d'une minute dans le pire des cas pour faire
- 'sauter une protection.
- '
- 'AUTRE METHODE :
- 'Il est possible de récupérer la clé de la feuille ou du classeur dans le fichier Excel (voir doc microsoft) et de calculer
- 'directement un mot de passe équivalent. Dans ce cas, il faut 2 secondes.
- 'Au boulot !!!
- '
-
- 'ATTENTION, la feuille ou le classeur à déprotéger doivent être actifs au lancement de la macro
- 'et il vaut mieux désactiver ses macros.
- Sub Deproteger()
-
- Dim A As Byte, B As Byte, C As Byte, D As Byte, E As Byte
- Dim F As Byte, G As Byte, H As Byte, I As Byte, J As Byte
- Dim K As Byte, L As Byte, M As Byte, N As Byte, O As Byte
- Dim Reponse As Byte, Temps As Variant
- Dim Cible As Object, Passe As String
-
- ' Demande ce qu'il faut déprotéger.
- Reponse = MsgBox("Voulez-vous déprotéger le classeur actif ?" & vbCrLf & _
- "Si vous répondez non, c'est la feuille active qui sera déprotégée. ", _
- vbYesNoCancel, "Déprotectionnateur")
-
- On Error Resume Next
- ' Teste ce qu'il faut déprotéger.
- Select Case Reponse
- Case vbYes
- ' Définit le classeur actif comme cible à déprotéger.
- Set Cible = ActiveWorkbook
- ' Teste si le classeur est protégé.
- If Not (Cible.ProtectStructure Or Cible.ProtectWindows) Then
- MsgBox "Le classeur actif n'est pas protégé. " & vbCrLf & _
- vbCrLf & "Andouille !", vbOKOnly, "Déprotectionnateur"
- Exit Sub
- End If
- ' Teste si le classeur est protégé sans mot de passe.
- Err.Clear
- Cible.Unprotect vbNullString
- If Err = 0 Then
- MsgBox "La protection du classeur actif a été supprimée. " _
- & vbCrLf & "Il n'y avait pas de mot de passe. Petit rigolo !", _
- vbOKOnly, "Déprotectionnateur"
- Exit Sub
- End If
- Case vbNo
- ' Définit la feuille active comme cible à déprotéger.
- Set Cible = ActiveSheet
- ' Teste si la feuille est protégée (on ne teste pas UserInterfaceOnly qui ne peut être positionné que par macro
- ' et n'est pas enregistré avec le classeur).
- If Not (Cible.ProtectContents Or Cible.ProtectDrawingObjects Or _
- Cible.ProtectScenarios) Then
- MsgBox "La feuille active n'est pas protégée. " & vbCrLf & _
- vbCrLf & "Patate !", vbOKOnly, "Déprotectionnateur"
- Exit Sub
- End If
- ' Teste si la feuille est protégée sans mot de passe.
- Err.Clear
- Cible.Unprotect vbNullString
- If Err = 0 Then
- MsgBox "La protection de la feuille active a été supprimée. " _
- & vbCrLf & "Il n'y avait pas de mot de passe. Quelle burne !", _
- vbOKOnly, "Déprotectionnateur"
- Exit Sub
- End If
- Case Else
- ' Annulation demandée par l'utilisateur.
- MsgBox String(14, " ") & "Ciao !", vbOKOnly, "Déprotectionnateur"
- Exit Sub
- End Select
-
- ' Note l'instant de départ.
- Temps = Timer
-
- ' Boucles de calcul des mots de passe. On utilise ici les codes ascii des caractères "0" et "1".
- For A = 48 To 49
- For B = 48 To 49
- For C = 48 To 49
- For D = 48 To 49
- For E = 48 To 49
- For F = 48 To 49
- For G = 48 To 49
- For H = 48 To 49
- For I = 48 To 49
- For J = 48 To 49
- For K = 48 To 49
- For L = 48 To 49
- For M = 48 To 49
- For N = 48 To 49
- For O = 48 To 49
- ' Calcule le mot de passe.
- Passe = Chr(A) & Chr(B) & Chr(C) & Chr(D) & Chr(E) & _
- Chr(F) & Chr(G) & Chr(H) & Chr(I) & Chr(J) & _
- Chr(K) & Chr(L) & Chr(M) & Chr(N) & Chr(O)
- ' Essaie de déprotéger la cible.
- Err.Clear
- Cible.Unprotect Passe
- ' Teste si la cible est bien déprotégé.
- If Err = 0 Then
- ' Si oui, affiche le mot de passe et sort.
- MsgBox "La protection a été supprimée en " & _
- Timer - Temps & " secondes. " & vbCrLf & _
- "Le mot de passe équivalent trouvé est :" & _
- vbCrLf & vbCrLf & String(28, " ") & Passe, _
- vbOKOnly, "Déprotectionnateur"
- Exit Sub
- End If
- Next
- Next
- Next
- Next
- Next
- Next
- Next
- Next
- Next
- Next
- Next
- Next
- Next
- Next
- Next
-
- ' Message impossible à atteindre.
- MsgBox "Mot de passe introuvable." & vbCrLf & vbCrLf & _
- "C'est pas normal !!!", vbOKOnly, "Déprotectionnateur"
-
- End Sub
-
Attribute VB_Name = "Deprotection"
'
'Déprotection sans échec du classeur ou de la feuille Excel avec extraction de mot de passe.
'
'Auteur : CHEPAKOIDIR
'
'PRINCIPE :
'Excel ne mémorise pas le mot de passe mais une clé sur 15 bits calculée à partir de ce mot de passe.
'Il y a donc 2^15 = 32768 possibilités de clés (de 0 à 32767) en tout et pour tout (c'est dire la fiabilité !).
'Il existe ainsi des milliards de mots de passe qui donnent la même clé. Ils sont EQUIVALENTS. On peut protéger
'avec un mot de passe et déprotéger avec un équivalent, reprotéger avec un autre équivalent, etc.
'Ceci pour répondre à ceux qui voudraient trouver le "bon" mot de passe. C'est impossible et ça n'a aucune
'importance, si vous voulez pirater un classeur sans que son propriétaire s'en rende compte (c'est pas bien ça),
'déprotégez-le puis reprotégez-le avec le mot de passe équivalent trouvé, il n'y verra que du feu.
'
'CALCUL DE LA CLE PAR EXCEL :
'Microsoft n'en fait pas un secret et l'on peut trouver facilement la méthode sur internet.
'On applique à chaque caractère du mot de passe une rotation à gauche sur 15 bits. Le premier caractère tourne
'de 1 bit, le deuxième caractère tourne de 2 bits, etc. Comme c'est une rotation sur 15 bits, le 15ème caractère
'tourne de 0 bits, le 16ème tourne de 1 bit et on recommence par tranche de 15 ...
'Tous les résultats des rotations sont ensuite combinés avec des Ou Exclusifs (XOR pour les prétentieux).
'Puis on fait encore un ou exclusif entre le résultat final et la longueur du mot de passe.
'Enfin, on fait un dernier ou exclusif avec la constante CE4Bh. Notez que les ou exclusifs sont commutatifs.
'La clé ainsi calculée est stockée dans l'enregistrement numéro 13h du stream de la feuille ou du classeur.
'Par exemple, le mot de passe "toto" donne la clé CA4Bh. Le mot de passe "CCCBBBBBBCBBBBC" donne la même.
'
'ALGORITHME :
'Cette macro utilise 15 boucles imbriquées de deux valeurs. Peu importe les valeurs, elles doivent juste être deux
'valeurs CONSECUTIVES et IDENTIQUES pour toutes les boucles (pour assurer que les 32768 possibilités soient
'couvertes). Attention, la première valeur doit être PAIRE. Ces deux valeurs doivent aussi être les codes ASCII de
'caractères acceptés par Excel dans les mots de passe.
'Exemples : "0" et "1" ou "B" et "C" ou "x" et "y" mais pas "A" et "B" (codes 65 et 66, le premier est impair).
'Le bit de poids faible de chaque variable de boucle correspond ainsi à 1 bit de la clé (0 ou 1 = 2 valeurs). Les
'autres bits des variables sont sans importance puisqu'ils sont constants et l'on est sûr de parcourir les 32768
'possibilités mais pas forcément dans l'ordre, ce qui n'a aucune importance.
'A chaque tour, les 15 caractères sont concaténés pour former le mot de passe à essayer et on boucle jusqu'à
'trouver celui qui marche.
'Sur un pentium à 2 GHz normalement constitué, il faut un peu plus d'une minute dans le pire des cas pour faire
'sauter une protection.
'
'AUTRE METHODE :
'Il est possible de récupérer la clé de la feuille ou du classeur dans le fichier Excel (voir doc microsoft) et de calculer
'directement un mot de passe équivalent. Dans ce cas, il faut 2 secondes.
'Au boulot !!!
'
'ATTENTION, la feuille ou le classeur à déprotéger doivent être actifs au lancement de la macro
'et il vaut mieux désactiver ses macros.
Sub Deproteger()
Dim A As Byte, B As Byte, C As Byte, D As Byte, E As Byte
Dim F As Byte, G As Byte, H As Byte, I As Byte, J As Byte
Dim K As Byte, L As Byte, M As Byte, N As Byte, O As Byte
Dim Reponse As Byte, Temps As Variant
Dim Cible As Object, Passe As String
' Demande ce qu'il faut déprotéger.
Reponse = MsgBox("Voulez-vous déprotéger le classeur actif ?" & vbCrLf & _
"Si vous répondez non, c'est la feuille active qui sera déprotégée. ", _
vbYesNoCancel, "Déprotectionnateur")
On Error Resume Next
' Teste ce qu'il faut déprotéger.
Select Case Reponse
Case vbYes
' Définit le classeur actif comme cible à déprotéger.
Set Cible = ActiveWorkbook
' Teste si le classeur est protégé.
If Not (Cible.ProtectStructure Or Cible.ProtectWindows) Then
MsgBox "Le classeur actif n'est pas protégé. " & vbCrLf & _
vbCrLf & "Andouille !", vbOKOnly, "Déprotectionnateur"
Exit Sub
End If
' Teste si le classeur est protégé sans mot de passe.
Err.Clear
Cible.Unprotect vbNullString
If Err = 0 Then
MsgBox "La protection du classeur actif a été supprimée. " _
& vbCrLf & "Il n'y avait pas de mot de passe. Petit rigolo !", _
vbOKOnly, "Déprotectionnateur"
Exit Sub
End If
Case vbNo
' Définit la feuille active comme cible à déprotéger.
Set Cible = ActiveSheet
' Teste si la feuille est protégée (on ne teste pas UserInterfaceOnly qui ne peut être positionné que par macro
' et n'est pas enregistré avec le classeur).
If Not (Cible.ProtectContents Or Cible.ProtectDrawingObjects Or _
Cible.ProtectScenarios) Then
MsgBox "La feuille active n'est pas protégée. " & vbCrLf & _
vbCrLf & "Patate !", vbOKOnly, "Déprotectionnateur"
Exit Sub
End If
' Teste si la feuille est protégée sans mot de passe.
Err.Clear
Cible.Unprotect vbNullString
If Err = 0 Then
MsgBox "La protection de la feuille active a été supprimée. " _
& vbCrLf & "Il n'y avait pas de mot de passe. Quelle burne !", _
vbOKOnly, "Déprotectionnateur"
Exit Sub
End If
Case Else
' Annulation demandée par l'utilisateur.
MsgBox String(14, " ") & "Ciao !", vbOKOnly, "Déprotectionnateur"
Exit Sub
End Select
' Note l'instant de départ.
Temps = Timer
' Boucles de calcul des mots de passe. On utilise ici les codes ascii des caractères "0" et "1".
For A = 48 To 49
For B = 48 To 49
For C = 48 To 49
For D = 48 To 49
For E = 48 To 49
For F = 48 To 49
For G = 48 To 49
For H = 48 To 49
For I = 48 To 49
For J = 48 To 49
For K = 48 To 49
For L = 48 To 49
For M = 48 To 49
For N = 48 To 49
For O = 48 To 49
' Calcule le mot de passe.
Passe = Chr(A) & Chr(B) & Chr(C) & Chr(D) & Chr(E) & _
Chr(F) & Chr(G) & Chr(H) & Chr(I) & Chr(J) & _
Chr(K) & Chr(L) & Chr(M) & Chr(N) & Chr(O)
' Essaie de déprotéger la cible.
Err.Clear
Cible.Unprotect Passe
' Teste si la cible est bien déprotégé.
If Err = 0 Then
' Si oui, affiche le mot de passe et sort.
MsgBox "La protection a été supprimée en " & _
Timer - Temps & " secondes. " & vbCrLf & _
"Le mot de passe équivalent trouvé est :" & _
vbCrLf & vbCrLf & String(28, " ") & Passe, _
vbOKOnly, "Déprotectionnateur"
Exit Sub
End If
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
' Message impossible à atteindre.
MsgBox "Mot de passe introuvable." & vbCrLf & vbCrLf & _
"C'est pas normal !!!", vbOKOnly, "Déprotectionnateur"
End Sub
Conclusion
Aucun bug (connu). Fonctionne sur toutes les versions Excel que j'ai pu approcher (de 97 à 2003). Version définitive !
Historique
- 02 avril 2006 11:54:33 :
- mise en page refaite
- 02 avril 2006 12:07:00 :
- Remise en page
- 02 avril 2006 12:12:23 :
- Reremise en page
- 02 avril 2006 12:16:17 :
- Idem
- 02 avril 2006 12:20:11 :
- Pffff
- 02 avril 2006 12:22:45 :
- Mise en page encore
- 02 avril 2006 12:24:37 :
- .
- 02 avril 2006 12:26:24 :
- .
- 02 avril 2006 12:28:01 :
- .
- 02 avril 2006 12:30:01 :
- .
- 02 avril 2006 12:37:05 :
- Ajout d'un fichier zip.
- 02 avril 2006 12:38:41 :
- .
- 02 avril 2006 12:40:06 :
- .
- 03 avril 2006 02:29:56 :
- Petite précision ajoutée.
- 03 avril 2006 02:37:47 :
- Et correction du zip.
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
convertion vba /excel [ par aducloux ]
bonjour a tous,je recherche l'équivalent de cette fonction mais en langage usuel...."=IF(ISTEXT(RC[-7]),1,2)" --------->
[Excel | VBA] Macro et Bouton de commande [ par AiDuK ]
Bonjour à toutes et à tousJe suis en train de finaliser mon projet , gràce à vous , et je me posais une question.J'ai un bouton de commande, derrière
VBA EXCEL - Macro variable... [ par Djrome ]
Salut les Kracks,Je souhaiterai avoir un code VBA qui exécuterai les actions suivantes:Input box au démarrage de la macro me demandant d'inclure la da
VBA Excel 2007. Macro ne fonctionne plus [ par guillaume89 ]
Bonjour,Une macro créé avec une excel 97. Elle a fonctionnée sous excel 2007 et windows vista. Elle ne fonctionne plus!!Le code: Run "'Achats.xls'!Feu
Coder une creation de macro Excel dans un programme VBA [ par Panodrek ]
Bonjour :)Voila, donc je voudrais savoir comment coder une création de macro Excel dans un programme VBA pour que ce dernier créé ces macros pendant s
Lancement d'une macro VBA dans excel par une combinaison de touche [ par dimud ]
Bonjour,Je voudrais lancer une macro (inputbox avec mot de passe ; la macro est OK) à partir de n'importe quel endroit d'un classeur excel protégé en
Inserer une formule dans excel par macro en vba [ par ANNIBAL3 ]
Bonjour,je me permet de poser cette question car je n'ai pas trouver de reponse dans les forums ( ou j'ai mal cherché )Voici ma question elle concerne
tirage au sort excel macro VBA [ par liog83 ]
Salut je suis nouveauJ'ai trouvé plain d'info sur les tirages au sort dans les macros VBA Excel mais je ne comprends pas tousJ'ai huit colonnes avec d
[VBA / macro excel] écriture sur une cellule précise via la rechercheV/H [ par hazzel ]
Bonjour,Voici mon problème, je vouhaiterai colorier une cellule précise d'une autre feuille. Pour se faire, la macro prend en compte le numero de la c
|
Derniers Blogs
[WF4] PASSAGE D'ARGUMENTS LITERAL, VISUALBASICVALUE OU LAMBDAVALUE?[WF4] PASSAGE D'ARGUMENTS LITERAL, VISUALBASICVALUE OU LAMBDAVALUE? par JeremyJeanson
Avec la sortie de la RC de Visual Studio 2010, Microsoft a mis un peu les points sur leS i en ce qui concernait le passage d'arguments. Mais nous somme un certain nombre à avoir pris ce changement comme un coup dur. Pour résumer la situation : à la sortie...
Cliquez pour lire la suite de l'article par JeremyJeanson [RIA SERVICES] INCLUDE ET DOMAINDATASOURCE[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE par Audrey
Dans un de mes articles précédents , j'avais parlé des DomainDataSource avec RIA Services dans le cas d'une interface Maître - Détail. Dans le même principe, je vais parler d'une autre manière de mettre en forme ce cas d'interface avec RIA Services. Et po...
Cliquez pour lire la suite de l'article par Audrey ZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATIONZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATION par ROMELARD Fabrice
Une des nouveautés de la version V 3.0 était l'apparition de l'onglet Social qui ne fonctionnait que si le MarketPlace était activé sur son poste. Cela limitait donc son intérêt, car hors du cadre commercial USA-CANADA, peu de monde trouva...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PRATIQUE DE SILVERLIGHT PAR ERIC AMBROSIPRATIQUE DE SILVERLIGHT PAR ERIC AMBROSI par MPOWARE
Je viens de finir la lecture du dernier livre d'
Eric Ambrosi
éditions PEARSON
Son livre donne une approche pratique de Silverlight qui sera aussi bien comprise par le développeur que par le designeur.
Tous les aspects du développement RIA sont abor...
Cliquez pour lire la suite de l'article par MPOWARE APPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NETAPPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NET par odewit
2 déclinaisons de Silverlight et 2 déclinaisons de Mono permettent dorénavant (ou permettront prochainement) de développer des applications .NET mobiles pour les principales plates-formes du marché :
Silverlight pour Symbian, basé sur Silverlight 2...
Cliquez pour lire la suite de l'article par odewit
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|