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.