Как снять пароль с excel файла макроса

Время на прочтение
2 мин

Количество просмотров 17K

Здравствуйте, друзья!
Последние дни бился над такой задачей:
Имеется файл .xls, в нем макрос на VBA, защищенный паролем. Файл создается путем экспортирования из программы ГрандСмета и содержит в себе смету, которая должна обрабатываться макросом.
На 32х разрядных версиях — отрабатывает без проблем.

На 64х столкнулся со следующей ошибкой:

Справка Microsoft дает однозначный ответ:

Связывался с Тех.Поддержкой, объяснял причину. Ответ был один:

У нас все работает. Проверяли на 64х разрядных версиях.

Тогда я решился самостоятельно править код макроса. Сложность, с которой столкнулся — модуль защищен паролем. О том, как сбросить/изменить пароль не используя специализированное ПО для взлома пароля
Итак, приступим. Заранее предупрежу — я не профессиональный программист, а скорее ЭниКейщик, так что возможны некорректные формулировки, а кому-то может и вовсе не понравиться выбранный мной путь.
Первым делом я стал бороздить просторы Сети в поисках решения. В основном полным-полно ссылок на ПО, из разряда PasswordCracker. Одно из решений опубликованное на Ru-Board’e полностью удаляло код модуля VBA.
В конце концов, мои старания вознаградились — предлагаю Вам вольный перевод найденного решения (к сожалению не могу указать первоисточник — не помню) + попытка понять суть выявленной «уязвимости».

Думаю, что ни для кого не секрет, что начиная с Excel 2007 использует Microsoft Office Open XML в качестве своего основного формата.

FarManager превосходно открывает xls файл с отображением всей структуры документа.
1. Запускаем FarManager.
2. Открываем файл для редактирования.
3. Ищем строку с определением ключа DPB, и изменяем имя ключа на DPW.
4. Сохраняем.
4. Открываем файл в Excel.
5. Подтверждаем загрузку проекта, не смотря на некорректный ключ (который мы сами и сделали некорректным в п.3):

6. В окнах с сообщениями об ошибке смело жмем ОК.
7. С помощью комбинации Alt+F11 — запускаем VBA Editor и, вуаля, код макроса доступен для редактирования.

Теперь причина возникавшей ошибки при запуске макроса в среде x64 — очевидна!

Компилятор подсказывает о том, что код в данном проекте должен быть обновлен для использования на 64х разрядных системах, конкретно указав, что надо было всего лишь добавить ключевое слово PtrSafe при объявлении функции.

Изменения внес, пересохранил, проверил. Все работает. Порадовал коллег решением наболевшей проблемы + приобрел опыт.

Пытаюсь решить последний вопрос, на котором я и застопорился:
Как вразумительно, и не обидев, объяснить Тех.Поддержке о решении возникшей проблемы с запуском макроса? Не должен же я самостоятельно перелапачивать все шаблоны (а их порядка 50), чтобы макрос корректно отрабатывал на x64 версиях Офиса. К тому же вопрос этики — пришлось «обходить» защиту кода макроса.

Благодарен за внимание. Надеюсь, что для некоторой части сообщества информация была полезна.

P.S. Вдохновленный решением возникшей проблемы, и оставшись только с одним вопросом, который задал чуть выше, я решился создать свой первый топик на Хабре, в надежде на профессиональный дружеский совет.

Макрос предназначен для программного подбора и снятия защиты с листа Excel.

Подобранный пароль не совпадает с установленным — но, тем не менее, защита снимается.

Sub Unlock_Excel_Worksheet()
    t = Timer
    If UnlockSheet(ActiveSheet) Then
        MsgBox "Защита снята. Потребовалось времени: " & Format(Timer - t, "0.0 сек.")
    Else
        MsgBox "Не удалось снять защиту листа", vbCritical
    End If
End Sub
Function UnlockSheet(ByRef sh As Worksheet) As Boolean
    Dim i%, j%, k%, l%, m%, n As Long, i1%, i2%, i3%, i4%, i5%, i6%, txt$
    On Error Resume Next
    For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
    For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
    For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
    For i5 = 65 To 66: For i6 = 65 To 66
        txt$ = Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6)
        For n = 32 To 126
            sh.Unprotect txt$ & Chr(n)
            If Err Then
                Err.Clear
            Else
                Debug.Print "Пароль: " & txt$ & Chr(n)
                UnlockSheet = True
                Exit Function
            End If
        Next
    Next: Next: Next: Next: Next: Next
    Next: Next: Next: Next: Next
End Function

Аналогичный макрос снимает защиту книги Excel:

Sub Unlock_Excel_Workbook() ' снятие защиты книги Excel
    t = Timer
    If UnlockWorkbook(ActiveWorkbook) Then
        MsgBox "Защита снята. Потребовалось времени: " & Format(Timer - t, "0.0 сек.")
    Else
        MsgBox "Не удалось снять защиту книги", vbCritical
    End If
End Sub
Function UnlockWorkbook(ByRef wb As Workbook) As Boolean
    Dim i%, j%, k%, l%, m%, n As Long, i1%, i2%, i3%, i4%, i5%, i6%, txt$
    On Error Resume Next
    For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
    For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
    For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
    For i5 = 65 To 66: For i6 = 65 To 66
        txt$ = Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6)
        For n = 32 To 126
            wb.Unprotect txt$ & Chr(n)
            If Err Then
                Err.Clear
            Else
                Debug.Print "Пароль: " & txt$ & Chr(n)
                UnlockWorkbook = True
                Exit Function
            End If
        Next
    Next: Next: Next: Next: Next: Next
    Next: Next: Next: Next: Next
End Function

Вы должны сначала понять значение VBA, прежде чем искать решения для взлома пароля VBA в Excel.

Visual Basic для приложений (VBA) — это аббревиатура от Visual Basic для приложений. Он используется в различных продуктах Microsoft, в частности в MS Excel, для внедрения новых функций и автоматизации общих процессов. Большинство пользователей шифруют программы VBA с помощью паролей из-за их природы и необходимости защиты файлов. С другой стороны, пароли VBA не являются безошибочными, и их можно забыть. Очевидно, вы не сможете получить доступ к своим программам Excel VBA или изменить их. Вам понадобится методика взлома пароля Excel VBA, чтобы остановить хаос.

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

1. Измените расширение файла, чтобы взломать пароль VBA в Excel.

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

  • Найди свой target.xlsm файл и замените расширение .xlsm с .zip.
  • Используйте любой из Программы-архиваторы вы должны открыть этот файл. WinRAR или 7-Zip есть два варианта. Если вы это сделаете, вы должны увидеть следующую структуру своего файлового каталога.
  • Выберите Каталог XL вариант и извлеките файл с именем «VBAProject.bin».
  • В любом шестнадцатеричном редакторе откройте VBAProject.bin файл и найдите «DPB =» текст внутри файла.
  • Просто сотрите этот текст и замените его на «DPX =» как только вы его нашли. Теперь сохраните и закройте файл шестнадцатеричного редактора. Заменить старый VBAProject.bin с новый VBAProject.bin это было отредактировано шестнадцатеричным способом.
  • Переименуйте файл в .xlsm а затем откройте его в Excel. Выбирать «Да» из всплывающего окна с предупреждением и не обращайте внимания на другие параметры.
  • Если появится диалоговое окно, запустите Редактор VBA и выберите «OK»
  • Выбирать характеристики из контекстного меню, когда вы щелкаете правой кнопкой мыши имя вашего Проект VBA. Удалите все существующие пароли, перейдя в «Защита» страница. Также отключите и включите «Заблокировать проект для просмотра» коробка. Введите и подтвердите приемлемый пароль. Чтобы внести изменения, нажмите «Ok. »

2. Сброс пароля VBA в Excel с помощью редактора Visual Basic

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

  • Для начала откройте Рабочая тетрадь, который содержит все защищенные листы.
  • Чтобы запустить или проверить редактор Visual Basic, используйте Alt + F11. Затем в правом углу окна введите Вставить модуль и вставьте следующий код.
  • Закройте Редактор VB окно и перейдите к листу, с которого хотите снять защиту.
  • Дважды щелкните значок взломщик паролей в предложенном списке после ввода Tools-Macro-Macros.

3. Измените пароль VBA в Excel с помощью шестнадцатеричного редактора.

Hex Editor предоставляет вам хорошую платформу для редактирования шестнадцатеричных данных, позволяя наконец решить проблему взлома пароля в VBA для Excel. Создайте фиктивный xls-файл, установите пароль и затем используйте его для доступа к защищенному Excel с помощью этого метода.

  • Сделать новый файл Excel, использовать Шестнадцатеричный редактор (xls). Достаточно простого файла.
  • Под Раздел VBA, создайте пароль для этого файла. Вы можете перейти к этой опции, нажав Alt + F11.
  • Сохранить а также оставлять этот новый файл после того, как вы создали памятный пароль.
  • Открыть свежеприготовленный файл снова, но на этот раз с шестнадцатеричный редактор. Найдите и скопируйте строки, начинающиеся со следующих ключей: CMG =, DPB =, а также GC = после того, как файл был открыт.
  • Теперь, используя Шестнадцатеричный редактор, откройте файл электронной таблицы, в котором вы хотите расшифровать пароль. Копировать скопированные тексты и вставить их в соответствующие поля перед сохранением модификации. Закройте файл.
  • Чтобы увидеть Код VBA, откройте файл Excel и войдите в систему, используя тот же пароль вы использовали для манекена xls файл.

Автоматизированное решение

Если указанные выше процедуры не работают, пользователи могут обратиться за помощью к автоматизированному решению. В Средство восстановления паролей файлов DataHelp VBA одно из таких приложений. Он предназначен для восстановления паролей к файлам VBA, которые были потеряны или забыты, без потери данных. Он также поддерживает такие типы файлов MS Office, как .xls, .xlsx, .doc, .mdb и .dot. Самым приятным аспектом этого инструмента является то, что он удаляет старые пароли и заменяет их новыми паролями проекта VBA. Он имеет удобный интерфейс, и для его использования не требуются технические знания.

1. Запустить программное обеспечение и выбрать Проект VBA с помощью Добавить файлы) или Добавить папку кнопка.

Домашняя страница для взлома пароля VBA в Excel

2. Как показано на изображении, найти в VBA файл на вашем ПК.

найдите файл VBA в вашей системе

3. Рассмотрение файлы, которые вы добавили, а затем щелкните Параметр сброса.

Параметр сброса для взлома пароля VBA в Excel

4. Когда процесс заканчивается, инструмент отобразит пароль.

После завершения процесса инструмент отображает пароль

Заключительные слова

Многие люди забыли или потеряли свои пароли VBA. В результате в этой статье мы обсудили некоторые подходы к тому, как взломать пароль кода VBA в Excel. В том случае, если ручные методы дают точные результаты. В результате мы рекомендовали программу VBA Excel Password Breaker как надежную и быструю альтернативу. Пользователи могут легко восстановить свои утерянные пароли с помощью этого инструмента.

Установка пароля на VBA-проект и снятие защиты с него. Отключение забытого пароля с проекта VBA, созданного в книге Excel с расширением .xlsm.

Защита проекта VBA паролем помогает от случайного или намеренного изменения кода обычным пользователем. От злоумышленников простая установка пароля не спасет.

Защита проекта VBA стандартными средствами:

  1. Перейдите в окно «VBAProject — Project Properties» через пункты меню: «Tools» >> «VBAProject Properties».
  2. В открывшемся окне выберите вкладку «Protection» и установите галочку в чек-боксе «Lock project for viewing».
  3. Введите пароль в поле «Password» и повторите пароль в поле «Confirm password».

Окно «VBAProject - Project Properties»

  1. Нажмите кнопку «OK» и закройте книгу Excel.

При следующем открытии этой книги проект VBA будет защищен.

Снятие защиты с VBA-проекта

Снятие защиты с проекта VBA стандартными средствами:

  1. Перейдите в окно «VBAProject — Project Properties» через пункты меню: «Tools» >> «VBAProject Properties».
  2. В открывшемся окне выберите вкладку «Protection» и уберите галочку из чек-бокса «Lock project for viewing».
  3. Очистите поля «Password» и «Confirm password».
  4. Нажмите кнопку «OK» и закройте книгу Excel.

При следующем открытии этой книги проект VBA будет доступен.

Отключение забытого пароля

Этот способ отключения забытого пароля применим к файлам Excel с расширением .xlsm. Чтобы не забывать пароли, используйте менеджер KeePass.

  1. Сделайте копию книги Excel, чтобы случайно не потерять ее при вмешательстве в код.
  2. Откройте файл .xlsm любым архиватором (я использую бесплатный 7-Zip). Иногда рекомендуют заменить расширение .xlsm на .zip или добавить одно к другому (.xlsm.zip), но делать этого совершенно не обязательно.

  1. Откройте в архиве папку «xl», найдите файл «vbaProject.bin» и перетащите его в папку с книгой Excel (по умолчанию происходит копирование).

  1. Откройте файл «vbaProject.bin» программой «Notepad++», обычный блокнот не подойдет.
  2. С помощью поиска (Ctrl+F) найдите фразу DPB=, замените в ней букву «B» на любую другую, например на «z» и сохраните файл.

  1. Перетащите файл «vbaProject.bin» обратно в архив, подтвердив копирование. Архив можно закрыть.
  2. Откройте книгу Excel и на запрос о продолжении загрузки с невалидным ключом «DPz» ответьте «Да».

  1. Откройте редактор VBA, дважды или трижды нажав «OK» в сообщении о неизвестной ошибке (у меня такое предупреждение появляется трижды).

  1. Сохраните книгу Excel и закройте.
  2. Откройте файл Excel, перейдите в редактор VBA, откройте окно «VBAProject — Project Properties» («Tools» >> «VBAProject Properties») и убедитесь, что галочка у чек-бокса «Lock project for viewing» снята, поля «Password» и «Confirm password» — пустые.

Перейти к содержимому

В данной статье описаны несколько способов разблокировки (снятия защиты, пароля) в запароленном  файле  «Эксель» и приведен макрос подбора пароля к файлу.

Категорически рекомендую использовать данные способы для разблокировки и снятия защиты только со своих собственных файлов, когда забыли (запамятовали) пароль и ни в коем случае не применять данные способы для взлома паролей защиты на чужих файлах не принадлежащих Вам.

Способ номер 1.  Использование бесплатной офисной программы Open Office Calc

Это один из самых простых способов снятия забытого пароля с файла.

Что нужно делать:

  1. Скачать и установить бесплатную программу  Open Office.
  2. Открыть запароленный файл в программе Open Office Calc.
  3. Перейти во вкладку «Сервис»
  4. Далее выбрать пункт «Защитить документ»
  5. Снять флажок (галочку) с пункта с названием защищенного листа.
    Снять пароль в Open Office
    Снять пароль в Open Office
  6. Пароль с файла будет снят.
  7. Теперь остается только сохранить незапароленный файл и открыть его в «Excel», при необходимости.

Способ номер 2. Использование программы-архиватора для снятия пароля с листа «Excel»

Что нужно делать:

  1. Установить программу для открытия архивов и архивирования документов, если таковая не установлена на Вашем ПК. Например WinRar или 7Zip ;
    7Zip man
    7Zip man
  2. Запустить программу архиватор ;
  3. Сохранить защищенный файл в формате .xlsx ;
    Сохранить как xlsx
    Сохранить как xlsx
  4. Открыть защищенный документ в этой программе, как архив ;
  5. Далее перейти в папку архива Название файла.xlsxxlworksheets ;
    Снятие пароля через архив
    Снятие пароля через архив
  6. Открыть интересующий вас лист для редактирования ;
  7. Найдите фрагмент кода начинающийся с «<sheetProtection password=» и заканчивающийся «/>». Удалите его ;
    Удаление строки с паролем
    Удаление строки с паролем
  8. Сохраните архив с измененным файлом ;
  9. Закройте программу-архиватор и откройте файл в «Excel» ;
  10. Защита листа снята.

Способ номер 3. Макрос VBA «Excel» для подбора пароля и снятия защиты листа.

Этот способ немного сложнее, так как от Вас потребуются хотя бы начальные знания в написании макросов «Excel».

Как пишется простейший макрос в «Excel» Вы можете посмотреть на странице сайта по ссылке:

Как написать простой макрос в программе Excel

Если вы знакомы с написанием макросов VBA , то для разблокировки файла защищенного паролем Вам следует выполнить следующие действия:

  1. Открыть редактор макросов во вкладке разработчик.
  2. Записать следующий код макроса:
  • Sub podbor_ruexcel()
  • Dim E1, E2, E3, E4, E5, E6, i, j, k, l, m, n As Integer
  • Dim ruexcel As String
  • Dim t!
  • t = Timer
  • On Error GoTo err_
  • For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
  • For l = 65 To 66: For m = 65 To 66: For E1 = 65 To 66
  • For E2 = 65 To 66: For E3 = 65 To 66: For E4 = 65 To 66
  • For E5 = 65 To 66: For E6 = 65 To 66
  • ruexcel = Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(E1) & Chr(E2) & Chr(E3) & Chr(E4) & Chr(E5) & Chr(E6)
  • For n = 32 To 126
  • Unprotect ruexcel & Chr(n)
  • MsgBox «Пароль снят » & Format(Timer — t, «0.0 sec»)
  • Exit Sub
  • nxt_: Next: Next: Next: Next: Next: Next
  • Next: Next: Next: Next: Next: Next
  • Exit Sub
  • err_: Resume nxt_
  • End Sub
  1. Запустить полученный макрос.
  2. После выполнения макроса пароль с листа «Excel» будет снят.

Результат редактирования макроса:

Макрос подбора пароля к листу Excel в редакторе

Макрос подбора пароля к листу Excel в редакторе

Понравилась статья? Поделить с друзьями:
  • Как снять пароль с документа excel не зная пароль
  • Как снять пароль с excel файла если есть пароль
  • Как снять пароль с документа excel если забыл пароль
  • Как снять пароль с excel документов
  • Как снять пароль с word файла 2010