Remover senha de um documento do Excel

11

Estou fornecendo suporte interno e um de nossos usuários conseguiu colocar uma senha em um arquivo do Excel por acidente, fiz as devidas verificações para garantir que o usuário tenha acesso ao documento e agora queira saber qual é a propriedade recomendação para remover uma senha de um documento do Excel.

Quanto vale, a senha aparece depois que o Excel é aberto, mas antes que você possa ver quaisquer dados no Excel.

Joe
fonte
Hum, você está meio empalhado. A menos que você queira fazer coisas complicadas de criptografia ... (não conheço nenhum programa para fazer isso em .xls). Não existe uma maneira normal e automatizada de fazer isso no Excel - isso meio que anularia o ponto de ter uma senha em primeiro lugar ... sua única esperança seria um programa especial de quebra de cifra para esses arquivos (o que pode ser difícil de encontrar). Talvez o Google decrypt xlsou algo semelhante.
Samuel Jaeschke
o arquivo .xlsx do Excel é na verdade apenas um arquivo zip. descompacte e siga as instruções como estas. tentei no passado não tenho certeza se funciona se o arquivo inteiro está protegido por senha. nileshkumar83.blogspot.com/2012/05/…
Joop #
1
@SamuelJaeschke O método hook em stackoverflow.com/a/27508116/5757159 funciona sempre. Não é necessário rachar.
26417 ThunderFrame

Respostas:

11

A Elcomsoft cria um programa bastante útil, chamado Advanced Office Password Recovery, que pode fazer o trabalho melhor do que qualquer outra coisa que usei.

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

Mike1980
fonte
Os programas da Elmcomsoft são bons, tive sucesso com isso no passado ao abrir um arquivo do Excel que foi enviado sem a senha. Obtenha uma lista de palavras decente e tente primeiro (a incluída em Caim e Abel é de 3 MB). Se isso falhar, dar força bruta uma tentativa, mas se é uma senha forte, você nunca entrar.
Dentrasi
Não sou fã de recomendar software comercial neste site, mas, nesse caso, é de longe a melhor escolha. Recomendado. +1.
agtoever
1

É algo assim, o suplemento Excel Password Remover XLA, o que você procura?

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

Bônus
fonte
se eticamente podemos resolver usando essa ferramenta?
21310 joe
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 suspensa Ferramentas. Clique nisso e, em seguida, clique em Opções gerais. Exclua as entradas de senha e clique em OK. Salve o documento.

Se você não souber qual é a senha, poderá usar o VBA para encontrá-la. Se eu tivesse que adivinhar, seu usuário provavelmente não usaria uma senha super forte, para que pudéssemos usar um método do tipo força bruta para encontrá-la. O código abaixo é difícil, mas me ajudou a encontrar uma senha fraca e perdida em vários documentos dos meus usuários. Ele verifica senhas de qualquer tamanho com os caracteres ASCII de 1 a z. Você poderia chamá-lo da Janela Imediata e esperar alguns minutos assim:

? 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
Bobort
fonte
Está implícito que a senha foi perdida e esquecida; portanto, seu primeiro parágrafo é irrelevante. Se você encontrar sua rotina VBA para remover uma senha desconhecida, informe-nos, mas suspeito que seja impossível.
Scott
1
Depois de reler o OP, eu argumentaria fortemente que não está claro que a senha foi perdida, por isso mantenho o primeiro parágrafo lá. Atualizei a resposta com algum código VBA que poderia ser usado para encontrar a senha dentro de alguns minutos ou mais, se a senha não for conhecida.
Bobort
0

A abordagem Hook demonstrada neste artigo da SO trabalha TODAS AS VEZES.

/programming//a/27508116/5757159

Sem editores Hex, sem downloads, sem instaladores. Apenas uma solução VBA pura.

ThunderFrame
fonte