Blattschutz aufheben

Hallo Experten,

das untenstehende Skript setzt das Passwort des Blattschutzes auf „NULL“. Es funktioniert folgendermaßen. Es geht einfach alle möglichen Zeichenfolgen durch. Nach dem Durchlauf aller For-Schleifen, ist der Wert des Passwortes „NULL“. Was auch logisch ist.
Habe dieses Skript auf verschiedenen Seiten gefunden und keiner weiss, wer das geschrieben hat, dh. ich auch nicht. Also bitte ich um verständnis, dieses auch weiter zu verwenden.

Code:

Sub PW_löschen()
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
ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & _
Chr(n) & Chr(o) & Chr§ & Chr(q) & Chr® & 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
End Sub

Nun zu meiner Frage. Ist es möglich dieses Skript so zu modifizieren, das in einer MessageBox der Wert zurückgegeben wird, welches das Passwort nun ist. Ich für mich, habe echt keine Ahnung.

Bitte um Hilfe und Vielen Dank im Vorraus.

Gruß,
Sebastian

Hi Sebastian,

muß Dich enttäuschen, aber das Programm ist leider „Bullshit“
Ich meine: auch mit den RICHTIGEN ASCII Codes würde die ganze Sache nicht funktionieren…

Nur kurz als Überschlag: Würde man ein 5-stelliges Passwort mit ausschließlich Großbuchstaben benutzen, so hätte man schon über 11 Mio Möglichkeiten. Und bei der rasenden Geschwindigkeiten, wie die Makros ablaufen… Mhhh

Ciao, Joachim.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo.

Nun zu meiner Frage. Ist es möglich dieses Skript so zu
modifizieren, das in einer MessageBox der Wert zurückgegeben
wird, welches das Passwort nun ist. Ich für mich, habe echt
keine Ahnung.

Das ginge mit

MsgBox Chr$(i)&Chr$(j) ...

Putzigerweise werden, bis auf t, aber nur die Zeichen „A“ und „B“ ausprobiert.
t dagegen läuft von blank bis ~ alle Zeichen durch. Hat das Passwort also in den ersten 11 Stellen einen anderen Wert als „A“ oder „B“, dann hast Du gelitten. Um „alles“ zu erschlagen, müssten alle Schleifen auf „FOR rums=32 TO 126“ gesetzt werden. Das ergäbe bei 12 Stellen (95^12) Möglichkeiten (Durchläufe). 540.360.087.662.636.962.890.625 = 540 Trillionen Durchläufe werden eine gewisse Zeit zum Durchlaufen brauchen. Das Programm ist also schlicht unbrauchbar - nicht, weil es nicht funktioniert, sondern weil es nicht in absehbarer Zeit terminiert.

Gruß Eillicht zu Vensre

Nachtrag : Feldversuchsergebnis
Ich habe einem unserer unterbeschäftigten Numbercrunchers (Laborrechner, nicht gerade lahm) die Aufgabe gegeben, sechs (nur sechs!) Stellen durchzufornexten. Also 95^6 Durchläufe. Start 13:30, abgebrochen 13:56 ohne Ergebnis. Bei 95^4 Durchläufen kommt er nach 1 Sekunde zurück, 95^3 kommt in Quasi-Nullzeit. 95^5 benötigte soeben 1 Minute und 3 Sekunden.

Wenn man nur eine lineare Zunahme der benötigten Rechnerzeit annimmt (vermutlich wächst diese exponentiell!), kommt man bei einem 12-stelligen Passwort auf (95^7)*63 Sekunden. Das ergibt eine Rechenzeit von lediglich 139.508.021,5 Millionen Jahren, was nicht mehr wirklich als befriedigendes Antwortzeitverhalten einzustufen ist.

Gruß Eillicht zu Vensre

Nun zu meiner Frage. Ist es möglich dieses Skript so zu
modifizieren, das in einer MessageBox der Wert zurückgegeben
wird, welches das Passwort nun ist. Ich für mich, habe echt
keine Ahnung.

Hi Sebastian,
die Vorredner irren ein wenig.
Der Code hebt den Passwortschutz auf. Insofern gibt es kein Passwort was man anzeigen könnte. Wenn du nun weiter das alte und auch gleichzeitig ein neues Passwort benutzen willst:
Getestet mit XL97.

Sub PW\_löschen()
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
ActiveSheet.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)
If ActiveSheet.ProtectContents = False Then
 ActiveSheet.Protect Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(n) & Chr(o) & Chr(p) & Chr(q) & Chr(r) & Chr(s) & Chr(t)
 MsgBox Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(n) & Chr(o) & Chr(p) & Chr(q) & Chr(r) & Chr(s) & Chr(t)
 Exit Sub
End If
Next t
Next s
Next r
Next q
Next p
Next o
Next n
Next m
Next l
Next k
Next j
Next i
End Sub

Gruß
Reinhard

Hallo Reinhard,

freue mich, dass du mir wieder geantwortet hast.

Vielen Dank. Schade, dass es keine Möglichkeit gibt, das Passwort, dass im Mom. gesetzt ist, anzeigen zu können. Jedoch erfüllt, die Sub() zum. die Anforderung (Blattschutz entfernen).

Weiters bedanke ich mich bei allen, die sich bemüht haben, mir eine Lösung für mein Problem zu finden.

Hoffe man hört wieder bald von einander.

Gruß und schönen Abend.

Sebastian

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Eillicht zu Vensre.

Vielen Dank, dass du dich so bemüht hast und sogar die Subs() getestet hast. Leider gibt es nach Angaben der anderen Benutzer (wie auch dir) keine Lösung für mein Problem.

Wünsche einen schönen Abend.

Bis dann,

Sebastian

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Vielen Dank. Schade, dass es keine Möglichkeit gibt, das
Passwort, dass im Mom. gesetzt ist, anzeigen zu können. Jedoch
erfüllt, die Sub() zum. die Anforderung (Blattschutz
entfernen).

Hi Sebastian,
mag sein dass es kommerzielle Software gibt die das Passwort auslesen kann, mit Sicherheit weiß das MS und damit der CIA.
Ansonsten kenne ich nur diese Brute Force Methode und dann noch nen 3-4 Zeiler der halt sekundenschnell das Passwort liquidiert.
Meine Versuche, ein einfaches Passwort, also nur einen Buchstaben zu setzen und dann in einem Editor zu schauen was denn da wo geändert wurde, führten zu nix.
Gruß
Reinhard

Hallo.

die Vorredner irren ein wenig.
Der Code hebt den Passwortschutz auf. Insofern gibt es kein
Passwort was man anzeigen könnte.

Natürlich nicht. Dafür müsste man selbst verständlich den Schutzzustand jeweils nach dem Ausprobieren lesen und entsprechend entscheiden, bzw. nach Änderung dieses Zustandes die entsprechende MsgBox anzeigen. Da verknoff ich mir nur, weil der Code sowieso bis zum Jüngsten Tag läuft …

Gruß Eillicht zu Vensre

Hallo Reinhard,

*hehe* kA, jemand wird es bestimmt können.

Hoffe in „ferner“ Zukunft ist was brauchbares zu finden oder zu entwickeln.

Gruß,
Sebastian

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]