Rdevo.com community
  Articoli 
 

Visitatori
Visitatori Correnti : 51
Membri : 0

Per visualizzare la lista degli utenti collegati alla community, devi essere un utente registrato.
Iscriviti

Iscritti
 Utenti: 17
Ultimo iscritto : marcowell
Lista iscritti

I preferiti
RemoveWat Win7 (536)
Realizzazioni grafiche e siti web (299)

Royalmotorhouse

Articoli

  

Eventi
<
Settembre
>
L M M G V S D
-- -- -- -- -- -- 01
02 03 04 05 06 07 08
09 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 -- -- -- -- -- --

Questa settimana

 
Rimuovere la password dalle protezioni di foglio e cartella in Excel
Inserito il 19 aprile 2014 alle 15:19:19 da admin.

Probabilmente il commento di Microsoft a questo articolo sarebbe:
"La password non vuole essere un mezzo di sicurezza, solo un metodo per evitare modifiche accidentali dei documenti importanti ".
Si dimostrerà che è effettivamente così!
Nella guida in linea, però, all’argomento
“Proteggere un foglio di lavoro o una cartella di lavoro con una password”, è in evidenza la nota:
“(...) Assicurarsi di scegliere una password facile da ricordare poiché, se la si dimentica, non è più possibile accedere agli elementi protetti del foglio di lavoro.”

Chi legge la guida in linea è spinto a pensare che i suoi dati saranno al sicuro se protetti con password, non solo da modifiche accidentali ma anche da quelle meno accidentali.

Fatta questa premessa, illustrerò come sia semplice rimuovere la protezione di un foglio di lavoro o una cartella di lavoro protetta con password.

 

<_div align="center" style="margin: 0cm 0cm 0pt; text-align: center; line-height: normal;">

Per impostare le protezioni a cui mi riferirò i percorsi sono:

Strumenti>Protezione>Proteggi foglio … password

Strumenti>Protezione>Proteggi cartella di lavoro … password 

Prima di mostrare il codice VBA e le modalità per eseguirlo mi preme fare alcune precisazioni:

  1. è possibile rimuovere qualsiasi password utilizzando una stringa composta da soli valori binari (0 e 1) [es. se la password è “roberto” si può rimuovere con “1011111000001”] e questa è la scoperta più significativa
  2. è possibile rimuovere la password con tale stringa e proteggere nuovamente utilizzando la medesima stringa e nessuno se ne accorgerà (chiaramente salvando le modifiche risulterete gli autori dell’ultima modifica) [es. se la password è “1011111000001” si potrà rimuovere con “roberto”]
  3. non è possibile risalire con sicurezza alla stringa utilizzata come password per proteggere il foglio o la cartella
  4. la stringa utilizzata come password e la stringa binaria non sono le uniche utilizzabili per rimuovere la protezione [es. se la password è “roberto” si può rimuovere con “1011111000001” ma anche con “0101111008” e con chissà quante altre combinazioni … altri esempi? “AAA” si rimuove con “!!a”, “aaa” con !!Q, “abc” con “! R” ].

È giunto il momento di entrare nel dettaglio e illustrare le modalità per rimuovere la password che vi siete scordati!

Iniziamo aggiungendo un modulo al progetto VBA. Per i non esperti nell’uso del Editor VBA:

1. Aprire la cartella di lavoro Excel su cui si desidera rimuovere la password

2. Aprire l’Editor VBA (Alt+F11 oppure Strumenti>Macro>Visual Basic Editor

3. Nell’Editor aggiungere un modulo (Inserisci>modulo)

4. Copiare il codice che riporto qui sotto e incollarlo nel modulo appena creato 

 

'xxxxxxxxxxxxxxxxxxx copiare da qui xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Option Explicit

Dim arr As Variant
Dim arr2(30) As Long

Sub IniziaArr2()
Dim i As Integer

arr = Array(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 _
, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, _
524288, 1048576, 2097152, 4194304, 8388608, 16777216, _
33554432, 67108864, 134217728, 268435456, 536870912, _
1073741824)
'valori da 2^0 a 2^30
For i = 0 To 30
    arr2(i) = arr(i)
Next i
End Sub

Function decbin(dec As Long) As String
Dim i As Integer, a As Integer, bin As String

bin = "0" 'nel caso dec sia = 0
For i = 30 To 0 Step -1
    If dec And arr2(i) Then
    bin = ""
        For a = i To 0 Step -1
            Select Case dec And arr2(a)
                Case 0
                    bin = bin & "0"
                Case Else
                    bin = bin & "1"
            End Select
        Next a
        Exit For
    End If
Next i
decbin = bin
End Function

Sub psw2()
Dim i As Long
Dim start As Single
Dim bin As String

Call IniziaArr2

start = Timer
On Error Resume Next
i = 0
Do
    i = i + 1
    bin = decbin(i)
    ActiveSheet.Unprotect Password:=bin
Loop While ActiveSheet.ProtectContents = True

MsgBox "La password è stata rimossa con " & _
        bin & " che è il binario di " & i & _
        Chr(10) & "il programma ha impiegato " & _
        Timer - start & " secondi"

Debug.Print bin & " " & i
End Sub


'xxxxxxxxxxxxxxxxxxx a qui xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Fatto tutto?

Bene … allora potete eseguire psw2:

dalla cartella Excel … Strumenti>Macro>Macro scegliere psw2 e premere Esegui

dal Editor VBA … premere F5 oppure Esegui>Esegui Sub/UserForm scegliere psw2 e premere Esegui

Un messaggio vi avviserà quando la protezione al vostro foglio attivo è stata rimossa.
Per rimuovere la protezione della cartella è sufficiente fare alcune sostituzioni:

ActiveSheet.Unprotect

diventa

ActiveWorkbook.Unprotect

ActiveSheet.ProtectContents
 
diventa

ActiveWorkbook.ProtectStructure

Il tempo necessario per rimuovere la protezione varia da pochi secondi a pochi minuti (nelle mie prove ho rimosso una password di 16 caratteri composta da numeri, lettere maiuscole e minuscole in poco più di 2 minuti).

 

Calendari e quote



Tecnologia

Fonte Ansa.it

Versioni

 
 © RDevo.com 
Contattaci
Realizzato con ASP-Nuke
Questa pagina è stata eseguita in 5,078125secondi.
Versione stampabile Versione stampabile