ZyXp10it Пользователь Сообщений: 50 |
Ситуация: есть папка, куда выгружаются отчеты в формате xls. В целях разграничения доступа принято решение ставить пароль на документе. Из-за слабой защищенности пароля книги/листа, нужно сделать пароль на открытие. |
Микки Пользователь Сообщений: 3280 |
{quote}{login=ZyXp10!t}{date=02.12.2008 10:49}{thema=Пароль на открытие файлов средствами VBA}{post}Ситуация: есть папка, куда выгружаются отчеты в формате xls. В целях разграничения доступа принято решение ставить пароль на документе. Из-за слабой защищенности пароля книги/листа, нужно сделать пароль на открытие. End Sub |
ZyXp10it Пользователь Сообщений: 50 |
Спасибо, но вариант с макросом не подходит, т.к. легко обходится (достаточно удалить пароль миф и потом изменить пароль) |
ZyXp10it Пользователь Сообщений: 50 |
миф = vba (пунто заменил, собака Вопрос остается в силе… |
А чем вас не устраивает встроенная установка пароля на открытие файла? Она-то как раз только брутом и ломается… Пароль установите на все книги вручную или перебирая макросом. |
|
Микки Пользователь Сообщений: 3280 |
{quote}{login=ZyXp10!t}{date=02.12.2008 11:16}{thema=}{post}Спасибо, но вариант с макросом не подходит, т.к. легко обходится (достаточно удалить пароль миф и потом изменить пароль) |
ZyXp10it Пользователь Сообщений: 50 |
{quote}{login=Влад}{date=02.12.2008 11:41}{thema=}{post}А чем вас не устраивает встроенная установка пароля на открытие файла? Она-то как раз только брутом и ломается… Пароль установите на все книги вручную или перебирая макросом.{/post}{/quote} |
ZyXp10it Пользователь Сообщений: 50 |
{quote}{login=Микки}{date=02.12.2008 11:43}{thema=Re: }{post}{quote}{login=ZyXp10!t}{date=02.12.2008 11:16}{thema=}{post}Спасибо, но вариант с макросом не подходит, т.к. легко обходится (достаточно удалить пароль миф и потом изменить пароль) |
Макрос на перебор файлов легко найдете в Поиске. Смысл таков — последовательно открываете каждую найденную книгу, используете свойство .Password = «нужный_пароль», закрываете книгу с сохранением изменений .Close (True). |
|
ytk5kyky Пользователь Сообщений: 2410 |
Про перебор всех файлов в папке говорилось неоднократно. |
ZyXp10it Пользователь Сообщений: 50 |
{quote}{login=Влад}{date=02.12.2008 11:57}{thema=}{post}Макрос на перебор файлов легко найдете в Поиске. Смысл таков — последовательно открываете каждую найденную книгу, используете свойство .Password = «нужный_пароль», закрываете книгу с сохранением изменений .Close (True).{/post}{/quote} |
ytk5kyky Пользователь Сообщений: 2410 |
{quote}{login=ZyXp10!t}{date=02.12.2008 12:00}{thema=Re: }{post}{quote}{login=Влад}{date=02.12.2008 11:57}{thema=}{post}Макрос на перебор файлов легко найдете в Поиске. Смысл таков — последовательно открываете каждую найденную книгу, используете свойство .Password = «нужный_пароль», закрываете книгу с сохранением изменений .Close (True).{/post}{/quote} |
ZyXp10it Пользователь Сообщений: 50 |
{quote}{login=Лузер™}{date=02.12.2008 11:59}{thema=}{post}Про перебор всех файлов в папке говорилось неоднократно. |
Это и есть пароль на открытие — вы сами попробуйте. |
|
{quote}{login=ZyXp10!t}{date=02.12.2008 12:02}{thema=Re: }{post}{quote}{login=Лузер™}{date=02.12.2008 11:59}{thema=}{post}Про перебор всех файлов в папке говорилось неоднократно. |
|
ZyXp10it Пользователь Сообщений: 50 |
{quote}{login=Влад}{date=02.12.2008 11:57}{thema=}{post}Макрос на перебор файлов легко найдете в Поиске. Смысл таков — последовательно открываете каждую найденную книгу, используете свойство .Password = «нужный_пароль», закрываете книгу с сохранением изменений .Close (True).{/post}{/quote} |
ytk5kyky Пользователь Сообщений: 2410 |
Хотя и видно, что Вы читаете все ответы, но видно в суть не вдаетесь. |
ZyXp10it Пользователь Сообщений: 50 |
{quote}{login=Лузер™}{date=02.12.2008 12:06}{thema=}{post}Хотя и видно, что Вы читаете все ответы, но видно в суть не вдаетесь. |
ZyXp10it Пользователь Сообщений: 50 |
Реализовать «смысл» при текущем уровне знаний vba я не в илах, поэтому прошу |
посмотрите пример (на всякий случай пароль «123») |
|
{quote}{login=Артем}{date=02.12.2008 01:38}{thema=}{post}посмотрите пример (на всякий случай пароль «123»){/post}{/quote} |
|
это в моем же примере или вы куда-то файлы скопировали? |
|
{quote}{login=Артем}{date=02.12.2008 02:09}{thema=}{post}это в моем же примере или вы куда-то файлы скопировали?{/post}{/quote} |
|
странно, у меня все работает… |
|
{quote}{login=Артем}{date=02.12.2008 02:28}{thema=}{post}странно, у меня все работает… |
|
кажись дошло…. |
|
{quote}{login=Артем}{date=02.12.2008 03:09}{thema=}{post}кажись дошло…. |
|
пожалуйста http://www.infanata.org/: регистрируетесь и поиск по ключевому слову VBA (Уокенбах точно есть, на первое время вам хватит) |
|
{quote}{login=Артем}{date=02.12.2008 03:21}{thema=}{post}пожалуйста http://www.infanata.org/: регистрируетесь и поиск по ключевому слову VBA (Уокенбах точно есть, на первое время вам хватит){/post}{/quote} |
|
Лиска Гость |
#30 12.08.2010 00:20:41 {quote}{login=ZyXp10!t}{date=02.12.2008 11:16}{thema=}{post}Спасибо, но вариант с макросом не подходит, т.к. легко обходится (достаточно удалить пароль миф и потом изменить пароль) |
0 / 0 / 1 Регистрация: 19.01.2016 Сообщений: 149 |
|
1 |
|
Открытие запароленой книги программно15.02.2019, 17:34. Показов 4363. Ответов 4
Добрый день. Нашел как запаролить книгу excel стандартной функцией.
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
15.02.2019, 17:46 |
2 |
F1 — и далее Opens a workbook. expression.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)
0 |
saray 3 / 2 / 1 Регистрация: 05.02.2019 Сообщений: 27 |
||||
15.02.2019, 17:47 |
3 |
|||
0 |
0 / 0 / 1 Регистрация: 19.01.2016 Сообщений: 149 |
|
15.02.2019, 17:52 [ТС] |
4 |
Большое спасибо!
0 |
653 / 246 / 88 Регистрация: 28.10.2015 Сообщений: 520 |
|
15.02.2019, 17:52 |
5 |
Я однажды создал Вордовский файл для хранения паролей. Решил запаролить сам файл. А потом забыл пароль!
0 |
Макрос предназначен для замены паролей на открытие, для большого количества файлов Excel.
В качестве исходных данных, задаётся старый и новый пароли.
Если поле «старый пароль» — пустое, подразумевается, что у файлов нет пароля.
Если поле «новый пароль» — пустое, подразумевается, что с файлов снимается пароль.
Нажимаем кнопку, — появляется диалоговое окно выбора папки, — после чего макрос в цикле открывает всё файлы,
и пересохраняет их с новым паролем.
Возможно, у некоторых файлов не получится изменить пароль
(например, у тех, где пароль на открытие отличается от заданного в поле «Старый пароль»)
Список таких файлов программа выводит в таблицу, в виде гиперссылок.
ВНИМАНИЕ: Это очень опасный макрос, — если вы случайно забудете, какой пароль вы установили на файлы,
— все обработанные макросом файлы Excel станут недоступны!
Так что, пользуйтесь макросом на свой страх и риск.
Напоминаю: снять (сбросить) пароль н а открытие файла невозможно!
(только полным перебором, — а это очень долго)
Часть кода макроса: (см. прикреплённый файл)
Sub ChangePasswords()
On Error Resume Next
PassOld$ = shs.Range("PassOld").Text
PassNew$ = shs.Range("PassNew").Text
folder$ = GetFolder(777, True) ' запрашиваем имя папки
If folder$ = "" Then Exit Sub ' выход, если пользователь отказался от выбора папки
Dim coll As Collection
' считываем в колекцию coll имена файлов XLS*
Set coll = FilenamesCollection(folder$, "*.xls*")
If coll.Count = 0 Then
MsgBox "В выбранной папке не найдено ни одного файла Excel", vbExclamation
Exit Sub
End If
Dim WB As Workbook, nOK&, nErr&
' очистка таблицы ошибок
Intersect(shs.UsedRange, shs.Range("b11:b" & shs.Rows.Count)).ClearContents
Application.ScreenUpdating = False ' отключаем обновление экрана
For Each Filename In coll ' перебираем найденные в папке файлы
Err.Clear: Set WB = Nothing
Set WB = Workbooks.Open(Filename, , , , PassOld$) ' пробуем открыть очередной файл
If Not WB Is Nothing Then ' если файл открылся
WB.Password = PassNew$ ' ставим новый пароль
WB.Close True ' закрываем файл с сохранением изменений
nOK& = nOK& - (Err = 0) ' считаем количество успешно сохранённых файлов
Else ' файл не открылся - выводим в список ошибок
nErr& = nErr& + 1
With shs.Range("b" & 10 + nErr&)
.Value = Filename
.Hyperlinks.Add .Resize(, 1), Filename, "", "Попробовать открыть файл вручную"
End With
End If
DoEvents
Next
Application.ScreenUpdating = True
msg$ = "Найдено файлов в папке: " & coll.Count & vbNewLine & _
"Удалось заменить пароли на файлах: " & nOK&
MsgBox msg, vbInformation, "Готово"
End Sub
Вложение |
Размер |
Загрузки |
Последняя загрузка |
SetPasswords.xlsb |
27.69 КБ |
56 |
52 недели 9 часов назад |
Время на прочтение
5 мин
Количество просмотров 25K
Всем привет! Я обычный пользователь 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_relsworkbook.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 должен быть доступен.
Но иногда защита не снимается, тогда нужно сохранить файл, проверить, что он действительно сохранился! И проделать повторно операции с 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_relsworkbook.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. Так и снимаются без особых проблем.
@amitmahapatra
VBA and macro scripting
You cannot create macros with VBA in Excel for the web, but you can open and edit VBA-enabled spreadsheets without removing (or corrupting) the VBA contained in the file. Learn more about getting started with macros.
You could use this code with other versions.
Only if it is your own file, otherwise you could be liable to prosecution.
Hope I was able to help you.
Nikolino
I know I don’t know anything (Socrates)
* Kindly Mark and Vote this reply if it helps please, as it will be beneficial to more Community members reading here