Clever-Excel-Forum

Normale Version: Passwort von Arbeitsmappe entfernen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Hallo zusammen,
 
ich habe eine Datei mit einer durch ein Passwort geschützten Arbeitsmappe.
Da diese Datei nicht von mir ist kenne ich logischerweise das Passwort leider nicht.
Um diese Datei bearbeiten zu können muss das Passwort entfernt werden.
Im Internet habe ich die Möglichkeit gefunden das Passwort über ein Makro entfernen zu lassen:
 
On Error Resume Next
For i = 65 To 66: For j = 65 To 66
For k = 65 To 66: For l = 65 To 66
For m = 65 To 66: For n = 65 To 66
For o = 65 To 66: For p = 65 To 66
For q = 65 To 66: For r = 65 To 66
For s = 65 To 66: For t = 32 To 126
ActiveWorkbook.Unprotect Chr(i) & _
Chr(j) & Chr(k) & Chr(l) & _
Chr(m) & Chr(n) & Chr(o) & _
Chr(p) & Chr(q) & Chr(r) & _
Chr(s) & Chr(t)
Next t: Next s: Next r: Next q
Next p: Next o: Next n: Next m
Next l: Next k: Next j: Next i
MsgBox "Arbeitsmappen-Schutz abgeschaltet"
End Sub
 
Nachdem dieses dann ausgeführt wird, zeigt meine Datei relativ schnell „Keine Rückmeldung“ an.
Logischerweise behält die Mappe dadurch ihren Schutz.
 
Kann mir hierzu jemand helfen?
 
Schöne Grüße

26865

(15.02.2023, 13:33)a.ruesche schrieb: [ -> ]Da diese Datei nicht von mir ist
… wird dir auch keiner dabei helfen, das Passwort zu hacken. Der Ersteller wird schon seinen Grund gehabt haben, das Passwort zu setzen.
Hallo,

der von Dir beschriebene Code entfernt kein Passwort, das beim Öffnen der Datei eingegeben werden muss!

Bei neueren Excel-Versionen funktioniert auch dieser Code nicht mehr wofür er mal gedacht war. ;)
(15.02.2023, 13:38)EarlFred schrieb: [ -> ]… wird dir auch keiner dabei helfen, das Passwort zu hacken. Der Ersteller wird schon seinen Grund gehabt haben, das Passwort zu setzen.

Danke für diese tolle und und vor allem hilfreiche Antwort ohne zu wissen was die Datei überhaupt beinhaltet.
Welcher Schutz ist denn gemeint? Blattschutz, Arbeitsmappenschutz, Öffnen-Passwort, ...?
Das Passwort für die Datei habe ich. 
Allerdings muss ich den Mappenschutz entfernen um die Datei bearbeiten zu können.

Arbeitsmappenschutz

(15.02.2023, 13:45)Der Steuerfuzzi schrieb: [ -> ]Welcher Schutz ist denn gemeint? Blattschutz, Arbeitsmappenschutz, Öffnen-Passwort, ...?

Kannst du mir zufällig helfen wie ich das Passwort der Arbeitsmappe entfernen kann? Wink
Frag Google mal zu dem Thema im Zusammenhang mit 7-zip, Giga.de und Chip.de haben da ganz interessante Artikel dazu.

Mehr Hilfe wirst du aber von mir leider nicht bekommen ...
Hallo,

damit Du wenigstens verstehst, warum der von Dir gepostete Code nicht sinnvoll ist, versuche ich Dein Verständnis dafür zu sensibilisieren. Das ist eine sehr rudimentäre Brute Force Attacke. Der Code prüft lediglich 194.560 Zeichenkombinationen, einer 12-stelligen Zeichenkombination. Dabei bestehen die ersten 11 Zeichen jeweils entweder aus einem A oder einem B (also ausschließlich die Großschreibweise). Zeichen 12 ist eines von 95 Symbolen zwischen den ASCII Codes 32, was dem Leerzeichen entspricht und 126, was der Tilde (~) entspricht.

Diese Parameter ergeben sich aus den 12 ineinander verschachtelten Schleifen. Die 12 Schleifen geben die fixe Anzahl der geprüften Symbole vor. Außer der ganz inneren Schleife, die die Zählervariable t hat, laufen alle Schleifen nur die Werte 65 und 66 durch. Mit jeder Schleife verdoppelt sich also der Aufwand. 2*2*2*2*2*2*2* 2*2*2*2*2 = 2^11 = 2.048 Durchläufe für 11er-Kombinationen aus A und B. Die innere Schleife läuft von 32 bis 126, also 126-32+1 = 95 Mal durch. Da sie innen liegt, macht sie das aber 2.048 mal. So kommt man auf 2.048*95 = 194.560 Durchläufe.

So sieht der Code aus, wenn er "richtig" eingerückt ist. Da erkennst Du auch sofort die Verschachtelung der Schleifen:
(Der läuft so auch auf Deinem Rechner)
Code:
Sub BruteForce()

  z1 = Timer
  On Error Resume Next
  For i = 65 To 66
    For j = 65 To 66
      For k = 65 To 66
        For l = 65 To 66
          For m = 65 To 66
            For n = 65 To 66
              For o = 65 To 66
                For p = 65 To 66
                  For q = 65 To 66
                    For r = 65 To 66
                      For s = 65 To 66
                        For t = 32 To 126
'                          ActiveWorkbook.Unprotect Chr(i) & _
'                          Chr(j) & Chr(k) & Chr(l) & _
'                          Chr(m) & Chr(n) & Chr(o) & _
'                          Chr(p) & Chr(q) & Chr(r) & _
'                          Chr(s) & Chr(t)
                        Next t
                      Next s
                    Next r
                  Next q
                Next p
              Next o
            Next n
          Next m
        Next l
      Next k
    Next j
  Next i
  'MsgBox "Arbeitsmappen-Schutz abgeschaltet"
  MsgBox Timer - z1
End Sub

Auf meinem Rechner dauert die Ausführung des Codes mit auskommentiertem ActiveWorkbook.Unprotect Teil 0,016 Sekunden, denn knapp 200.000 Schleifendurchläufe sind nicht viel. Also kommt schnell die Idee auf, einfach alle sogenannten druckbaren Zeichen pro Schleife durchzugehen. Also alle Zeichen, die in einem Passwort wirklich verwendet werden können. Bleiben wir der Einfachheit halber bei den 95 oben genannten Zeichen von 32 bis 126. Wir stoßen jetzt direkt auf das nächste Problem: Wie lang ist das Passwort?

Ich kürze es etwas ab, weil ich die ganzen Rechnungen nicht hier hinschreiben möchte. Aber bleiben wir bei der 12 stelligen Zeichenkette und gehen davon aus, wir wissen, dass das die länge der gesuchten Zeichenkette ist. Dann haben wir 12 Schleifen die jeweils 95 Durchläufe haben. Klingt erstmal nicht viel. Aber wie oben die ersten 11 Schleifen den Aufwand jeweils nur verdoppeln, weil sie nur 2 Zeichen prüfen, verursacht hier jede Schleife einen Aufwand um das 95-fache. Das sind dann 95^12 = 540.360.087.662.637.000.000.000 Durchläufe.

Rechnen wir den Zeitaufwand basierend auf unserem Versuch mit dem vorhandenen Code hoch, dauert das dann im Worst Case etwa 1,4 Milliarden Jahre, die gesuchte Kombination zu finden. Ist vielleicht etwas lange Wink Das ist übrigens eine gute Veranschaulichung, warum verschachtelte Schleifen oft ein totaler Laufzeitkiller sind.

Wie die anderen auch, sage ich nix weiter dazu, wie ein Passwortschutz in Excel umgangen werden kann. Das hat den Grund, dass niemand von uns weiß, ob Du wirklich an die Daten ran darfst. Diese Haltung ist in allen gängigen Foren Konsens.

Viele Grüße,

Zwenn
Vielleicht nochmal zum Hintergrund für den Code, der gepostet wurde.

Die Passwörter für Blatt- und Arbeitsmappenschutz werden in Excel als 16Bit-Haswerte ohne Salt gespeichert. Egal wie lange das Passwort ist, es ist immer ein 16Bit-Hashwert. Durch diese geringe Länge des Hash-Wertes ergeben sich lediglich 65535 verschiedene Möglichkeiten. Das bedeutet, dass es sehr viele Kollisionen gibt, d.h. mehrere Passwörter führen zum gleichen Hashwert. Dies macht sich der Code zunutze, um eines davon zu erraten. Durch geschickte Verwendung der Zeichen, die der Code ausprobiert, werden alle möglichen Hashwerte mit einer relativ geringen Anzahl an Versuchen abgedeckt. Das funktioniert aber nur bis Excel 2010.

Ab Excel 2013 werden die Hashwerte als SHA-512 mit Salt gespeichert, so dass dieses Makro schlicht nicht mehr funktionieren kann ...
Ah, interessant. Das wusste ich bisher nicht. Danke Smile
Seiten: 1 2 3