Ich wurde gebeten, einige Excel 2003-Makros zu aktualisieren, aber die VBA-Projekte sind kennwortgeschützt, und es scheint, dass es an Dokumentation mangelt ... niemand kennt die Kennwörter.
Gibt es eine Möglichkeit, das Kennwort in einem VBA-Projekt zu entfernen oder zu knacken?
Antworten:
Sie können diesen direkten
VBA
Ansatz ausprobieren, für den keine HEX-Bearbeitung erforderlich ist. Es funktioniert für alle Dateien (* .xls, * .xlsm, * .xlam ...).Getestet und arbeitet an:
Suchen Sie nach einer 64-Bit-Version? Siehe diese Antwort
Wie es funktioniert
Ich werde mein Bestes geben, um zu erklären, wie es funktioniert - bitte entschuldigen Sie mein Englisch.
Den Code verwenden
Bitte sichern Sie zuerst Ihre Dateien!
Erstellen Sie eine neue XLSM-Datei und speichern Sie diesen Code in Modul1
code credited to Siwtom (nick name), a Vietnamese developer
Fügen Sie diesen Code unter den obigen Code in Modul 1 ein und führen Sie ihn aus
Kommen Sie zurück zu Ihren VBA-Projekten und genießen Sie.
quelle
Ja, solange Sie eine
.xls
Format-Tabelle verwenden (die Standardeinstellung für Excel bis 2003). Ab Excel 2007 ist die Standardeinstellung.xlsx
ein ziemlich sicheres Format, und diese Methode funktioniert nicht.Wie Treb sagt, ist es ein einfacher Vergleich. Eine Methode besteht darin, den Kennworteintrag in der Datei einfach mit einem Hex-Editor auszutauschen (siehe Hex-Editoren für Windows ). Schritt für Schritt Beispiel:
Kopieren Sie die Zeilen beginnend mit den folgenden Tasten:
ERSTE SICHERUNG der Excel-Datei, für die Sie das VBA-Kennwort nicht kennen, öffnen Sie sie dann mit Ihrem Hex-Editor und fügen Sie die oben kopierten Zeilen aus der Dummy-Datei ein.
Wenn Sie mit Excel 2007 oder 2010 arbeiten müssen, gibt es unten einige andere Antworten, die hilfreich sein können, insbesondere diese: 1 , 2 , 3 .
EDIT Feb 2015: Für eine andere Methode, die sehr vielversprechend aussieht, schauen Sie sich diese neue Antwort von Thc Thanh Nguyễn an.
quelle
CMG...
Zeichenfolge länger als die ursprüngliche ist.Ich habe auf der fantastischen Antwort von Thc Thanh Nguyễn aufgebaut, damit diese Methode mit 64-Bit-Versionen von Excel funktioniert. Ich verwende Excel 2010 64-Bit unter 64-Bit Windows 7.
Erstellen Sie eine neue XLSM-Datei und speichern Sie diesen Code in Modul1
Fügen Sie diesen Code in Modul 2 ein und führen Sie ihn aus
HAFTUNGSAUSSCHLUSS Das hat bei mir funktioniert und ich habe es hier dokumentiert, in der Hoffnung, dass es jemandem hilft. Ich habe es nicht vollständig getestet . Bitte speichern Sie alle geöffneten Dateien, bevor Sie mit dieser Option fortfahren.
quelle
Es gibt eine andere (etwas einfachere) Lösung ohne Größenprobleme. Ich habe diesen Ansatz heute verwendet (in einer 2003 XLS-Datei mit Excel 2007) und war erfolgreich.
DPB=...
TeilDPB=...
Zeichenfolge inDPx=...
* HINWEIS: Stellen Sie sicher, dass Sie das Kennwort in einen neuen Wert geändert haben. Andernfalls werden beim nächsten Öffnen der Tabelle in Excel Fehler gemeldet (unerwarteter Fehler). Wenn Sie dann auf die Liste der VBA-Module zugreifen, werden die Namen der angezeigt Quellmodule erhalten jedoch einen weiteren Fehler beim Versuch, Formulare / Code / etc. zu öffnen. Um dies zu beheben, kehren Sie zu den VBA-Projekteigenschaften zurück und setzen Sie das Kennwort auf einen neuen Wert. Speichern Sie das Excel-Dokument und öffnen Sie es erneut.
quelle
Colin Pickard hat eine ausgezeichnete Antwort, aber es gibt eine "Vorsicht". Es gibt Fälle (ich habe die Ursache noch nicht herausgefunden), in denen sich die Gesamtlänge des Eintrags "CMG = ........ GC = ...." in der Datei von einer Excel-Datei zur unterscheidet Nächster. In einigen Fällen beträgt dieser Eintrag 137 Byte, in anderen 143 Byte. Die Länge von 137 Byte ist ungerade. Wenn dies passiert, wenn Sie Ihre Datei mit dem Kennwort '1234' erstellen, erstellen Sie einfach eine weitere Datei, und sie sollte auf die Länge von 143 Byte springen.
Wenn Sie versuchen, die falsche Anzahl von Bytes in die Datei einzufügen, verlieren Sie Ihr VBA-Projekt, wenn Sie versuchen, die Datei mit Excel zu öffnen.
BEARBEITEN
Dies gilt nicht für Excel 2007/2010-Dateien. Das Standard-XLSX-Dateiformat ist eine ZIP-Datei, die zahlreiche Unterordner enthält, deren Formatierung, Layout, Inhalt usw. als XML-Daten gespeichert sind. Für eine ungeschützte Excel 2007-Datei können Sie einfach die XLSX-Erweiterung in ZIP ändern, dann die ZIP-Datei öffnen und alle XML-Daten durchsuchen. Es ist sehr einfach.
Wenn Sie jedoch eine Excel 2007-Datei mit einem Kennwort schützen, wird die gesamte ZIP-Datei (XLSX) tatsächlich mit RSA-Verschlüsselung verschlüsselt. Es ist nicht mehr möglich, die Erweiterung in .zip zu ändern und den Dateiinhalt zu durchsuchen.
quelle
Für einen
.xlsm
oder.dotm
Dateityp müssen Sie dies auf eine etwas andere Weise tun..xlsm
Datei in.zip
.vbaProject.bin
Datei und öffnen Sie sie in einem Hex-Editor (ich verwende HxD , es ist völlig kostenlos und leicht.)DPB
und ersetzen SieDPx
die Datei und speichern Sie sie.vbaProject.bin
Datei durch diese neue in der komprimierten Datei..xlsm
..xlsm
Datei.quelle
.zip
wenn Sie 7-Zip installiert haben. In diesem Fall können Sie einfach mit der rechten Maustaste auf die.xlsm
Datei klicken und "7-Zip -> Archiv öffnen"Wenn Sie eine Excel 2007-Datei (xlsm) haben, können Sie diese einfach als Excel 2003-Datei (xlsm) speichern und die in anderen Antworten beschriebenen Methoden verwenden.
quelle
1.
Konvertiere .xlsm in .xls2.
knacke den Code von .xls3.
konvertiere .xlsm in .xlsx4.
Setze den Code von Modulen in .xls in. xlsx und speichern Sie das als .xlsmWenn ich an der Reihe bin, basiert dies auf der hervorragenden Antwort von kaybee99, die auf der fantastischen Antwort von Thc Thanh Nguyễn basiert, damit diese Methode sowohl mit x86- als auch mit amd64-Versionen von Office funktioniert.
Um einen Überblick über die Änderungen zu erhalten, vermeiden wir Push / Ret, das auf 32-Bit-Adressen beschränkt ist, und ersetzen es durch mov / jmp reg.
Getestet und arbeitet daran
wie es funktioniert
Erstellen Sie eine neue Datei mit demselben Typ wie oben und speichern Sie diesen Code in Modul1
Fügen Sie diesen Code in Modul 2 ein und führen Sie ihn aus
quelle
Haben Sie versucht, sie einfach in OpenOffice.org zu öffnen?
Ich hatte vor einiger Zeit ein ähnliches Problem und stellte fest, dass Excel und Calc die Verschlüsselung des anderen nicht verstanden und daher direkten Zugriff auf nahezu alles ermöglichten.
Dies ist eine Weile her, und wenn das nicht nur ein Zufall von meiner Seite war, wurde es möglicherweise auch gepatcht.
quelle
Für den Fall, dass Ihr Block von
CMG="XXXX"\r\nDPB="XXXXX"\r\nGC="XXXXXX"
in Ihrer Datei "Bekanntes Passwort" kürzer ist als der vorhandene Block in der Datei "Unbekanntes Passwort", füllen Sie Ihre Hex-Zeichenfolgen mit nachgestellten Nullen auf, um die richtige Länge zu erreichen.z.B
CMG="xxxxxx"\r\nDPB="xxxxxxxx"\r\nGC="xxxxxxxxxx"
sollte in der unbekannten Passwortdatei auf gesetzt sein
CMG="XXXX00"\r\nDPB="XXXXX000"\r\nGC="XXXXXX0000"
um die Dateilänge zu erhalten.Ich habe dies auch mit .XLA-Dateien (97/2003 Format) in Office 2007 arbeiten lassen.
quelle
Ab Excel 2007 müssen Sie Ihre Dateierweiterung in .zip ändern. Im Archiv befindet sich ein Unterordner xl. Dort finden Sie vbaProject.bin. Befolgen Sie den obigen Schritt mit vbaProject.bin und speichern Sie es wieder im Archiv. Ändern Sie Ihre Erweiterung und voilà zurück! (dh folgen Sie den obigen Schritten)
quelle
VBA-Projektkennwörter für Access-, Excel-, Powerpoint- oder Word-Dokumente (
2007, 2010, 2013 or 2016
Versionen mit Erweiterungen.ACCDB .XLSM .XLTM .DOCM .DOTM .POTM .PPSM
) können problemlos entfernt werden .Es geht einfach darum, die Dateinamenerweiterung in zu
.ZIP
ändern, die Datei zu entpacken und einen einfachen Hex-Editor (wie XVI32) zu verwenden ) zu verwenden, um das vorhandene Kennwort zu "brechen", wodurch Office "verwirrt" wird und beim nächsten nach einem neuen Kennwort wird geöffnet.Eine Zusammenfassung der Schritte:
.ZIP
Erweiterung hat.ZIP
und gehe zumXL
Ordner.vbaProject.bin
und öffnen Sie es mit einem Hex-EditorDPB
zuDPX
..bin
Datei wieder in der Zip-Datei, kehren Sie zur normalen Erweiterung zurück und öffnen Sie die Datei wie gewohnt.VBA Project Properties
.Protection
Legen Sie auf der Registerkarte ein neues Kennwort fest.OK
, schließen Sie die Datei, öffnen Sie sie erneut und drücken Sie ALT + F11.Zu diesem Zeitpunkt können Sie das Kennwort bei Bedarf vollständig entfernen.
Eine vollständige Anleitung mit Schritt- für -Schritt - Video habe ich „Weg zurück , wenn“ sind auf YouTube hier .
Es ist schockierend, dass es diese Problemumgehung seit Jahren gibt und Microsoft das Problem nicht behoben hat.
quelle
Colin Pickard ist größtenteils korrekt, aber verwechseln Sie den Schutz zum Öffnen des Kennworts für die gesamte Datei nicht mit dem VBA-Kennwortschutz, der sich vollständig vom vorherigen unterscheidet und für Office 2003 und 2007 identisch ist (für Office 2007 umbenennen) die Datei in .zip und suchen Sie nach der Datei vbaProject.bin in der Zip). Technisch gesehen besteht die richtige Methode zum Bearbeiten der Datei darin, einen zusammengesetzten OLE-Dokument-Viewer wie CFX zu verwenden, um den richtigen Stream zu öffnen. Wenn Sie nur Bytes ersetzen, funktioniert der einfache alte Binäreditor natürlich.
Übrigens, wenn Sie sich über das genaue Format dieser Felder wundern, haben sie es jetzt dokumentiert:
http://msdn.microsoft.com/en-us/library/dd926151%28v=office.12%29.aspx
quelle
Wenn es sich bei der Datei um eine gültige Zip-Datei handelt (die ersten Bytes werden
50 4B
in Formaten wie verwendet.xlsm
), entpacken Sie die Datei und suchen Sie nach der Subdateixl/vbaProject.bin
. Dies ist eine CFB-Datei wie die.xls
Dateien. Befolgen Sie die Anweisungen für das XLS-Format (angewendet auf die Subdatei) und komprimieren Sie dann einfach den Inhalt.Für das XLS-Format können Sie einige der anderen Methoden in diesem Beitrag befolgen. Ich persönlich bevorzuge es, nach dem
DPB=
Block zu suchen und den Text zu ersetzenmit Leerzeichen. Dies vermeidet Probleme mit der CFB-Containergröße.
quelle
Ich habe einige der oben genannten Lösungen ausprobiert und keine davon funktioniert für mich (Excel 2007 XLSM-Datei). Dann habe ich eine andere Lösung gefunden, die sogar das Passwort abruft und nicht nur knackt.
Fügen Sie diesen Code in das Modul ein, führen Sie ihn aus und geben Sie ihm etwas Zeit. Es wird Ihr Passwort mit brutaler Gewalt wiederherstellen.
quelle
ElcomSoft stellt Advanced Office Password Breaker- und Advanced Office Password Recovery- Produkte her, die für diesen Fall gelten können, sofern das Dokument in Office 2007 oder früher erstellt wurde.
quelle
Tom - Ich habe anfangs einen Schuljungenfehler gemacht, da ich die Bytegröße nicht beobachtet habe und stattdessen von der "CMG" -Einstellung bis zum nachfolgenden Eintrag kopiert und eingefügt habe. Dies waren jedoch zwei unterschiedliche Textgrößen zwischen den beiden Dateien, und ich verlor das VBA-Projekt, genau wie Stewbob es warnte.
Bei Verwendung von HxD gibt es einen Zähler, der nachverfolgt, wie viele Dateien Sie auswählen. Kopieren Sie ab CMG, bis der Zähler 8F (hex für 143) anzeigt, und ebenso beim Einfügen in die gesperrte Datei - ich hatte am Ende der Paste die doppelte Anzahl von "...", was irgendwie seltsam aussah und sich fast anfühlte unnatürlich, aber es hat funktioniert.
Ich weiß nicht, ob es wichtig ist, aber ich habe sichergestellt, dass ich sowohl den Hex-Editor als auch Excel heruntergefahren habe, bevor ich die Datei in Excel erneut öffne. Ich musste dann die Menüs durchgehen, um den VB-Editor in den VBProject-Eigenschaften zu öffnen, und das 'neue' Passwort eingeben, um den Code zu entsperren.
Ich hoffe das hilft.
quelle
Mein Tool VbaDiff liest VBA direkt aus der Datei, sodass Sie damit geschützten VBA-Code aus den meisten Office-Dokumenten wiederherstellen können, ohne auf einen Hex-Editor zurückgreifen zu müssen.
quelle
Der Schutz ist ein einfacher Textvergleich in Excel. Laden Sie Excel in Ihren bevorzugten Debugger ( Ollydbg ist mein bevorzugtes Tool), suchen Sie den Code, der den Vergleich durchführt, und korrigieren Sie ihn so, dass immer true zurückgegeben wird. Dadurch sollten Sie auf die Makros zugreifen können.
quelle
Für Excel 2016 64-Bit auf einem Windows 10-Computer habe ich einen Hex-Editor verwendet, um das Kennwort eines geschützten xla ändern zu können (habe dies nicht für andere Erweiterungen getestet). Tipp: Erstellen Sie zuvor ein Backup.
Die Schritte, die ich unternommen habe:
Ich hoffe das hat einigen von euch geholfen!
quelle
Die Erweiterung Ihrer Excel-Datei wird in XML geändert. Und öffnen Sie es im Notizblock. Passwort Text in XML-Datei finden.
Sie sehen wie unter der Linie;
(Entschuldigung für mein schlechtes Englisch)
quelle
Wenn Sie in arbeiten
Java
, können Sie versuchenVBAMacroExtractor
. Nach dem Extrahieren von VBA-Skripten aus.xlsm
habe ich dort das Passwort im Klartext gefunden.quelle