Удалить пароль из документа Excel


11

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

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


Хм, ты вроде чучела. Если вы не хотите делать сложные криптографические вещи ... (я не знаю ни одной программы для этого на .xls). Не существует нормального, автоматизированного способа сделать это в Excel - это бы как-то победило бы необходимость иметь пароль во-первых ... ваша единственная надежда - специальная программа для взлома шифров для таких файлов (что может быть трудно находить). Может быть, Google decrypt xlsили что-то подобное.
Самуэль Яешке

Файл Excel .xlsx на самом деле просто zip-файл. распакуйте и следуйте инструкциям, подобным этим. пытался в прошлом не уверен, работает ли он, если весь файл защищен паролем, хотя. nileshkumar83.blogspot.com/2012/05/…
Joop

1
@SamuelJaeschke Метод hook на stackoverflow.com/a/27508116/5757159 работает каждый раз. Не требует взлома.
ThunderFrame

Ответы:


11

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

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


Программы Elmcomsoft хороши, в прошлом я успешно пользовался этим для открытия файла Excel, который мне отправили без пароля. Получите приличный список слов и попробуйте сначала (включенный в Cain и Abel - хороший 3MB). Если это не удается, попробуйте грубую силу, но если это
надежный

Я не фанат рекомендовать коммерческое программное обеспечение на этом сайте, но в данном случае это лучший выбор. Рекомендуемые. +1.
agtoever

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

Подразумевается, что пароль был утерян и забыт, поэтому ваш первый абзац не имеет значения. Если вы обнаружите в своей программе VBA удаление неизвестного пароля, сообщите нам об этом, но я подозреваю, что это невозможно.
Скотт

1
Перечитав ОП, я бы категорически утверждал, что не ясно, что пароль был утерян, поэтому я оставляю этот первый абзац там. Я обновил ответ с помощью некоторого кода VBA, который можно использовать для поиска пароля в течение нескольких минут или дольше, если пароль неизвестен.
Боборт

0

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

/programming//a/27508116/5757159

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.