Пароль на защиту листа
Модератор: Naeel Maqsudov
Подскажите, кусочек кода который бы менял пароль на защиту листа и проекта VBA на заранее определенные. Т.е. допустим есть 4 заранее определенных пароля (123, 1234, 12345, 123456). При открытии файла допустим должен установиться первый пароль, при повторном открытии файла второй и т.д.
Это попытка защититься от програм взломщиков пароля, так как пароли на защиту листа находятся мгновенно. Но идея в том что такая программа найдет первый пароль (или соответствующий ему) а при открытии документа пароль поменяется. Незнаю может я не прав и это не поможет. Хотя конечно же это примитивная защита, так как достаточно отключить выполнение макроса и найти пароль. Но ведь надо до этого додуматься (если макрос будет выполняться без видимых для пользователя признаков).
Может это можно сделать с помощью
sub auto_open()
А может есть другие методы защиты? Можно конечно пароль на открытие книги поставить и рекомендовать доступ только для чтения, но нежелательно.
Это попытка защититься от програм взломщиков пароля, так как пароли на защиту листа находятся мгновенно. Но идея в том что такая программа найдет первый пароль (или соответствующий ему) а при открытии документа пароль поменяется. Незнаю может я не прав и это не поможет. Хотя конечно же это примитивная защита, так как достаточно отключить выполнение макроса и найти пароль. Но ведь надо до этого додуматься (если макрос будет выполняться без видимых для пользователя признаков).
Может это можно сделать с помощью
sub auto_open()
А может есть другие методы защиты? Можно конечно пароль на открытие книги поставить и рекомендовать доступ только для чтения, но нежелательно.
- VictorM
- Сообщения: 794
- Зарегистрирован: 23 окт 2006, 01:44
- Откуда: Lugansk, Ukraine
- Контактная информация:
IMHO это пустая затея. На нашем форуме уже неоднократно обсуждался вопрос защиты кода VBA проекта и листов. В MS Office любой пароль ломается "на раз"
. Можно конечно "извращаться" и придумывать какие - то новые ходы, но как говорилось в одной из тем форума (к сожалению не помню кем это было сказано) оно не стоит тех затрат. Любой замок - от честных людей. Так и здесь.
Хотя я понимаю Ваше стремление (сам такой) защитить проект от "шаловливых ручек" ламера. Так ведь он и ломать не будет. От него и просто окно "Введите пароль" - уже защита. А для того, кто действительно хочет "посмотреть, а что же там внутри", все эти пароли "до лампочки". Не такое ломают.

Хотя я понимаю Ваше стремление (сам такой) защитить проект от "шаловливых ручек" ламера. Так ведь он и ломать не будет. От него и просто окно "Введите пароль" - уже защита. А для того, кто действительно хочет "посмотреть, а что же там внутри", все эти пароли "до лампочки". Не такое ломают.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
научите их ловить рыбу - и вы накормите их на всю жизнь".
Конечно же вы правы. Но это хотябы лучше чем ничего. Ведь если чел не знает VBA (допустим), но у него есть одна из "программ взломщиков", и он не догадается отключить выполнение макросов, то и пароль ему искать и искать...
От продвинутого чела конечно же не защитится стандартными средствами, но думаю он и ломать то не будет а возможно сам и сделает что нужно. ИМХО ломают только для того чтобы узнать как же это сделано, а профи это не к чему (по крайней мере в моем случае, ничего интересного для профи нет, а вот средний юзер...).
И посему буду благодарен если поможете с кодом.
От продвинутого чела конечно же не защитится стандартными средствами, но думаю он и ломать то не будет а возможно сам и сделает что нужно. ИМХО ломают только для того чтобы узнать как же это сделано, а профи это не к чему (по крайней мере в моем случае, ничего интересного для профи нет, а вот средний юзер...).
И посему буду благодарен если поможете с кодом.
- VictorM
- Сообщения: 794
- Зарегистрирован: 23 окт 2006, 01:44
- Откуда: Lugansk, Ukraine
- Контактная информация:
Ну, если ограничиться защитой листов или книги,то можно, наверное, сделать где-то так:
"секретную" ячеечку, конечно же можно спрятать где то подальше.
А вот с защитой проекта VBA посложнее. Сам столкнулся с этим не так давно.
http://forum.developing.ru/showthread.php?t=12818
хотя решаемо
Код: Выделить всё
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
хотя решаемо

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

Но, cамое правильное (как я уже советовал на этом форуме) сделать СOM-AddIn.
Если есть чего защищать

- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
Если вы работаете в корпоративной структуре полезно познакомиться с RMS и IRM.
Посмотрите:
Зарисовки с RMS на переднем плане
Защита информации в Microsoft Office 2003 с помощью служб RMS и IRM
Посмотрите:
Зарисовки с RMS на переднем плане
Защита информации в Microsoft Office 2003 с помощью служб RMS и IRM
VictorM,
Код работает, но при тестировании (при попытке взловать пароль) с помощью одного из программ предназначенных для этого получается так, что файл открывается в данной программе (ну т.е. чтобы найти пароль программа просит указать на запороленный файл и открывает его), но файл не сохраняется. Т.е. при открытии файла в программе взломщике цифра в ячейке A1 меняется, но при закрытии программы файл не сохраняется. Получается так, что при последующем открытии файла Excel для того чтобы ввести ранее найденный пароль она будет совпадать. Так как порядковый номер в ячейке A1 будет совпадать с тем что был в программе взломщике.
Можно ли сделать так чтобы файл в любом случае сохранялся или указать какое-то время после которого файл будет сохраняться. Может что-то другое надо сделать? Или это в принципе невозможно?
Код работает, но при тестировании (при попытке взловать пароль) с помощью одного из программ предназначенных для этого получается так, что файл открывается в данной программе (ну т.е. чтобы найти пароль программа просит указать на запороленный файл и открывает его), но файл не сохраняется. Т.е. при открытии файла в программе взломщике цифра в ячейке A1 меняется, но при закрытии программы файл не сохраняется. Получается так, что при последующем открытии файла Excel для того чтобы ввести ранее найденный пароль она будет совпадать. Так как порядковый номер в ячейке A1 будет совпадать с тем что был в программе взломщике.
Можно ли сделать так чтобы файл в любом случае сохранялся или указать какое-то время после которого файл будет сохраняться. Может что-то другое надо сделать? Или это в принципе невозможно?
А может пароль не надо выбирать в соответствии определенной цифре в ячейке, а выбирать ее в случайном порядке? Ведь по идее тогда программа взломщик найдет пароль на случайный "пароль" и при последующем открытии пароль будет не тот. Или я не прав?
- 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, программку я скачал.

А что за сайт?К сожалению со своего сайта автор её удалил

"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
научите их ловить рыбу - и вы накормите их на всю жизнь".