10

Я предоставляю внутреннюю поддержку, и один из наших пользователей случайно вставил пароль в файл Excel, я сделал правильные проверки, чтобы убедиться, что у пользователя должен быть доступ к документу, и теперь он хочет знать, что рекомендация по удалению пароля из документа Excel.

Для чего стоит пароль появляется после открытия Excel, но прежде чем вы сможете увидеть какие-либо данные в Excel.

4 ответа4

11

Elcomsoft делает довольно полезную программу под названием Advanced Office Password Recovery, которая может выполнять работу лучше, чем все, что я использовал.

Вероятно, стоит оценить ценность данных, которые вы пытаетесь восстановить, прежде чем пытаться это сделать, иногда дешевле позволить пользователю заново создать документ с нуля (и преподает им ценный урок ;-)). AOPR не бесплатен, и пароли иногда могут быть получены только грубой силой (пробуя любую возможную комбинацию букв), что может занять очень много времени.

1

Что-то вроде этого, надстройка Excel Password Remover XLA, что вы ищете?

РЕДАКТИРОВАТЬ: Думая об этом, может быть, нет - это используется для удаления пароля из защищенных рабочих листов / книг.

1

Если вы знаете, что такое пароль, откройте документ Excel. Затем нажмите Файл> Сохранить как. Слева от кнопки «Сохранить» находится маленький выпадающий список «Инструменты». Нажмите на это, а затем нажмите на Общие параметры. Удалите введенные там пароли и нажмите ОК. Сохраните документ.

Если вы не знаете, что такое пароль, вы можете использовать VBA, чтобы найти его. Если бы мне пришлось угадывать, ваш пользователь, вероятно, не использовал сверхнадежный пароль, поэтому мы могли бы использовать метод с использованием грубой силы, чтобы найти его. Приведенный ниже код является грубым, но он помог мне найти слабый, потерянный пароль в нескольких документах моих пользователей. Он проверяет пароли любой длины с символами ASCII от 1 до z. Вы бы позвонили из окна «Немедленно» и подождали несколько минут так:

? 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
0

Подход Hook, продемонстрированный в этой статье, работает КАЖДЫЙ раз.

https://stackoverflow.com/a/27508116/5757159

Нет редакторов Hex, нет загрузок, нет установщиков. Просто чистое решение VBA.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .