Il metodo funziona nella versione Excel 2010 e precedenti del programma, ma non in Excel 2013.
Per ulteriori riferimenti rimando alla sorgente di queste informazioni:
https://uknowit.uwgb.edu/page.php?id=28850
Premere ALT+F11 per andare in Visual Basic. Nella finestra di progetto a sinistra, selezionare la voce VBAProject corrispondente al vostro file. A questo punto premere sul menu Inserisci\Modulo.
Si aprirà uno spazio bianco a destra nel quale immetere il codice per sbloccare il foglio. Senza effettuare modifiche, copiare il codice seguente
Sub PasswordBreaker()
'Breaks worksheet password protection.
Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim i4 As Integer, i5 As Integer, i6 As Integer
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 i1 = 65 To 66
For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
If ActiveSheet.ProtectContents = False Then
MsgBox "One usable password is " & Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
Exit Sub
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
End Sub
'Breaks worksheet password protection.
Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim i4 As Integer, i5 As Integer, i6 As Integer
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 i1 = 65 To 66
For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
If ActiveSheet.ProtectContents = False Then
MsgBox "One usable password is " & Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
Exit Sub
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
End Sub
A questo punto premere Esegui, oppure il tasto F5 della tastiera. Una finestra di dialogo ci avviserà della password che possiamo usare per sbloccare il foglio. La password andrà inserita ogni per ogni foglio eventualmente bloccato del file.
ciao, dopo aver aperto visual basic, quando seleziono vbaproject mi richiede nuovamente la password, inoltre non posso inserire un nuovo modulo perchè non è selezionabile, come tutto il resto. come fare? grazie saluti
RispondiEliminaCiao, il problema nel tuo caso è che è protetto (anche) il progetto di VBA sottostante.
RispondiEliminaDa una rapida occhiata su google, vedo che la soluzione più gettonata è quella di modificare il file con un editor esadecimale, un programma grazie al quale si vanno a riscrivere i singoli byte in corrispondenza della posizione che memorizza la password del progetto di VBA.
Non ho avuto ancora modo di provare se funziona e su quali versioni di Office lo si può fare, comunque puoi provare a seguire le guide di questi articoli:
http://www.dragmar.com/public/?p=140
http://www.iwolm.com/blog/come-craccare-la-password-vba-di-un-progetto-excel/
http://cicciotuenno.blogspot.it/2011/04/rimuovere-la-password-dai-progetti-vba.html
Come editor esadecimale ti consiglio XVI32.
Ciao, mi sono accorto che il codice non funziona per sbloccare una password contenente un carattere speciale (nel caso specifico _ ) mentre funziona perfettamente con numeri e maiuscole/minuscole. Avete suggerimenti?
RispondiEliminaGrazie
Ciao, purtroppo non ho modo di testare un codice modificato, ma suppongo che la soluzione sia raggiungibile cambiando in qualche modo i numeri di partenza e fine dei vari cicli For...To...Next, giacché il tentativo di rimozione password avviene sulla riga che reca "ActiveSheet.Unprotect Chr(i) & ... & Chr(n)". Quei vari Chr() che ci sono trasformano il valore della variabile ciclata in un carattere alfanumerico specifico, mentre l'operatore "&" unisce i vari caratteri in una stringa unica. In buona sostanza il ciclo testa in modalità brute force tutte le combinazioni possibili finché non trova la password. Va da sé che se i limiti imposti per i cicli escludono i codici che rappresentano (in ASCII immagino) i caratteri speciali, questi non verranno testati e dunque i files protetti da password che li usano non sono sbloccati.
Elimina