OTER LES PROTECTION DE FEUILLES ET CLASSEUR EXCEL. MÉTHODE SANS ÉCHEC.

Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
- - Dernière réponse :  acyd - 4 sept. 2017 à 01:22
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36857-oter-les-protection-de-feuilles-et-classeur-excel-methode-sans-echec

Afficher la suite 
us_30
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
7 -
Salut,

JE pense qu'on peutt largemenent optimiser le code...

Par exemple, au lieu de toutes les lignes FOR, on peut construire directement les nb binaires, qui ce révèle globlalement plus rapide...

Voici, une possibilité :

'Boucles de calcul des mots de passe
Fin = 2 ^ 15 - 1
For N = 0 To Fin Step 1
Passe = vbNullString
B = N
Do
Passe = CStr(B Mod 2) & Passe
B = B \ 2
Loop While B > 0

'Erreur nulle
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 N

Après quelques mesures du temps, j'ai obtenu avec cette version une durée globalement réduite de 2 à 8 fois. (Le temps dépend aussi du mot de passe à découvrir, par ex: si mot de passe = "fred" (140s contre 315s) alors c'est bien plus long à découvrir que "a" (18s contre 145s))


Amicalement,
Us.
us_30
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
7 -
Complément,

Bien sur, N et B seront déclarés en Integer... D'ailleurs, au lieu du type byte, dans ton code tu devrais chosir le type Integer que sera un peu plus rapide...

Us.
chepakoidir
Messages postés
2
Date d'inscription
vendredi 22 juillet 2005
Statut
Membre
Dernière intervention
2 avril 2006
-
Salut,

Je suis d'accord, l'idée est bonne mais alors ça ne marcherait qu'avec des mots de passe composés de 1 et de 0.
Dans mes boucles j'utilise 48 et 49 qui sont les codes ascii de "0" et "1" mais on peut aussi bien les remplacer par les codes 65 et 66 ("A" et "B") ou autre chose. Et l'astuce ne marche plus !

Pour le temps, tout dépend si le mot passe initial a modifié ou pas les bits de gauche de la clé. A cause de la constante CA4Bh mise en Xor, les petits passes donne un bit 15 à 1 par exemple mais pas les grands. On peut mélanger les boucles mais c'est impossible à optimiser, faudrait connaître le passe avant de l'avoir trouvé !!!
Bah, on n'est pas à une minute près. Mon objectif était surtout d'expliquer le principe de la chose. Je préférerais lire la clé dans le fichier et calculer directement un passe avec. Mon problème c'est que la doc Microsoft est peu claire sur la structure du fichier. Si quelqu'un a des infos ...

Amicalement,

Chepakoidir
cyril16000
Messages postés
1
Date d'inscription
lundi 3 juillet 2006
Statut
Membre
Dernière intervention
9 août 2006
-
Hello!

J'ai bien aimé le message "le classeur n'est pas protégé, ANDOUILLE", lorsque l'on fait un test sur un classeur effectivement NON PROTEGE...
Bien ri!!! Merci...
cs_bourasseau
Messages postés
1
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
3 novembre 2006
-
Bonjour,
Le problème est que je ne peux pas rendre actif le classeur protégé par mot de passe car la boite de dialogue mot de passe se ferme et le classeur aussi, donc la macro ne sert a rien puisque le classeur est fermé.
A moins qu'il y ait une autre combine.

merci pour la réponse