Блокировка файла

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
MeMBus
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 450
Зарегистрирован: 23.02.2005 (Ср) 7:03
Откуда: Из леса...

Блокировка файла

Сообщение MeMBus » 15.06.2005 (Ср) 3:36

Трямс обитатели, есть вопросик... Существует некий зашифрованный файл (увесистый), есть прога которая юзает этот файл, задача при запуске проги дешифровать (работает) этот файл, заблокировать (работает, но криво) и работать с ним в проге, как тока прога закрывается килить дешифрованный файл (тоже работает, но тоже криво) и завершать работу проги. Как это реализовать?
P.S. Сейчас это реализуется с помощью dll, которая вызывается из проги и соответственно при закрытии килит файлы. Но, эту dll таки можно также отправить в аут.


Свел вопрос к теме «Защита БД Access XP/2003», «защита файлов от копирования и просмотра». Постановка задачи: есть БД (~1Gb) стоящая у клиента, необходимо обеспечить полный контроль БД из программы, защитить БД от просмотра/копирования сторонним ПО. У кого какие есть идеи?
Последний раз редактировалось MeMBus 21.06.2005 (Вт) 3:31, всего редактировалось 1 раз.
Бороться и искать, найти и перепрятать!

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 16.06.2005 (Чт) 17:06

вот это вопрос! кто-нить че-нить понял? "работает/не работает/работает, но криво"
Весь мир матрица, а мы в нем потоки байтов!

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 16.06.2005 (Чт) 20:19

мдя.... :?
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 16.06.2005 (Чт) 20:44

Я ! Я ПОНЯЛ ! У НЕГО КРИВО ПАШЕТ ПРОГА ! :lol:

Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 16.06.2005 (Чт) 22:56

Ага... :roll: Я бы сказал работает, но криво... :wink: :lol:
MeMBus, расшифруй пожалуйста, то что ты нам хотел сказать... :wink:

MeMBus
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 450
Зарегистрирован: 23.02.2005 (Ср) 7:03
Откуда: Из леса...

Сообщение MeMBus » 17.06.2005 (Пт) 8:14

Гы :) А я то думал что общаться умею... обшибся :)

Значит так, блокировка файла проканывает, то есть dll вызванная из программы блокирует файл... В принципе меня устраивает отработка этого момента... Далее, этап удаления файла тоже проканывает (поднять его достаточно проблематично)... А вот самое интересное: с помощью спец.прог можно посмотреть что или кто блокирует файл, соответственно можно отыскать эту dll’ку и застрелить ее (соответственно dll не успеет убить файл и с файлом можно будет смело работать). Внимание вопрос: как сделать так чтоб dll (кода в ней немного), всегда могла выполнить свой код и удалить файлы (конечно можно сделать сервис и соответственно работать через него, но можно как-нибудь еще)?
Бороться и искать, найти и перепрятать!

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 17.06.2005 (Пт) 9:05

FleX_2004 писал(а):а зачем тебе ДЛЛ ка? непойму... работа с файлом проще некуда... 10 строк кода + забитие нулями 3 строки итого=13 строк.... что в прогу поместить нереал???


У него смысл навроде: программа вытаскивает из запароленного архива некие данные (например mdb-шку) и эксклюзивно работает с ними. По завершении она должна уничтожить эти файлы. Проблема в том что продвинутый юзер может прибить собственно программу так что она не сможет произвести уничтожение и данные будут ему доступны...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 17.06.2005 (Пт) 9:45

Помнится я где-то видел самоуничтожающуюся прогу:
:D пишешь .bat - файл с (del чё-те-надо).затем запускаешь его.
По идее должно быть как с экзешником .bat не удаляет экзешник пока тот не закроется т.к. временно не имеет к нему доступа , но как только прога закрывалась экзешник всё-таки удаляляся.
:idea: А вообще для защиты мог бы использовать дешифровку в себя, т.е. дописывание в конец экзе данных, работу с ними , а затем стирание. :D
Если всё делать своими ручками, они скоро отвалятся !

MeMBus
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 450
Зарегистрирован: 23.02.2005 (Ср) 7:03
Откуда: Из леса...

Сообщение MeMBus » 17.06.2005 (Пт) 11:25

Andrey Fedorov писал(а):У него смысл навроде: программа вытаскивает из запароленного архива некие данные (например mdb-шку) и эксклюзивно работает с ними. По завершении она должна уничтожить эти файлы. Проблема в том что продвинутый юзер может прибить собственно программу так что она не сможет произвести уничтожение и данные будут ему доступны...


Угу, именно так оно и есть :) . А данные эти ну никак низя хранить открыто, так как большую часть данных пользователь вообще не должен видеть... С разбитием и шифрованием базы так-же не проканывает, т.к. в базе тогда поиск криво идет.
Бороться и искать, найти и перепрятать!

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 17.06.2005 (Пт) 12:25

Чего-то я не вник...
1. Дешефруем(в файл FILE_NAME)
2. Открываем с монополным доступом
Код: Выделить всё
hFile=CreateFile(FILE_NAME, GENERIC_ALL, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)

3. Работаем с ним(ReadFile\WriteFile)
4. Закрываем файл
Код: Выделить всё
CloseHandle hFile
DeleteFile FILE_NAME

5. Завершаем работу программы
Правда, если машина в процессе работы экстренно отключится, то файл ясное дело останется.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

MeMBus
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 450
Зарегистрирован: 23.02.2005 (Ср) 7:03
Откуда: Из леса...

Сообщение MeMBus » 17.06.2005 (Пт) 12:40

ANDLL писал(а):Чего-то я не вник...
1. Дешефруем(в файл FILE_NAME)
...


А с БД это проканает?
Бороться и искать, найти и перепрятать!

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 17.06.2005 (Пт) 13:18

А с БД еще проще! Открывает ее в режиме SHARE_DENY_ALL, потом закрывай ее и спокойно удаляй файл.
И не надо никакого API.
Или тебе надо удалить файл даже в том случае, если твоя программа завершилась экстренным образом(скажем через "завершить процесс" в task manager'е)?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 17.06.2005 (Пт) 14:54

Таки если это БД, зачем вообще чего-то шифровать? Создать пользователя с паролем, все запросы в программе делать от его имени... А за безопасность пусть сама БД отвечает. Или я чего-то не понял?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 17.06.2005 (Пт) 17:50

по моему самый лучший вариант:

uhm писал(а):Таки если это БД, зачем вообще чего-то шифровать? Создать пользователя с паролем, все запросы в программе делать от его имени... А за безопасность пусть сама БД отвечает. Или я чего-то не понял?


то есть зачем огород городить, если хорошо реализованная база данных может сама следить за своей безопасностью.
Весь мир матрица, а мы в нем потоки байтов!

MeMBus
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 450
Зарегистрирован: 23.02.2005 (Ср) 7:03
Откуда: Из леса...

Сообщение MeMBus » 20.06.2005 (Пн) 3:24

uhm писал(а):Таки если это БД, зачем вообще чего-то шифровать? Создать пользователя с паролем, все запросы в программе делать от его имени... А за безопасность пусть сама БД отвечает. Или я чего-то не понял?

БД сделана на основе mdb (Access 2002)... Будет ли эта БД отвечать твоим требованиеям безопасности...
FleX_2004 писал(а):я знаю! я знаю! спросите меня!!!! :) :) :)
А попробуй дорогой друг выгружать расшифрованное это дело не в файло а в память, а...

БД весит около одного гига, думаю не лучший способ ее пихать в память... А как выполнить поиск по всей БД если она дешифрована по кускам?
!Viper! писал(а):то есть зачем огород городить, если хорошо реализованная база данных может сама следить за своей безопасностью.

Прога работает через JET, база Access, можно ли реально защитить эту базу? Ведь открыть mdb’шник у меня проблем не будет, а все варианты защиты на Access БД достаточно быстро снимаются, ведь так?
Бороться и искать, найти и перепрятать!

MeMBus
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 450
Зарегистрирован: 23.02.2005 (Ср) 7:03
Откуда: Из леса...

Сообщение MeMBus » 21.06.2005 (Вт) 3:25

FleX_2004 писал(а):2MeMBus нда.... сложная задачка...... думаю вариант написать свою БД... со встроенным шифрованием ТВОИМ.... все что могу посоветовать.....

Ты представляешь себе процесс написания собственной БД? Можно же конечно там извратиться и попытаться что-то сделать, но реально чтоб получить хотя бы половинную скорость обработки данных нужно быть гением и иметь знакомых программеров, которые тебе помогут...
Думаю можно расширить тему до «защиты файлов от просмотра и копирования» и «защита БД Access». Все что я читал по этому поводу сводилось к защите непосредственно самого файла, т.к. защита Access достаточна слаба (принцип быстрой работы, чем лучшей защиты).
Бороться и искать, найти и перепрятать!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 21.06.2005 (Вт) 13:18

Думаю, что в описанных условиях продвинутый пользователь по любому сможет достать данные.
Попробуй перевести все на платформу более серьезной СУБД (MSDE, Firebird), там есть встроенные средства для секьюрити в БД. Но по любому, локальный доступ и безопасность понятия несовместимые.
Lasciate ogni speranza, voi ch'entrate.

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 21.06.2005 (Вт) 14:26

alibek писал(а):Но по любому, локальный доступ и безопасность понятия несовместимые

К сожалению это мало кто понимает, но все хотят именно так :cry:
А о том что под базу выделить ещё и сервак отдельный, это вообще считаеться преступлением :cry: (КАЗЛЫ!!! :evil: )
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 22.06.2005 (Ср) 13:54

В NTFS появилась возможность блокировать папки от юзера но не от системы. Можно создать новую папку и через advapi32 запретить к ней доступ. Даже если во время рантайма программу прервут доступа к данным не будет 8)
Если всё делать своими ручками, они скоро отвалятся !

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 22.06.2005 (Ср) 14:42

Ага! потом придет админ и быстренько сменит владельца папки и раздаст новые права. :wink:
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

MeMBus
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 450
Зарегистрирован: 23.02.2005 (Ср) 7:03
Откуда: Из леса...

Сообщение MeMBus » 22.06.2005 (Ср) 15:49

Igor_123 писал(а):
alibek писал(а):Но по любому, локальный доступ и безопасность понятия несовместимые

К сожалению это мало кто понимает, но все хотят именно так :cry:
А о том что под базу выделить ещё и сервак отдельный, это вообще считаеться преступлением :cry: (КАЗЛЫ!!! :evil: )


Сетевой доступ защищает? Защищает настолько, насколько хватит мозгов у админа... Ламануть все и вся можно, не мне это говорить...
Прога работает только в локале на 9х и NT системах... Посему не поставешь специально под прогу NTFS и SQL Server или еще чего лучше... На firebird тоже не пересадишь, т.к. нужно дополнительно ставить и настраивать... Просто думал что у кого-нить есть разумные идеи по разумной защите...
Бороться и искать, найти и перепрятать!

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 22.06.2005 (Ср) 16:05

твоя.mdb + твоя.mdw + шифрование твоей базы средствами акцесса

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 22.06.2005 (Ср) 16:07

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

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 22.06.2005 (Ср) 16:16

Ну FireBird можно использовать и embeded, тогда сервер не ставиться. и нужен только провайдер(ха! так не пробовал, надо попробовать), для доступа к данным.

Тебе сказали разумные идеи по разумной защите.

Т.к. я работаю с вариантом Yaffil SQL Server(клон InterBase), то и развивал бы его.
Даже если и инсталить, размер ~6Mb с полным комплектом для программера, зато после него мне совсем не хочеться осваивать акцесс. Есть особенности работы и сопровождения базы, но это дело наживное, на ibase.ru вагон доки.

По использованию, вот написал один товарищ:
%subj% - INFO: началась жизнь после 10GB
Привет всем. Вот вам чтиво на выходные.

Собственно [%subj%]

Тут года два назад спрашивали, какой объем информации хранят в базах с
"объектной" структурой "имени Котляревского"

На текущий момент у нас в корневых таблицах объектов
OBJECT: 2320509 записей (люди, организации, паспорта, адреса, объекты
недвижимости ...)
DOCUMENT: 4131889 records (всякие документы)

Новая страшная древовидная таблица ассоциаций DOCUMENT и OBJECT
STD_DOC_OBJ: 6724737 records

записи STD_DOC_OBJ тоже оформлены в виде объектов :) Кстати, эта таблица -
наше избавление от XML о котором, если кто помнит, я тут писал в
январе-феврале 2002 года.

После последней реорганизации и чистки структуры в базе осталось 140 таблиц.
К сожалению, эталонная конструкция структуры еще не получена - OBJECT и
DOCUMENT нужно объединять. Вот как тут не вспомнить убогость IB5.6

-------
Репликация:
За год восстановили около 12.5 тысяч пакетов
Таблица связей локальных и внешних идентификаторов - 14052763 records

формально это число можно принять за общее количество объектов основной БД
на 14 сентября 2004 года и 18 филиалов до текущего момента. Общее число
объектов на текущий момент (судя по другой базе, куда только заливают) -
около 18 млн. 4млн - это, скорее всего, число объектов созданных в рабочей
базе с 14 сентября 2004 года.

Среднее число изменений в рабочей базе центра за сутки - 13-15 тыс. Что
вполне согласуется с размером журнала изменений базы - 3556562 записей за 9
месяцев.

По объемам центр за сутки дает как минимум столько же сколько все филиалы.

Если строятся отчеты (результаты сохраняются в базе), то изменений
получается гораздо больше.

Размеры филиальных пакетов до 100KB - присылаются по почте.

Восстановление пакетов выполняется как правило по ночам, но очень часто
заливают и днем, при наличии активно работающих пользователей.

Репликация пока эксплуатируется в однонаправленном режиме.

Из интересных моментов - с помощью репликатора в январе этого года мы из
двух баз Елецкого филиала (город и район) сделали одну. Народ парился в
отдельными базами в течении 5 лет.

-------
Сбои узловых баз.

В июле 2004 года накрылась база одного филиала - восстанавливали из пакетов
репликации, которые прислали из этого филиала. 2 дня простоя филиала.

В октябре 2004 года - накрылась база еще одного филиала. Сливали данные
филиала из рабочей базы. Простой узла, по моей злобе душевной, составил 3
недели. В качестве оправдания было то, что мы провели тотальную ревизию
алгоритмов заливки данных. В реальности, это был филиал который "обучал"
пользователей других филиалов решать проблемы с помощью кнопки "reset".

В обоих случаях - данные заливались в пустую БД. Базам назначался новый
идентификатор.

Третим сбоем можно считать когда в указанном выше первом филиале 26 апреля
2005 перевели серверные часы на месяц вперед и вводили данные в течении
15-20 минут. Чернобыльцы, блин. "Чинили" оригинал и базы данных в центре.

-------
Тут я сделаю лирическое отступление - интересно какого размера гемморой
будет у людей, которые будут обслуживать объединенную БД по всей России?
Если такую смогут построить, конечно.

-------
Обслуживание.

У нас на сервере обслуживается 2 базы - рабочая (10GB) и дублирующая (чуть
меньше 9GB, в неё пишет только репликатор). Разница - это лог действий
пользователей.

Ночной процесс начинается в 22:00 заканчивается около 6:30. в общем -
время в притык.Сначало параллельные BR обоих баз - заканчиваются в 4 часа
ночи, потом идет
архивация старых баз и полученных бакапов + копирование архивов бакапов на
резервный сервер.

После BR (параллельно архивации) запускается резервирование изменений
рабочей базы. Потом запускается восстановление пакетов обновлений в базы.

Формально, у нас в запасе есть еще около 4-5 часов (можно раньше начать и
позже закончить). Без ночного BR база более менее работоспособна в течении 3
суток. Вообще говоря BR-это единственный знак внимания, который оказывают
FB. В остальном он работает в режиме, о котором пишут в рекламных
проспектах - на него просто напросто забивают. Конкретного человека,
которому поручено администирование у нас нет.

По вечерам руками убиваются зависшие процессы.

От дневных бакапов рабочей БД мы отказались - после того насилия которые
были учинены над базами во время последного обновления в мае этого года,
действия пользователей - это детский лепет. Короче, вера в FB 1.5 стала
твердой как курс партии. Тьфу-тьфу-тьфу

---------
Сервер базы данных FB 1.5.2 классик

OS: WIN2003

Железо - два ксеона 3.2, 12GB, разделы под базы и бакапы на RAID5 на пяти
сказевых винчестерах. Машину заказывали у аквариса. Машина, реально
навороченная, как раз для таких криворуких как мы - возможно из нее можно
выжать раза в два больше чем она дает, но - смотри выше про
профессионального
администратора.

За 9 месяцев эксплуатации этого сервера только один раз вышел из строя один
из винчестеров рейда. Потом его переткнули и он восстановился. Пользователи
ничего не заметили, а мы чуть от страха не померли. Я был без памперсов :(

---------
Реально, конечно, у нас тут вагон проблем связанных с тем, что многие вещи
заложены с избытком (ибо страшно - никто не знает, как это все должно
выглядеть на самом деле. А кто говорит что знает - врет). И скорее всего
основная проблема в том, что мы сами с трудом можем переварить сложность
управления такими проектами. Многие идеи проходят наскозь без шанса быть
освоенными. Катастрофически не хватает _нормальных_ людей.

Но тем не менее, судя по процессам протекающим в нашей предметной области
(а, ну да, я про регистрацию сделок с недвижимостью) мы на верном пути :)

Коваленко Дмитрий.
www.ibprovider.com

PS. Пользуясь случаем, передаю привет Еманову :)
PSS. А так же всем, кто пытается хоть что-то улучшить в этом мире :))
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 146

    TopList