Er det en måte å knekke passordet på et Excel VBA-prosjekt?

Jeg har blitt bedt om å oppdatere noen Excel 2003-makroer, men VBA-prosjektene er passordbeskyttet, og det ser ut til at det mangler dokumentasjon ... ingen kjenner passordene.

Finnes det en måte å fjerne eller knekke passordet på et VBA-prosjekt?

Ja, så lenge du bruker et regneark i .xls-format (standard for Excel fram til 2003). For Excel 2007 og nyere er standardformatet .xlsx, som er et ganske sikkert format, og denne metoden vil ikke fungere.

Som Treb sier, er det en enkel sammenligning. En metode er ganske enkelt å bytte ut passordoppføringen i filen ved hjelp av en hex-editor (se Hex-editorer for Windows). Steg for steg eksempel:

  1. Opprett en ny enkel Excel-fil.

  2. I VBA-delen angir du et enkelt passord (for eksempel - 1234).

  3. Lagre filen og avslutt. Kontroller deretter filstørrelsen - se Stewbob's gotcha.

  4. Åpne filen du nettopp opprettet med en hex-editor.

  5. Kopier linjene som begynner med følgende nøkler:

     CMG=....
     DPB=...
     GC=...
  6. FØRST BACKUP Excel-filen du ikke kjenner VBA-passordet for, og åpne den deretter med hex-editoren, og lim inn de kopierte linjene ovenfor fra dummyfilen.

  7. Lagre Excel-filen og avslutt.

  8. Nå åpner du Excel-filen du trenger for å se VBA-koden i. Passordet for VBA-koden vil ganske enkelt være 1234 (som i eksemplet jeg viser her).

Hvis du trenger å jobbe med Excel 2007 eller 2010, er det noen andre svar nedenfor som kan hjelpe, spesielt disse: 1, 2, 3.

EDIT februar 2015: for en annen metode som ser veldig lovende ut, se på dette nye svaret av Đức Thanh Nguyễn.

Kommentarer (15)

Colin Pickard har et utmerket svar, men det er en 'se opp' med dette. Det er tilfeller (jeg har ikke funnet ut årsaken ennå) der den totale lengden på "CMG=........GC=...." oppføringen i filen er forskjellig fra en Excel-fil til den neste. I noen tilfeller vil denne oppføringen være 137 byte, og i andre tilfeller vil den være 143 byte. Lengden på 137 byte er den merkelige, og hvis dette skjer når du oppretter filen din med passordet "1234", er det bare å opprette en ny fil, så skal den hoppe til lengden på 143 byte.

Hvis du prøver å lime inn feil antall byte i filen, vil du miste VBA-prosjektet ditt når du prøver å åpne filen med Excel.

REDIGER

Dette gjelder ikke for Excel 2007/2010-filer. Standard .xlsx-filformatet er faktisk en .zip-fil som inneholder mange undermapper med formatering, layout, innhold osv. lagret som xml-data. For en ubeskyttet Excel 2007-fil kan du bare endre .xlsx-utvidelsen til .zip, og deretter åpne zip-filen og se gjennom alle xml-dataene. Det er veldig enkelt.

Men når du passordbeskytter en Excel 2007-fil, blir hele .zip-filen (.xlsx) faktisk kryptert med RSA-kryptering. Det er ikke lenger mulig å endre filtypen til .zip og bla gjennom filinnholdet.

Kommentarer (5)

Beskyttelsen er en enkel tekstsammenligning i Excel. Last inn Excel i din favoritt debugger (Ollydbg er mitt favorittverktøy), finn koden som gjør sammenligningen og fiks den slik at den alltid returnerer true, dette bør gi deg tilgang til makroene.

Kommentarer (1)