How password protection of Excel VBA code works?

后端 未结 3 1281
心在旅途
心在旅途 2020-12-11 04:04

This question is related to my previous one.

Can you explain or provide a link to an explanation of how Excel VBA code password protection actually works in versions

3条回答
  •  北海茫月
    2020-12-11 04:40

    Someone made a working vba code that changes the vba protection password to "macro", for all excel files, including .xlsm (2007+ versions). You can see how it works by browsing his code.

    Here's the guy blog: http://lbeliarl.blogspot.com/2014/03/excel-removing-password-from-vba.html Here's the file that does the work: https://docs.google.com/file/d/0B6sFi5sSqEKbLUIwUTVhY3lWZE0/edit

    Pasted from a previous post from his blog:

    For Excel 2007/2010 (.xlsm) files do following steps:

    1. Create a new .xlsm file.
    2. In the VBA part, set a simple password (for instance 'macro').
    3. Save the file and exit.
    4. Change file extention to '.zip', open it by any archiver program.
    5. Find the file: 'vbaProject.bin' (in 'xl' folder).
    6. Extract it from archive.
    7. Open the file you just extracted with a hex editor.
    8. Find and copy the value from parameter DPB (value in quotation mark), example: DPB="282A84CBA1CBA1345FCCB154E20721DE77F7D2378D0EAC90427A22021A46E9CE6F17188A". (This value generated for 'macro' password. You can use this DPB value to skip steps 1-8)

    9. Do steps 4-7 for file with unknown password (file you want to unlock).

    10. Change DBP value in this file on value that you have copied in step 8.

      If copied value is shorter than in encrypted file you should populate missing characters with 0 (zero). If value is longer - that is not a problem (paste it as is).

    11. Save the 'vbaProject.bin' file and exit from hex editor.

    12. Replace existing 'vbaProject.bin' file with modified one.
    13. Change extention from '.zip' back to '.xlsm'
    14. Now, open the excel file you need to see the VBA code in. The password for the VBA code will simply be macro (as in the example I'm showing here).

提交回复
热议问题