Comment la protection par mot de passe de VBA Excel code fonctionne?
Cette question est liée à mon précédent.
Pouvez-vous expliquer ou de fournir un lien vers une explication de la façon dont Excel VBA code de protection par mot de passe fonctionne réellement dans les versions antérieures à 2007? Quelle est la différence dans Excel 2007 et versions précédentes en termes de protection par mot de passe?
Aussi Excel pour la protection par mot de passe effectivement chiffrer le code? Comment Excel pour exécuter le code si c'est crypté?
Enfin, comment le mot de passe, le logiciel de suppression de travail d'excel?
OriginalL'auteur axk | 2008-11-03
Vous devez vous connecter pour publier un commentaire.
VBA de sécurité est largement considéré comme très faible. 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.
Comme je le comprends, Office 2003 et versions antérieures enregistre le code vba dans le cadre de la binaire format de la feuille de calcul (ou document de présentation). Lorsque vous lancez le VBA IDE, il a tout simplement l'air pour voir si le code VBA a été "protégé" ou pas. Cela ne veut pas dire qu'il est crypté simplement pas disponible pour l'affichage. La théorie est que cela s'arrête à vos utilisateurs de l'ingérence de votre code, mais un noyau dur programmeur capable de contourner le mot de passe.
Si Excel n'a pas besoin de décrypter le code qu'il doit empêcher les gens de visualisation.
Office 2007 ne chiffrer les macros (ne me demandez pas comment, ni quel algorithme). Cela est nécessaire sans doute parce que les fichiers XLSM (ou tout fichier Office 2007) sont juste des fichiers zip avec une extension différente. N'importe qui peut obtenir dans ces fichiers et de les fouiller.
Pour répondre à votre dernière question - quelle est le mot de passe de suppression de travailler sur les anciens formats Office, je ne suis pas entièrement sûr. Différents fournisseurs sera peut aborder le problème de différentes façons, mais je crois que l'approche la plus courante sera une attaque par force brute sur les mots de passe jusqu'à ce qu'une correspondance soit trouvée.
Excel VBProject objet a une propriété de Protection qui vous permettra de revenir différentes énumérations en fonction de l'état de la protection de la macro (
vbext_pp_locked
si la macro est protégée, par exemple). Si vous continuez à essayer les mots de passe par programmation jusqu'à ce que levbext_pp_locked
évaluée à false, vous avez trouvé votre mot de passe.Cette fonctionnalité n'est pas (à ma connaissance) cuit dans n'importe quelle version de microsoft Office. Plutôt, l'espoir est que, si vous souhaitez automation pour un fichier Office groupés, vous allez utiliser Visual Studio Tools pour Office (VSTO) pour écrire votre propre DLL et les conserver comme un complément.
FYI - j'ai créé un xlsm (à l'aide du convertisseur disponible pour 2003). Changé la xlsm extension de xip, décompressé et regarda à l'intérieur. Tous les VBA était à l'intérieur d'un seul fichier vbaProject.bin'. Dans un éditeur hexadécimal, il est apparu à être construit à partir d'exactement la même BIFF blocs que d'autres fichiers excel sont fabriqués à partir de. Toutes les chaînes de caractères dans les macros sont clairement visibles. Donc, il n'a pas l'air comme si le chiffrement a trop changé.
Hein. Merci pour cela. J'ai été amené à croire que le code a été chiffré. Devrait probablement avoir vérifié par moi-même.
OriginalL'auteur Phil.Wheeler
Phil est correcte - le mot de passe vous empêcher de regarder les modules, ils ne sont pas chiffrés eux-mêmes. Je sais que dans excel 2007, un fichier est essentiellement un zippé collection de XML et d'autres fichiers, mais je ne connais pas les détails de la façon dont le cryptage est manipulé. Pour les versions antérieures - excel 2, 3, 4, 5, 95, 97, 2000, XP, & 2003, il est complet OpenOffice.org la Documentation du Format de Fichier Microsoft Excel:
Le mot de passe bloc de magasins de 16 bits de la valeur de hachage calculée à partir de la feuille de calcul ou un classeur mot de passe de protection.
OriginalL'auteur DaveParillo
Quelqu'un a fait un travail code vba qui modifie le vba mot de passe de protection "macro", pour tous les fichiers excel, y compris .xlsm (2007+ versions). Vous pouvez voir comment cela fonctionne en parcourant son code.
Voici le blog de guy: http://lbeliarl.blogspot.com/2014/03/excel-removing-password-from-vba.html
Voici le fichier qui fait le travail: https://docs.google.com/file/d/0B6sFi5sSqEKbLUIwUTVhY3lWZE0/edit
Collé à partir d'un précédent post de son blog:
Pour Excel 2007/2010 (.xlsm) les fichiers ne suit pas:
Trouver et copier la valeur de paramètre DPB (valeur en guillemet), exemple:
DPB="282A84CBA1CBA1345FCCB154E20721DE77F7D2378D0EAC90427A22021A46E9CE6F17188A". (Cette valeur générée pour "macro" de mot de passe. Vous pouvez utiliser cette DPB valeur de sauter les étapes 1-8)
Faire les étapes 4 à 7 pour fichier avec des inconnus mot de passe (fichier que vous souhaitez déverrouiller).
Changement DBP valeur dans ce fichier sur la valeur que vous avez copié à l'étape 8.
Sauver la " vbaProject.bin fichier et quittez l'éditeur hex.
il suffira simplement de macro (comme dans l'exemple que je vous montre ici).
Il n'a pas répondu directement, mais l'gars qui demande pourrait suivre les étapes et le code s'il veut savoir comment il fonctionne.
OriginalL'auteur Morosho