Пароль на защиту листа

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Аватара пользователя
Mint86
Сообщения: 127
Зарегистрирован: 04 мар 2008, 11:47

Подскажите, кусочек кода который бы менял пароль на защиту листа и проекта VBA на заранее определенные. Т.е. допустим есть 4 заранее определенных пароля (123, 1234, 12345, 123456). При открытии файла допустим должен установиться первый пароль, при повторном открытии файла второй и т.д.
Это попытка защититься от програм взломщиков пароля, так как пароли на защиту листа находятся мгновенно. Но идея в том что такая программа найдет первый пароль (или соответствующий ему) а при открытии документа пароль поменяется. Незнаю может я не прав и это не поможет. Хотя конечно же это примитивная защита, так как достаточно отключить выполнение макроса и найти пароль. Но ведь надо до этого додуматься (если макрос будет выполняться без видимых для пользователя признаков).
Может это можно сделать с помощью
sub auto_open()

А может есть другие методы защиты? Можно конечно пароль на открытие книги поставить и рекомендовать доступ только для чтения, но нежелательно.
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

IMHO это пустая затея. На нашем форуме уже неоднократно обсуждался вопрос защиты кода VBA проекта и листов. В MS Office любой пароль ломается "на раз" :mad: . Можно конечно "извращаться" и придумывать какие - то новые ходы, но как говорилось в одной из тем форума (к сожалению не помню кем это было сказано) оно не стоит тех затрат. Любой замок - от честных людей. Так и здесь.
Хотя я понимаю Ваше стремление (сам такой) защитить проект от "шаловливых ручек" ламера. Так ведь он и ломать не будет. От него и просто окно "Введите пароль" - уже защита. А для того, кто действительно хочет "посмотреть, а что же там внутри", все эти пароли "до лампочки". Не такое ломают.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Аватара пользователя
Mint86
Сообщения: 127
Зарегистрирован: 04 мар 2008, 11:47

Конечно же вы правы. Но это хотябы лучше чем ничего. Ведь если чел не знает VBA (допустим), но у него есть одна из "программ взломщиков", и он не догадается отключить выполнение макросов, то и пароль ему искать и искать...
От продвинутого чела конечно же не защитится стандартными средствами, но думаю он и ломать то не будет а возможно сам и сделает что нужно. ИМХО ломают только для того чтобы узнать как же это сделано, а профи это не к чему (по крайней мере в моем случае, ничего интересного для профи нет, а вот средний юзер...).
И посему буду благодарен если поможете с кодом.
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Ну, если ограничиться защитой листов или книги,то можно, наверное, сделать где-то так:

Код: Выделить всё

Private Sub Workbook_Open()
Dim счет
счет = Sheets("Лист1").Range("A1")
счет = счет + 1
If счет = 5 Then счет = 1
Sheets("Лист1").Range("A1").Value = счет
Select Case счет
Case 1
'защитить книгу
'ActiveWorkbook.Protect Password:="123"
'или лист
Sheets("Лист1").Protect Password:="123"
Case 2
Sheets("Лист1").Protect Password:="1234"
Case 3
Sheets("Лист1").Protect Password:="12345"
Case 4
Sheets("Лист1").Protect Password:="123456"
End Select
ActiveWorkbook.Save
End Sub
"секретную" ячеечку, конечно же можно спрятать где то подальше.
А вот с защитой проекта VBA посложнее. Сам столкнулся с этим не так давно.
http://forum.developing.ru/showthread.php?t=12818
хотя решаемо :rolleyes:
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

http://www.rapidshare.ru/617334
Protect VBA 1.6 Freeware
К сожалению со своего сайта автор её удалил :(
Но, cамое правильное (как я уже советовал на этом форуме) сделать СOM-AddIn.
Если есть чего защищать ;)
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

Если вы работаете в корпоративной структуре полезно познакомиться с RMS и IRM.
Посмотрите:
Зарисовки с RMS на переднем плане
Защита информации в Microsoft Office 2003 с помощью служб RMS и IRM
Аватара пользователя
Mint86
Сообщения: 127
Зарегистрирован: 04 мар 2008, 11:47

VictorM,
Код работает, но при тестировании (при попытке взловать пароль) с помощью одного из программ предназначенных для этого получается так, что файл открывается в данной программе (ну т.е. чтобы найти пароль программа просит указать на запороленный файл и открывает его), но файл не сохраняется. Т.е. при открытии файла в программе взломщике цифра в ячейке A1 меняется, но при закрытии программы файл не сохраняется. Получается так, что при последующем открытии файла Excel для того чтобы ввести ранее найденный пароль она будет совпадать. Так как порядковый номер в ячейке A1 будет совпадать с тем что был в программе взломщике.
Можно ли сделать так чтобы файл в любом случае сохранялся или указать какое-то время после которого файл будет сохраняться. Может что-то другое надо сделать? Или это в принципе невозможно?
Аватара пользователя
Mint86
Сообщения: 127
Зарегистрирован: 04 мар 2008, 11:47

А может пароль не надо выбирать в соответствии определенной цифре в ячейке, а выбирать ее в случайном порядке? Ведь по идее тогда программа взломщик найдет пароль на случайный "пароль" и при последующем открытии пароль будет не тот. Или я не прав?
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Mint86, ну во- первых Вы сами указали на то, что есть 4 заготовки пароля.
А насчет сохранения, используйте

Код: Выделить всё

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.Save
End Sub
и вообще, пробуйте, экспериментируйте. Ведь это только пример.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Aent, программку я скачал.
К сожалению со своего сайта автор её удалил
А что за сайт? :rolleyes:
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Ответить