Как защитить макрос паролем в excel
Здравствуйте, подскажите, как защитить макрос паролем, чтобы посторонние его код не могли просматривать?
Пользователь
Сообщений: 116 Регистрация: 01.01.1970
02.02.2009 00:53:48
Alt + F11 и в проджект-эксплорере выбрать Properties (на названии проекта). На вкладке Protection ввести и повторить (Confirm) пароль.
At odd moments: VBA, VB6, VB.NET, Java, Java for Android, Java Script, Action Script, Windows Scriping Host
02.02.2009 01:05:18
Нет, так тоже можно код просмотреть
02.02.2009 01:09:01
Ставьте птичку там, что бы запереть для просмотра
Пользователь
Сообщений: 116 Регистрация: 01.01.1970
02.02.2009 01:10:58
Lock Project for viewing нужно отметить, что бы запретить просматривать проект
At odd moments: VBA, VB6, VB.NET, Java, Java for Android, Java Script, Action Script, Windows Scriping Host
Пользователь
Сообщений: 1716 Регистрация: 01.01.1970
04.02.2009 19:52:27
А вот это жлобство. Вы не американец?
Страницы: 1
Читают тему
© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
| ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
Защита проекта VBA в MS Excel
Всем привет! Я обычный пользователь MS Excel. Не являющийся профессиональным программистом, но накопивший достаточно опыта, для установки и обхода защиты проектов VBA.
Дисклеймер:
В данной статье рассмотрены виды защиты проектов VBA, от несанкционированного доступа. Их сильные и слабые стороны – ранжирование.
Цель статьи показать слабые и сильные стороны каждого вида защиты проекта VBA в MS Office.
Демонстрация разработанных инструментов, в надстройке Macro Tools VBA, для снятия и установки той или иной защиты.
Все инструменты реализованы стандартными средствами VBA, без использования дополнительных библиотек.
Главная панель Надстройки Macro Tools VBA
Первый вид защиты — Обычный пароль
Время на снятие: мгновенно
Недостаток: быстрый доступ к запароленному модулю VBA
Стандартный инструмент (В среде VBE: панель Tools -> VBAProject Properties -> Protection).
Самая легко снимающаяся защита. В интернете легко находится код, для снятия данной защиты.
Данную защиту можно снять следующим инструментом:

Второй вид защиты — Project is Unviewable
Время на снятие: от 10 до 15 мин (в ручную)
Недостаток: доступ к исходному коду модуля VBA
Один из самых распространённых видов защит. Встречается в 95% файлах с защитой модуля VBA. При попытке открыть проект, открывается диалоговое окно, с сообщением: Project is Unviewable.

Большинство пользователей Excel, не могут снять данную защиту, так как она имеет множество вариации и нюансов, для ее снятие нужно иметь представление о внутренней структуре файла Excel.
Основан, данный вид защиты, на изменение ключей:
CMG=«4A488FCC54D054D054D054D0» DPB=«0B09CE0F8E108E108E» GC=«CCCE09520B120C120CED»
в файле vbaProject.bin .

Кратко, как создается данная защита
Для создания данной защиты нужно, разархивировать файл Excel. Перейти в архиве в папку xl, открыть файл vbaProject.bin, в конце файла находятся наши ключи, редактируем значения ключей на пусто, сохраняем файл. Переводим наш архив, обратно в файл Excel. Готово!
Это самый простой вариант данной защиты, но существует множество модификаций.
Алгоритм снятия защиты Project is Unviewable.
1) Разархивируем подопытный файл, переходим в файл …\xl\_rels\workbook.xml.rels

2) В файле workbook.xml.rels ищем строку, содержащую слово vbaProject, обычно имеет следующий вид: />. В этой строке нас интересует ключ Target,иего значение. Значение является название файла, в котором находится проект VBA. Иногда, защищающий меняет значения ключа на printerSettings.bin.Получается маскировка файла с проектом VBA под другой файл.
3) Открываем на редактирование файл, указанный в ключе Target, ищем в файле ключи CMG, DPB, GC. И меняем в их названиях любую букву на любую другую, например: CMC, DPC, CC. При поиске нужно быть аккуратным, так как защищающий может поместить в проект форму, подписью повторяющую один из ключей, например такую: DPB=«0B09CE0F8E108E108E». При ее изменении проект VBA, будет удален из книги Excel. Сохраняем и закрываем файл.
4) Переводим архив обратно в файл Excel.
5) Запускаем приложение Excel, выполняем следующее: в Центре управления безопасностью -> Параметры макросов -> Отключить все макросы без уведомления. Перезапускаем Excel. Данная операция нужна, для блокировки защиты, которую иногда ставят авторы макросов. Данная защита реализована следующим образом. В модуле VBA «ЭтаКнига», создается процедуры, реагирующие на события открытия книги или закрытия книги. Эти события обычно проверяют, наличие пароля на проект VBA, запрет сохранения и прочее.
6) Открываем файл. Если все правильно сделано то, Excel, будет ругаться на не правильные ключи, которые мы отредактировали, в пункте 3. Жмем, да, пока данные сообщения не закончатся и диалоговое окно закроется.
Если данное сообщение не появляется то, вы отредактировали не файл который содержит проект VBA.

7) Открываем проект VBA. После всего, проект VBA должен быть доступен.
8) Но иногда защита не снимается, тогда нужно сохранить файл, проверить, что он действительно сохранился! И проделать повторно операции с 1 по 7. Обычно так происходит когда в файле workbook.xml.rels в ключе Target установлено printerSettings.bin.При сохранение, Excel исправляет это на значение на vbaProject.bin
Данную защиту можно установить и снять следующим инструментом:

Третий вид защиты — Hidden Module, скрытые модули VBA
Время на снятие: от 15 до 20 мин (нужен редактор OLE — объектов, Structured Storage Viewer, например.
Недостаток: доступ к коду модуля VBA
Менее распространенный вид защиты обычно встречается в комбинации с защитой Project is Unviewable. При установке данной защиты модуль VBA не отображается в проекте книги Excel. О его существовании можно узнать, проанализировав код VBA (что требует время!) или открыть файл Excel в программе OpenOffice или LibreOffice (так же можно смотреть код при защите Project is Unviewable, но данный способ не дает возможность получить рабочий файл, без пароля).

Просмотр кода VBA в LibreOffice
Кратко, как создается данная защита
Для создания данной защиты нужно отредактировать файл с проектом VBA — vbaProject.bin или printerSettings.bin,в зависимости от настроек в файле …\xl\_rels\workbook.xml.rels. В конце файла удаляются строки вида: Module1=32, 32, 635, 330, Z. С нужными названиями модулей.

Для снятия данной защиты нужно в файле vbaProject.bin — восстановить удаленные записи модулей.
Данную защиту можно установить следующим инструментом.

Четвертый вид защиты — Обфускация кода
Время на снятие: неизвестно, зависит от объема кода и пере использования частей кода

Обфусцированный код VBA
Недостаток: необходимость тестирование файла после обфускации, на работоспособность
Крайне редкий вид защиты, основанный на изменении исходного кода VBA, в не удобочитаемый вид для человека. Удаляются все комментарии, форматирование кода, переименовываются названия всех переменных, процедур, функций, модулей и прочего. Злоумышленнику никогда не удастся восстановить первоначальный вид кода, и потребует достаточно много времени для, его восстановления в удобно читаемый вид для человека.
Для де-обфускации кода нужно иметь время, специализированное ПО.
Данную защиту можно установить следующим инструментом.

Пятый вид защиты — Перенос кода в dll
Время на снятие: неизвестно, зависит от языка программирования и квалификации
Недостаток: необходимости в дополнительном файле dll
Один из самых редких видов защиты. Основная идея перенос основного кода в отдельную библиотеку dll, написанную на любом другом языке программирования. Не распространённость данный вид защиты получил по следующей причине, необходимости за файлом Excel, «таскать» дополнительный файл, dll.
Для получения доступа к коду dll, нужно обладать специальными знаниями.
Заключение
В заключении хочу выделить бесполезность защит: Project is Unviewable и Hidden Module которые, по существу ни отчего не защищают. Позволяют просматривать код VBA, без изменения исходного файла, в таких программах как OpenOffice или LibreOffice. Так и снимаются без особых проблем.
- VBA
- защита проекта VBA
- Project is Unviewable
- Hidden Module
- Информационная безопасность
- Visual Basic for Applications
Вынужденный обход парольной защиты модуля VBA в Excel 2010
Здравствуйте, друзья!
Последние дни бился над такой задачей:
Имеется файл .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
- vba module
- сброс пароля
Защита макросов VBA в Excel с помощью C#

Макросы VBA в электронных таблицах Excel используются для программной автоматизации различных операций. Например, вы можете запрограммировать задачу, которую нужно выполнять многократно, генерировать графики с помощью кода и т. д. Однако важным аспектом является защита макросов VBA от неавторизованных пользователей. Чтобы решить эту проблему, в этой статье описывается, как программно защитить макросы VBA в электронных таблицах Excel с помощью C#.
- API для защиты макросов Excel VBA
- Защита макросов Excel VBA
- Получите бесплатную лицензию API
C# API для защиты макросов Excel VBA#
Чтобы защитить макросы Excel VBA, мы будем использовать API Aspose.Cells for .NET. Это мощный API для работы с электронными таблицами, который позволяет реализовать автоматизацию Excel из ваших приложений .NET. Кроме того, API позволяет беспрепятственно работать с макросами VBA в файлах Excel. Вы можете либо скачать библиотеку DLL API, либо установить ее с помощью NuGet.
PM> Install-Package Aspose.Cells
Защита макросов Excel VBA с помощью C##
Макросы VBA в электронных таблицах Excel инкапсулированы проектами VBA, где каждый проект VBA может содержать один или несколько макросов VBA (или модулей). Следовательно, чтобы защитить макросы VBA, вам просто нужно применить защиту к проекту VBA.
Ниже приведены шаги по защите проекта Excel VBA.
- Загрузите файл Excel, используя класс Workbook.
- Получите доступ к проекту VBA в объект VbaProject с помощью свойства Workbook.VbaProject.
- Защитите проект VBA паролем, используя метод VbaProject.Protect(bool, string).
- Сохраните обновленный файл Excel с помощью метода Workbook.Save(String).
В следующем примере кода показано, как защитить проект Excel VBA с помощью C#.
// Загрузите исходный файл Excel Workbook wb = new Workbook("Workbook.xlsm"); // Доступ к проекту VBA рабочей книги Aspose.Cells.Vba.VbaProject vbaProject = wb.VbaProject; // Заблокировать проект VBA для просмотра паролем vbaProject.Protect(true, "11"); // Сохраните выходной файл Excel wb.Save("ProtectedVBA.xlsm");
MS Excel показывает следующее сообщение, когда вы пытаетесь просмотреть защищенный паролем проект VBA.

Получите бесплатную лицензию API#
Вы можете получить бесплатную временную лицензию, чтобы использовать API без ограничений пробной версии.
Вывод#
В этой статье вы узнали, как защитить макросы VBA в файлах Excel с помощью C#. Пошаговое руководство, а также ссылки на API и пример кода показали, как применить пароль к проекту VBA. Вы можете узнать больше об Aspose.Cells для .NET, используя документацию. Если у вас возникнут какие-либо вопросы, сообщите нам об этом через наш форум.
Смотрите также#
- Aspose.Cells Product Family
- password protect Excel VBA project in csharp
- protect Excel VBA project in csharp
