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


11

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

Що варто, пароль з'явиться після відкриття Excel, але перш ніж ви зможете побачити будь-які дані в excel.


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

Файл excel .xlsx насправді є лише поштовим файлом. розпакуйте та дотримуйтесь таких інструкцій. я намагався в минулому не впевнений, чи працює він, якщо весь файл захищений паролем. nileshkumar83.blogspot.com/2012/05/…
Joop

1
@SamuelJaeschke Метод гака на stackoverflow.com/a/27508116/5757159 працює щоразу. Потріскування не потрібно.
ThunderFrame

Відповіді:


11

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

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


Програми Elmcomsoft хороші, я раніше мав успіх з цим у відкритті файлу Excel, який мені надіслали без пароля. Отримайте гідний список слів, і спробуйте це спочатку (той, що входить до Каїна та Авеля - хороший 3 Мб). Якщо це не вдасться, спробуйте грубу силу, але якщо це надійний пароль, ви ніколи не входите.
Dentrasi

Я не прихильник рекомендувати комерційне програмне забезпечення на цьому сайті, але в цьому випадку це, безумовно, найкращий вибір. Рекомендовано +1.
agtoever

1

Щось таке, надбудова XLA для вилучення пароля Excel , про що ви хочете?

РЕДАКТУВАННЯ: Думаючи про це, можливо, ні - це використовується для видалення пароля із захищених робочих листів / робочих книжок.


чи етично ми можемо вирішити, використовуючи цей інструмент?
Джо

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, який міг би знайти пароль протягом декількох хвилин або довше, якщо пароль не відомий.
Бобборт

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.