Remover senha de um documento do Excel

10

Estou fornecendo suporte interno e um dos nossos usuários conseguiu colocar uma senha em um arquivo do Excel por acidente. Fiz as verificações adequadas para garantir que o usuário tivesse acesso ao documento e agora deseja saber qual a recomendação para remover uma senha de um documento do Excel.

Para que vale a pena, a senha aparece após o Excel abrir, mas antes que você possa ver quaisquer dados no Excel.

    
por joe 21.10.2009 / 11:26

4 respostas

11

A Elcomsoft cria um programa bastante útil chamado Recuperação Avançada de Senha do Office , que pode fazer o trabalho melhor do que qualquer outra usado.

Provavelmente vale a pena colocar um valor nos dados que você está tentando recuperar antes de tentar isso, às vezes é mais barato deixar o usuário recriar o documento a partir do zero (e ensina-lhes uma lição valiosa ;-)). O AOPR não é gratuito, e as senhas às vezes só podem ser resolvidas pela força bruta (tentando todas as combinações possíveis de letras), o que pode levar muito tempo.

    
por 21.10.2009 / 20:26
1

É algo como isto, o Removedor de senhas do Excel XLA add-in, o que você está depois?

EDIT: Pensando nisso, talvez não - isso é usado para remover a senha de planilhas / pastas de trabalho protegidas.

    
por 21.10.2009 / 12:07
1

Se você souber qual é a senha, vá em frente e abra o documento do Excel. Em seguida, clique em Arquivo > Salvar como. À esquerda do botão Salvar, há uma pequena lista chamada Ferramentas. Clique nele e, em seguida, clique em Opções Gerais. Exclua as entradas de senha e clique em OK. Salve o documento.

Se você não sabe qual é a senha, pode usar o VBA para encontrá-la. Se eu tivesse que adivinhar, seu usuário provavelmente não usava uma senha super strong, então poderíamos usar um método de força bruta para encontrá-lo. O código abaixo é difícil, mas me ajudou a encontrar uma senha fraca e perdida em vários documentos dos meus usuários. Verifica senhas de qualquer tamanho com os caracteres ASCII de 1 a z. Você poderia chamá-lo a partir da janela imediata e esperar vários minutos da seguinte forma:

? GetPassword("D:\mywkbk.xlsx")

-

Public Function GetPassword(ByRef sFileName As String) As String
On Error Resume Next
    Dim pw As String
    pw = ""
    Do
        VBA.Err.Clear
        pw = GenerateNextPassword(pw)            
        Application.Workbooks.Open sFileName, False, True, , pw, pw
        VBA.DoEvents
    Loop While VBA.Err.Number = 5408
    GetPassword = pw
End Function

Public Function GenerateNextPassword(ByRef sCurrentPassword As String) As String
    Const MAX_CHAR = 122
    Const MIN_CHAR = 49

    Dim sCurrentPasswordMax As String
    Dim sNewPassword As String
    Dim i As Long

    sCurrentPasswordMax = String(Len(sCurrentPassword), Chr(MAX_CHAR))
    If sCurrentPassword = sCurrentPasswordMax Then
        'do an increment that changes the length
        sNewPassword = String(Len(sCurrentPassword) + 1, Chr(MIN_CHAR))
        Debug.Print Now(); ": "; sNewPassword
    ElseIf Asc(Right(sCurrentPassword, 1)) = MAX_CHAR Then
        'do an increment that changes multiple characters
        sNewPassword = Left(sCurrentPassword, Len(sCurrentPassword) - 1) & Chr(MIN_CHAR)
        For i = Len(sCurrentPassword) - 1 To 1 Step -1
            sNewPassword = Left(sNewPassword, i - 1) & Chr(Asc(Mid(sNewPassword, i, 1)) + 1) & Mid(sNewPassword, i + 1)
            If Asc(Mid(sCurrentPassword, i, 1)) <> MAX_CHAR Then
                Exit For
            End If
        Next i
    Else
        'do an increment on the rightmost character
        sNewPassword = Left(sCurrentPassword, Len(sCurrentPassword) - 1) & Chr(Asc(Right(sCurrentPassword, 1)) + 1)
    End If

    GenerateNextPassword = sNewPassword
End Function
    
por 29.12.2016 / 17:28
0

A abordagem Hook demonstrada neste artigo SO funciona TODAS as vezes.

link

Nenhum editor Hex, nenhum download, nenhum instalador. Apenas uma solução pura do VBA.

    
por 26.07.2017 / 08:45