Eliminar contraseña de un documento de Excel

11

Estoy proporcionando soporte interno y uno de nuestros usuarios ha logrado poner una contraseña en un archivo de Excel por accidente, he realizado las verificaciones adecuadas para asegurarme de que el usuario debe tener acceso al documento y ahora quiere saber qué recomendación para eliminar una contraseña de un documento de Excel.

Por lo que vale, la contraseña aparece después de que se abre Excel, pero antes de que pueda ver los datos en Excel.

joe
fuente
Um, estás un poco lleno. A menos que desee hacer cosas complicadas de criptografía ... (No conozco ningún programa para hacer esto en .xls). No hay una forma normal y automatizada de hacer esto en Excel: eso podría derrotar el punto de tener una contraseña en primer lugar ... su única esperanza sería un programa especial de descifrado de cifrado para tales archivos (que puede ser difícil de obtener encontrar). Quizás Google decrypt xlso algo similar.
Samuel Jaeschke
El archivo Excel .xlsx es en realidad solo un archivo zip. descomprima y siga instrucciones como estas. he intentado en el pasado no estoy seguro si funciona si todo el archivo está protegido con contraseña nileshkumar83.blogspot.com/2012/05/…
Joop
1
@SamuelJaeschke El método de enlace en stackoverflow.com/a/27508116/5757159 funciona todo el tiempo. No se requieren grietas.
ThunderFrame

Respuestas:

11

Elcomsoft crea un programa bastante útil llamado Advanced Office Password Recovery que puede hacer el trabajo mejor que cualquier otra cosa que haya usado.

Probablemente valga la pena poner un valor a los datos que está tratando de recuperar antes de intentar esto, a veces es menos costoso dejar que el usuario vuelva a crear el documento desde cero (y les enseña una valiosa lección ;-)). AOPR no es gratuito, y las contraseñas a veces solo se pueden resolver por la fuerza bruta (probando todas las combinaciones posibles de letras), lo que puede llevar mucho tiempo.

Mike1980
fuente
Los programas de Elmcomsoft son buenos, he tenido éxito con esto en el pasado al abrir un archivo de Excel que me enviaron sin la contraseña. Obtenga una lista de palabras decente y pruébela primero (la que se incluye en Caín y Abel es una buena de 3 MB). Si eso falla, intente con la fuerza bruta, pero si es una contraseña
segura
No soy fanático de recomendar software comercial en este sitio, pero en este caso es, con mucho, la mejor opción. Recomendado. +1.
agtoever
1

Es algo como esto, el complemento Excel Password Remover XLA, ¿qué buscas?

EDITAR: Pensando en ello, tal vez no, esto se usa para eliminar la contraseña de las hojas de trabajo / libros de trabajo protegidos.

Prima
fuente
si éticamente podemos resolver usando esta herramienta?
Joe
1

Si sabe cuál es la contraseña, continúe y abra el documento de Excel. Luego haga clic en Archivo> Guardar como. A la izquierda del botón Guardar hay un pequeño menú desplegable etiquetado como Herramientas. Haga clic en eso y luego haga clic en Opciones generales. Elimine las entradas de contraseña allí y haga clic en Aceptar. Guarda el documento.

Si no sabe cuál es la contraseña, puede usar VBA para encontrarla. Si tuviera que adivinar, su usuario probablemente no usó una contraseña súper segura, por lo que podríamos usar un método de tipo de fuerza bruta para encontrarla. El siguiente código es aproximado, pero me ha ayudado a encontrar una contraseña débil y perdida en varios de los documentos de mis usuarios. Comprueba las contraseñas de cualquier longitud con los caracteres ASCII de 1 a z. Lo llamaría desde la ventana Inmediato y esperaría varios minutos así:

? 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
fuente
Está implícito que la contraseña se ha perdido y olvidado, por lo que su primer párrafo es irrelevante. Si encuentra que su rutina VBA elimina una contraseña desconocida, infórmenos, pero sospecho que es imposible.
Scott
1
Después de volver a leer el OP, argumentaría firmemente que no está claro que se haya perdido la contraseña, por lo que mantengo ese primer párrafo allí. Actualicé la respuesta con algún código de VBA que podría usarse para encontrar la contraseña en unos minutos o más si no se conoce la contraseña.
Bobort
0

El enfoque Hook demostrado en este artículo SO funciona CADA vez.

/programming//a/27508116/5757159

Sin editores hexadecimales, sin descargas, sin instaladores. Solo una solución VBA pura.

ThunderFrame
fuente