579 Stimmen

Gibt es eine Möglichkeit, das Kennwort für ein Excel-VBA-Projekt zu knacken?

Ich wurde gebeten, einige Excel 2003-Makros zu aktualisieren, aber die VBA-Projekte sind passwortgeschützt, und es scheint, dass es an Dokumentation mangelt... niemand kennt die Passwörter.

Gibt es eine Möglichkeit, das Kennwort für ein VBA-Projekt zu entfernen oder zu knacken?

4voto

spicy.dll Punkte 908

In Wahrheit sind die Codedateien der meisten makrofähigen Office-Dokumente nicht verschlüsselt, und das Kennwort verhindert lediglich das Öffnen des Projekts mit Office-Programmen. Das bedeutet, dass Sie, wie in anderen Antworten vorgeschlagen, normalerweise eine Office-Alternative verwenden können, um auf die Datei zuzugreifen und sie zu bearbeiten.

Wenn Sie jedoch nur Zugriff auf den Code benötigen, können Sie ein Tool wie oledump.py um den Makro-Code zu extrahieren. Dies ist nützlich für die Malware-Analyse und um den größten Teil des Codes aus der Datei zu erhalten, damit Sie nicht von vorne anfangen müssen, wenn Sie das Passwort vergessen haben.

Außerdem setzen viele Excel-Dateien das Kennwort dynamisch, wenn die Datei geöffnet wird. Das bedeutet, dass Sie, wenn Sie den Code lesen können, in der Regel das Kennwort im Klartext finden oder es entschleiern können.

oledump.py Beispiele:

Auflisten aller "Streams" (eingebettete Binär- oder Codedateien) in einem Office-Dokument:

python oledump.py -v yourExcelFile.xlsm

Output:

A: xl/vbaProject.bin
 A1:      2000 'PROJECT'
 A2:      1500 'PROJECTwm'
 A3: M    1224 'VBA/Module1'
 A4: M   18694 'VBA/Module2'
 A5: M   11877 'VBA/Module3'
...

Ströme mit einer M daneben befinden sich Makros, d. h. unverschlüsselter VBA-Code

Einen Stream extrahieren

python oledump.py -s A3 -v yourExcelFile.xlsm > Module1.vba

Dies gibt den Code aus, der in der Datei A3 Strom nach Module1.vba .

Ich kombiniere dies normalerweise mit einer Schleife, um alle Dateien in einen Ordner zu extrahieren. Dieses schnelle PowerShell-Skript extrahiert alle Streams in den meisten Dateien:

New-Item -ItemType Directory "Output"

# just hardcode the highest stream outputted by oledump.py -v
$max = 5 
for ($i = 1; $i -le $max; $i++) {
    python oledump.py -s "A$i" -v yourExcelFile.xlsm > ".\Output\A$i"
}

Beachten Sie, dass damit nur von Menschen lesbare Dateien extrahiert werden können.

2voto

Edwin van der V Punkte 238

Für Excel 2016 64-Bit auf einem Windows 10-Rechner habe ich einen Hex-Editor verwendet, um das Kennwort einer geschützten XLA-Datei ändern zu können (ich habe dies nicht für andere Erweiterungen getestet). Tipp: erstellen Sie vorher ein Backup.

Die Schritte, die ich unternommen habe:

  1. Öffnen Sie die vba in einem Hex-Editor (z. B. XVI)
  2. Suche auf dieser DPB
  3. DPB in etwas anderes ändern, z. B. DPX
  4. Sparen Sie sich das!
  5. Öffnen Sie die .xla-Datei erneut. Es wird eine Fehlermeldung angezeigt, fahren Sie einfach fort.
  6. Sie können nun das Kennwort der .xla-Datei ändern, indem Sie die Eigenschaften öffnen und auf die Registerkarte Kennwort gehen.

Ich hoffe, das hat einigen von Ihnen geholfen!

1voto

Grez Punkte 121

Wenn Sie arbeiten in Java Sie können versuchen VBAMacroExtractor . Nach dem Extrahieren von VBA-Skripten aus .xlsm Ich habe ihr Passwort im Klartext gefunden.

0voto

Developer33 Punkte 97

Die Erweiterung Ihrer Excel-Datei ändert sich in xml. Und öffnen Sie sie in Notepad. Passworttext in der Xml-Datei finden.

sehen Sie die untere Zeile;

Sheets("Sheet1").Unprotect Password:="blabla"

(Entschuldigung für mein schlechtes Englisch)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X