Question

Cette question concerne mon précédent .

Pouvez-vous expliquer ou fournir un lien vers une explication de la manière dont la protection par mot de passe du code VBA Excel fonctionne réellement dans les versions antérieures à 2007? Quelle est la différence entre Excel 2007 et les versions précédentes en termes de protection par mot de passe?

De plus, la protection par mot de passe d'Excel crypte-t-elle réellement le code? Comment Excel exécute-t-il le code s’il est chiffré?

Enfin, comment fonctionne le logiciel de suppression de mot de passe pour Excel?

Était-ce utile?

La solution

La sécurité VBA est généralement considérée comme étant assez médiocre. Le code VBA n'est pas compilé et la source est disponible dans le fichier Excel. La protection par mot de passe est assez facile à contourner.

Si je comprends bien, Office 2003 et les versions antérieures enregistre le code vba dans le format binaire de la feuille de calcul (ou du document / présentation). Lorsque vous lancez l'IDE VBA, il cherche simplement à savoir si le code VBA a été "protégé". ou pas. Cela ne signifie pas qu'il est crypté - il n'est tout simplement pas disponible pour l'affichage. La théorie est que cela empêche vos utilisateurs d'intervenir dans votre code, mais un codeur endurcis serait capable de contourner le mot de passe.

Donc, Excel n'a pas besoin de déchiffrer du code, il doit juste empêcher les gens de le voir.

Office 2007 chiffre les macros (ne me demandez pas comment ni quel algorithme). Cela est probablement dû au fait que les fichiers XLSM (ou tout autre fichier Office 2007) ne sont que des fichiers zip portant une extension différente. Tout le monde peut accéder à ces fichiers et fouiner.

Pour répondre à votre dernière question - comment la suppression du mot de passe fonctionne-t-elle sur les anciens formats Office, je ne suis pas tout à fait sûr. Différents fournisseurs aborderont probablement le problème de différentes manières, mais je suppose que l'approche la plus courante consistera en une attaque brutale sur les mots de passe jusqu'à ce qu'une correspondance soit trouvée.

L'objet Excel VBProject a une propriété Protection qui renvoie différentes énumérations en fonction de l'état de protection de la macro ( vbext_pp_locked si la macro est protégée, par exemple). Si vous deviez continuer à essayer les mots de passe par programmation jusqu'à ce que vbext_pp_locked soit évalué à false, vous auriez trouvé votre mot de passe.

Autres conseils

Phil est correct - le mot de passe vous empêche de consulter les modules, ils ne sont pas cryptés eux-mêmes. Dans Excel 2007, un fichier est essentiellement un ensemble compressé de fichiers XML et autres, mais je ne connais pas les détails de la gestion du cryptage. Pour les versions antérieures - excel 2, 3, 4, 5, 95, 97, 2000, XP, & amp; 2003, il existe la documentation détaillée sur le format de fichier Microsoft Excel :

  

Le format de fichier Excel est nommé BIFF (format de fichier d'échange binaire). Il est utilisé pour stocker tous les types de documents: documents de feuille de travail, documents de classeur et documents d'espace de travail. Il existe différentes versions de ce format de fichier, en fonction de la version d'Excel ayant écrit le fichier et du type de document.

     

Un document de classeur comportant plusieurs feuilles (BIFF5-BIFF8) est généralement stocké sous le format de fichier composé (également appelé & # 8220; Format de fichier de stockage OLE2 & # 8221; ou & # 8220; Format de fichier de stockage compatible Microsoft Office & # 8221;). Il contient plusieurs flux pour différents types de données. Vous trouverez une documentation complète sur le format des fichiers de document composé ici .

     

Le bloc de protection du classeur se produit juste après le bloc DEFINEDNAME (c.-à-d. les plages nommées) dans la plupart des flux BIFF, bien que BIFF8 soit un écart majeur par rapport à ce modèle. Bloc de protection des enregistrements Dans Biff5 - Biff8, la structure du bloc de protection du classeur:

  • Paramètres de la fenêtre WINDOWPROTECT: 1 = protégé
  • Protéger le contenu du classeur: 1 = protégé
  • PASSWORD Valeur de hachage du mot de passe; 0 = pas de mot de passe
  • PROT4REV classeur partagé: 1 = protégé
  • PROT4REVPASS Valeur de hachage du mot de passe partagé; 0 = pas de mot de passe

Le bloc de mots de passe stocke une valeur de hachage de 16 bits, calculée à partir du mot de passe de protection de la feuille de calcul ou du classeur.

Quelqu'un a créé un code vba fonctionnel qui modifie le mot de passe de la protection vba en "macro" pour tous les fichiers Excel, y compris .xlsm (versions 2007+). Vous pouvez voir comment cela fonctionne en parcourant son code.

Voici le blog de cet homme: http: // lbeliarl .blogspot.com / 2014/03 / excel-removal-password-from-vba.html Voici le fichier qui fait le travail: https://docs.google.com/file/d / 0B6sFi5sSqEKbLUIwUTVhY3lWZE0 / modifier

Collé à partir d'un article précédent de son blog:

Pour les fichiers Excel 2007/2010 (.xlsm), procédez comme suit:

  1. Créez un nouveau fichier .xlsm.
  2. Dans la partie VBA, définissez un mot de passe simple (par exemple, "macro").
  3. Enregistrez le fichier et quittez.
  4. Modifiez l'extension de fichier en '.zip', ouvrez-la avec n'importe quel programme d'archivage.
  5. Recherchez le fichier 'vbaProject.bin' (dans le dossier 'xl').
  6. Extrayez-le des archives.
  7. Ouvrez le fichier que vous venez d'extraire avec un éditeur hexadécimal.
  8. Recherchez et copiez la valeur du paramètre DPB (valeur entre guillemets), exemple:     DPB = "282A84CBA1CBA1345FCCB154E20721DE77F7D2378D0EAC90427A22021A46E9CE6F17188A". (Cette valeur est générée pour le mot de passe "macro". Vous pouvez utiliser cette valeur DPB pour ignorer les étapes 1 à 8)

  9. Suivez les étapes 4 à 7 pour les fichiers avec un mot de passe inconnu (fichier à déverrouiller).

  10. Modifiez la valeur DBP dans ce fichier en fonction de la valeur copiée à l'étape 8.

      
        

    Si la valeur copiée est plus courte que dans un fichier crypté, vous devez renseigner les caractères manquants avec 0 (zéro). Si la valeur est plus longue, ce n'est pas un problème (collez-le tel quel).

      
  11. Enregistrez le fichier 'vbaProject.bin' et quittez l'éditeur hexadécimal.

  12. Remplacez le fichier 'vbaProject.bin' existant par un fichier modifié.
  13. Modifiez l'extension de '.zip' en '.xlsm'
  14. Ouvrez maintenant le fichier Excel dans lequel vous devez voir le code VBA. Le mot de passe pour le code VBA sera simplement une macro (comme dans l'exemple que je montre ici).
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top