Est-il un moyen de cracker le mot de passe sur un fichier Excel VBA Projet?
J'ai été invité à mettre à jour certaines macros Excel 2003, mais les projets VBA sont protégés par mot de passe, et il semble qu'il ya un manque de documentation... personne ne sait le mot de passe.
Est-il un moyen de supprimer ou de craquer le mot de passe du projet VBA?
- Êtes-vous capable d'Enregistrer sous un .xls au lieu d'une .xla que les exemples dans votre lien à proposer? Vous ne savez pas si cela ferait une différence.
- bon à connaître : xlsb est robuste contre le craquage de mot de passe des trucs
- Cette question a été débattue il y a des années sur meta. TLDR: Beaucoup (la plupart?) des questions pourraient être abusés par de mauvais acteurs, mais en l'absence de preuve claire d'actes répréhensibles, nous devons présumer de la bonne foi. Il y a beaucoup de légitimement des raisons légales et éthiques pour cracker un mot de passe VBA. En outre, de discuter des faiblesses des systèmes actuels en fin de compte, contribue à une meilleure sécurité dans l'avenir et décourage les gens à partir à l'aveuglette en s'appuyant sur l'insécurité des systèmes de maintenant.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer ce direct
VBA
approche qui ne nécessite pas l'HEX de l'édition. Il va travailler pour tous les fichiers (*.xls, *.xlsm, *.xlam ...).Testé et fonctionne sur
À la recherche pour la version 64 bit? Voir https://stackoverflow.com/a/31005696/4342479
comment il fonctionne
Je vais essayer de mon mieux pour expliquer comment il fonctionne - s'il vous plaît excusez mon anglais.
à l'aide du code
Faites une sauvegarde de vos fichiers en premier!
Créer un nouveau fichier xlsm et de stocker ce code dans Module1
code credited to Siwtom (nick name), a Vietnamese developer
Coller ce code dans le code ci-dessus dans Module1 et l'exécuter
Revenir à vos Projets VBA et en profiter.
.pptm
.ppam
fichiersPrivate Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" _ (Destination As Long, Source As Long, ByVal Length As Long)
renvoie un message d'erreur disant que je dois mettre à jour la version 64-bit. Je suis à l'aide d'excel 2016 64 bits. Toute aide? MerciOui, il est, aussi longtemps que vous êtes à l'aide d'un
.xls
format de feuille de calcul (la valeur par défaut pour Excel 2003). Pour Excel à partir de 2007, la valeur par défaut est.xlsx
, qui est plutôt un format sécurisé, et cette méthode ne fonctionnera pas.Comme Treb dit, c'est une simple comparaison. Une méthode est de changer simplement la saisie du mot de passe dans le fichier avec un éditeur hexadécimal (voir Des éditeurs hexadécimaux pour Windows). Exemple étape par étape:
Copie les lignes qui commencent avec les touches suivantes:
PREMIÈRE SAUVEGARDE le fichier excel que vous ne connaissez pas le mot de passe VBA, puis de l'ouvrir avec votre éditeur hexadécimal, et collez-le au-dessus de copié les lignes du fichier factice.
sera simplement 1234 (comme dans l'exemple que je vous montre ici).
Si vous avez besoin de travailler avec Excel 2007 ou 2010, il y a d'autres réponses ci-dessous qui peut aider, en particulier ceux-ci: Un, Deux, Trois.
MODIFIER Février 2015: pour une autre méthode qui a l'air très prometteur, regardez cette nouvelle réponse par Đức Thanh Nguyen.
CMG...
chaîne est plus longue que l'originale.Il y a une autre (un peu plus facile) de la solution, sans les problèmes de taille. J'ai utilisé cette approche aujourd'hui (sur un 2003 XLS fichier, à l'aide d'Excel 2007) et a été un succès.
DPB=...
partieDPB=...
chaîne deDPx=...
Excel découvre une clé non valide (DPx) et vous demande si vous voulez continuer le chargement du projet (essentiellement en ignorant la protection)
*REMARQUE: assurez-vous que vous avez changé le mot de passe à une nouvelle valeur, sinon la prochaine fois que vous ouvrez la feuille de calcul Excel signaler des erreurs (Erreur Inattendue), puis lorsque vous accédez à la liste des modules VBA maintenant, vous pouvez voir les noms des modules de code source, mais de recevoir un autre message d'erreur lorsque vous ouvrez formes/code/etc. Pour remédier à cela, revenir au VBA les Propriétés du Projet et définir le mot de passe à une nouvelle valeur. Enregistrer et ré-ouvrir le document Excel et vous devriez être bon d'aller!
NOTE
est très important. Ne sautez pas cette étape importante.J'ai construit sur Đức Thanh Nguyen est fantastique réponse à permettre que cette méthode fonctionne avec les versions 64 bits d'Excel. Je suis sous Excel 2010 64 Bits sur 64 Bits de Windows 7.
Créer un nouveau fichier xlsm et de stocker ce code dans Module1
Coller ce code dans Module2 et l'exécuter
AVERTISSEMENT Cela a fonctionné pour moi et j'ai documenté ici dans l'espoir qu'il aidera quelqu'un. Je n'ai pas entièrement testé. Assurez-vous de sauvegarder tous les fichiers avant de procéder à cette option.
Colin Pickard a une excellente réponse, mais il ya un "watch out" avec ce. Il y a des cas (je n'ai pas compris la cause encore) où la longueur totale de la "CMG=........GC=...." entrée dans le fichier est différente à partir d'un fichier excel à l'autre. Dans certains cas, cette entrée sera 137 octets, et dans d'autres, il sera 143 octets. 137 octets de longueur est le plus étrange, et si cela se produit lorsque vous créez votre fichier avec le '1234' mot de passe, il suffit de créer un autre fichier, et il devrait passer à l'143 de la longueur en octets.
Si vous essayez de coller le mauvais nombre d'octets dans le fichier, vous perdrez votre projet VBA lorsque vous essayez d'ouvrir le fichier avec Excel.
MODIFIER
Ce n'est pas valable pour Excel 2007/2010 fichiers. Le standard .xlsx format de fichier est en fait un .fichier zip contenant de nombreux sous-dossiers avec la mise en forme, mise en page, le contenu, etc, stockées en tant que données xml. Pour un non protégés fichier Excel 2007, vous pouvez simplement changer la .extension xlsx pour .fermeture à glissière, puis ouvrez le fichier zip et de regarder à travers toutes les données xml. C'est très simple.
Toutefois, lorsque vous protégez par mot de passe un fichier Excel 2007, l'ensemble de l' .zip (.xlsx) fichier est chiffré à l'aide de cryptage RSA. Il n'est plus possible de changer l'extension en .zip et de parcourir le contenu du fichier.
Pour un
.xlsm
ou.dotm
type de fichier, vous devez le faire d'une manière légèrement différente..xlsm
fichier à.zip
.vbaProject.bin
fichier et de l'ouvrir dans un Éditeur Hexadécimal (j'utilise HxD, il est complètement gratuit et léger.)DPB
et de le remplacer avecDPx
et enregistrez le fichier.vbaProject.bin
fichier avec cette nouvelle dans le fichier zippé..xlsm
..xlsm
fichier..zip
si vous avez 7-Zip installé. Dans ce cas, il vous suffit de cliquer droit sur l'.xlsm
fichier et choisissez "7-Zip -> Open Archive"Il est intéressant de souligner que si vous avez un fichier Excel 2007 (xlsm) de fichier, il vous suffit de l'enregistrer comme un fichier Excel 2003 (xls) de fichiers et d'utiliser les méthodes décrites dans d'autres réponses.
1.
convertir .xlsm pour .xls2.
décrypter le code de .xls3.
convertir .xlsm pour .xlsx4.
Mettez le code de modules .xls de .xlsx et enregistrer sous .xlsmAvez-vous essayé tout simplement de les ouvrir dans OpenOffice.org?
J'ai eu un problème similaire il y a quelques temps et a constaté que Excel et Calc ne pas comprendre les uns les autres de chiffrement, et a permis un accès direct à peu près tout.
C'était il y a longtemps, donc si ce n'était pas juste un coup de chance pour ma part, elle peut aussi avoir été patché.
Pour Excel à partir de 2007 vous avez besoin de changer votre extension de fichier .zip
Dans l'archive il y a un sous-dossier xl, là, vous trouverez le projet vba.bin.
Suivez l'étape ci-dessus avec le projet vba.bin enregistrer dans l'archive.
Modifier l'arrière de votre poste et voilà! (ce qui signifie suivez les étapes ci-dessus)
Dans le cas où votre bloc de
CMG="XXXX"\r\nDPB="XXXXX"\r\nGC="XXXXXX"
dans votre "fameux mot de passe fichier est plus court que le bloc existant dans l '"inconnu" mot de passe fichier, le pad de votre hex chaînes de zéros pour obtenir la bonne longueur.
par exemple
CMG="xxxxxx"\r\nDPB="xxxxxxxx"\r\nGC="xxxxxxxxxx"
dans l'inconnu fichier de mot de passe, doit être défini à
CMG="XXXX00"\r\nDPB="XXXXX000"\r\nGC="XXXXXX0000"
de préserver la longueur du fichier.J'ai aussi eu ce travail avec .XLA (97/2003 format) des fichiers dans office 2007.
Les mots de passe du Projet VBA sur Access, Excel, Powerpoint ou Word documents (
2007, 2010, 2013 or 2016
versions avec des extensions.ACCDB .XLSM .XLTM .DOCM .DOTM .POTM .PPSM
) peut être facilement enlevé.C'est tout simplement une question de changer le nom du fichier de l'extension de
.ZIP
, la décompression du fichier, et en utilisant une base Hex Editor (comme XVI32) pour "casser" le mot de passe existant, qui "confond" Bureau de sorte qu'il vous invite à entrer un nouveau mot de passe la prochaine fois que le fichier est ouvert.Un résumé des étapes:
.ZIP
extension.ZIP
et aller à laXL
dossier.vbaProject.bin
et de l'ouvrir avec un Éditeur HexadécimalDPB
àDPX
..bin
fichier dans le zip, de le retourner, c'est normal d'extension et ouvrir le fichier comme d'habitude.VBA Project Properties
.Protection
onglet, Définissez un nouveau mot de passe.OK
, Fermez le fichier, ouvrez-la à nouveau, appuyez sur ALT+F11.À ce stade, vous pouvez supprimer le mot de passe complètement si vous choisissez d'.
Des instructions complètes avec une étape par étape vidéo que j'ai faite "le chemin du retour lorsque" sont sur YouTube ici.
C'est un peu choquant que cette solution de contournement a été là depuis des années, et Microsoft n'a pas résolu le problème.
Colin Pickard est la plupart du temps correct, mais ne confondez pas le "mot de passe pour ouvrir" la protection de l'ensemble du dossier avec le VBA protection par mot de passe, ce qui est complètement différent de l'ancien et est la même pour Office 2003 et 2007 (pour Office 2007, renommez le fichier .zip et regardez pour le projet vba.bin dans le zip). Et que, techniquement, la bonne façon de modifier le fichier est d'utiliser un composé OLE de la visionneuse de document comme CFX pour ouvrir le volet. Bien sûr, si vous êtes juste de remplacer octets, la plaine ancien éditeur binaire peut travailler.
BTW, si vous vous interrogez sur la forme exacte de ces champs, ils l'ont documenté maintenant:
http://msdn.microsoft.com/en-us/library/dd926151%28v=office.12%29.aspx
À mon tour, ce qui est construit sur kaybee99 excellente réponse, qui est construit sur Đức Thanh Nguyen est fantastique réponse à permettre que cette méthode fonctionne avec les versions x86 et amd64 versions d'Office.
Un aperçu de ce qui est changé, nous éviter de pousser/ret qui est limité à 32 bits d'adresses et de le remplacer avec mov/jmp reg.
Testé et fonctionne sur
comment il fonctionne
Créer un nouveau fichier avec le même type que ci-dessus, et de stocker ce code dans Module1
Coller ce code dans Module2 et l'exécuter
Si le fichier est valide d'un fichier zip (les premiers octets sont
50 4B
- utilisés dans les formats comme.xlsm
), puis décompressez le fichier et recherchez la sous-fichierxl/vbaProject.bin
. C'est de la BFC de fichier comme le.xls
fichiers. Suivez les instructions pour le format XLS (appliqué à la sous-fichier) et ensuite il suffit de compresser le contenu.Pour le format XLS, vous pouvez suivre certains des autres méthodes dans ce post. Personnellement, je préfère la recherche de la
DPB=
bloc et de remplacer le texteavec des espaces vides. Cette méthode permet d'éviter la BFC de la taille du conteneur questions.
ElcomSoft fait Advanced Office Password Breaker et Advanced Office Password Recovery des produits qui peuvent s'appliquer à ce cas, et tant que le document a été créé dans Office 2007 ou avant.
J'ai essayé quelques solutions ci-dessus et aucun d'entre eux travaille pour moi (excel 2007 fichier xlsm). Ensuite, j'ai trouvé une autre solution que même récupérer le mot de passe, et pas seulement de le fendre.
Insérer ce code dans le module, exécutez-le et donnez-lui un peu de temps. Il permettra de récupérer votre mot de passe par force brute.
Tom - j'ai fait un écolier erreur d'abord que je n'ai pas regarder la taille en octets et au lieu de cela j'ai copié et collé à partir du "CMG" mis en place à l'entrée ultérieure. C'était deux tailles de texte entre les deux fichiers, mais, et j'ai perdu le projet VBA comme Stewbob averti.
À l'aide de HxD, il y a un compteur de suivi combien de fichiers que vous sélectionnez. Copie à partir de la méthodologie GMA jusqu'à ce que le compteur de lectures 8F (hex pour 143) et de même lorsque le coller dans le fichier verrouillé - j'ai fini avec deux fois le nombre de "..." à la fin de la pâte, ce qui semblait étrange d'une certaine façon et se sentait presque contre nature, mais cela a fonctionné.
Je ne sais pas si c'est indispensable, mais j'ai fait en sorte que je ferme à la fois l'éditeur hexadécimal et excel vers le bas avant de rouvrir le fichier dans Excel. J'ai ensuite eu à passer par les menus pour ouvrir l'Éditeur de VB, en VBProject Propriétés et est entré dans le "nouveau" mot de passe pour déverrouiller le code.
J'espère que cette aide.
Mon outil, VbaDiff, lit VBA directement à partir du fichier, de sorte que vous pouvez l'utiliser pour récupérer des protégés du code VBA de la plupart des documents office sans avoir recours à un éditeur hexadécimal.
La protection est une simple comparaison de texte dans Excel.
Charger Excel dans vos favoris débogueur (Ollydbg étant mon outil de choix), de trouver le code qui fait la comparaison et la fixer toujours retourner vrai, cela devrait vous permettre d'accéder aux macros.
votre fichier excel extension, le changement de xml.
Et de l'ouvrir dans le bloc-notes.
mot de passe de la recherche de texte dans le fichier xml.
vous voir comme en dessous de la ligne;
(désolé pour mon mauvais anglais)
Si vous travaillez dans
Java
vous pouvez essayerVBAMacroExtractor
. Après l'extraction de scripts VBA de.xlsm
j'ai trouvé il y a un mot de passe en clair dans le texte.Pour Excel 2016 64 bits sur un Windows 10 de la machine, j'ai utilisé un éditeur hexadécimal pour être en mesure de changer le mot de passe protégé xla (pas testé ce pour toutes les autres extensions).
Astuce: créer une copie de sauvegarde avant de le faire.
Les étapes que j'ai pris:
J'espère que cela a aidé certains d'entre vous!