Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.10.2011, 14:09
Olimer Olimer вне форума
Прохожий
 
Регистрация: 26.10.2011
Адрес: ПодМосква
Сообщения: 6
Версия Delphi: 7
Репутация: 10
По умолчанию Ограничение числа пользователей программы

Здравствуйте.

Появилась необходимость реализовать следующее. Разрешить одновременную работу только N копий программы. Сижу, туплю, даже не знаю как подступиться. Может быть кто-то уже решал данную проблемку, подскажите.
Ответить с цитированием
  #2  
Старый 26.10.2011, 14:33
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Смотри как запретить одновременный зпуск 2х копий программы, и изменяй алгоритм таким образом чтобы запретить запуск n+1 копии программы.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #3  
Старый 26.10.2011, 15:02
Olimer Olimer вне форума
Прохожий
 
Регистрация: 26.10.2011
Адрес: ПодМосква
Сообщения: 6
Версия Delphi: 7
Репутация: 10
По умолчанию

я так понимаю ограничение на запуск 1 копии это локальная фишка? Я, наверное, неправильно описал. Программа может быть установлена не только на 1 компьютере. Получается, наверное, что надо ограничение делать как-то по сети.
Ответить с цитированием
  #4  
Старый 26.10.2011, 15:18
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от Olimer
Разрешить одновременную работу только N копий программы
Цитата:
Сообщение от Olimer
Программа может быть установлена не только на 1 компьютере.
т.е., к примеру, программа устанавливается на 10 компьютеров, а работать с ней можно не больше, чем на 5 одновременно? или вообще можно установить только на 5 компьютеров?
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 26.10.2011, 15:33
Asmoday74 Asmoday74 вне форума
Прохожий
 
Регистрация: 12.10.2010
Адрес: Челябинск
Сообщения: 22
Версия Delphi: XE2
Репутация: 893
По умолчанию

Если программа имеет серверную часть то реализуй проверку на сервере по количеству подключений например. Если же нет, тогда думаю придется использовать какие-либо серийные номера для каждой копии. Есть еще вариант обмена широковещательными пакетами в сети, но не факт что они будут разрешены и все компьютеры будут в одной подсети.
Ответить с цитированием
  #6  
Старый 26.10.2011, 21:33
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Опять наивные попытки защитить программу. Неужели каждому хочется набить личную шишку, чужие не убеждают?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #7  
Старый 26.10.2011, 21:56
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Цитата:
Сообщение от angvelem
Опять наивные попытки защитить программу. Неужели каждому хочется набить личную шишку, чужие не убеждают?
Деньгиденьгиденьгиденьгиденьгиденьгиденьгиденьги.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #8  
Старый 27.10.2011, 10:40
Olimer Olimer вне форума
Прохожий
 
Регистрация: 26.10.2011
Адрес: ПодМосква
Сообщения: 6
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
т.е., к примеру, программа устанавливается на 10 компьютеров, а работать с ней можно не больше, чем на 5 одновременно? или вообще можно установить только на 5 компьютеров?

Да, именно так.
Ответить с цитированием
  #9  
Старый 27.10.2011, 10:42
Olimer Olimer вне форума
Прохожий
 
Регистрация: 26.10.2011
Адрес: ПодМосква
Сообщения: 6
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Asmoday74
Если программа имеет серверную часть то реализуй проверку на сервере по количеству подключений например. Если же нет, тогда думаю придется использовать какие-либо серийные номера для каждой копии. Есть еще вариант обмена широковещательными пакетами в сети, но не факт что они будут разрешены и все компьютеры будут в одной подсети.

Похоже это единственный вариант это использование своего сервера. Сделать какую-то привязку ко времени запуска и каждые N минут стучать на сервер, что программа запущена. С серийными номерами непонятно, как ограничивать количество одновременно запущенных копий.
Ответить с цитированием
  #10  
Старый 27.10.2011, 10:43
Olimer Olimer вне форума
Прохожий
 
Регистрация: 26.10.2011
Адрес: ПодМосква
Сообщения: 6
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
Опять наивные попытки защитить программу. Неужели каждому хочется набить личную шишку, чужие не убеждают?

Наивно ничего не делать и надеяться на откровенную честность.
Ответить с цитированием
  #11  
Старый 27.10.2011, 10:55
Armiol Armiol вне форума
Прохожий
 
Регистрация: 22.08.2011
Сообщения: 1
Репутация: 10
По умолчанию

Есть еще вариант использование аппаратных ключей типа HASP или Guardant для работы по сети. Почитай у них на сайте расписано. Правда этот вариант в основном используют для достаточно дорогого ПО.
Ответить с цитированием
  #12  
Старый 27.10.2011, 12:37
Аватар для Thrasher
Thrasher Thrasher вне форума
Illuminati
 
Регистрация: 06.03.2008
Адрес: Крым, г. Симферополь
Сообщения: 348
Репутация: 8808
По умолчанию

Если есть возможность сделать сетевую защиту - то лучше применять её.
Но в любом случае есть возможность её сломать. Вопрос во времени. Использовать навесные протекторы - это упростить взлом. Их уже изучают долго поэтому написано достаточное количество утилит.

Что предлагаю:

Сетевое лицензирование.

1. Сервер лицензий.
Реализация:
Есть сервер лицензий, в котором прописано количество возможных подключений. Каждая копия программы имеет ключ (число, строка, набор байт), который передается на сервер при запуске. Сервер получает серийный номер, верифицирует его и отправляет ответ - разрешен запуск или нет (естественно каждый раз по разному).

Преимущества: Нет надобности привязывать лицензию к конкретной машине. Гибкая политика лицензирования.

Недостаток: Эмуляция сервера после снифа пакетов. Рано или поздно составят таблицу вопросов-ответов

2. Сервер лицензий + исполнение кода на сервере

Реализация: Как в первом варианте, но добавляется засылка запроса с необходимыми данными на сервер, где производятся вычисления и результат отсылается назад, где используется для проведения дальнейших операций.

Преимущества:

Как и в первом варианте плюс малая вероятность эмулировать сервер. Довольно сложно для взлома.

Недостаток:

Необходима надежная серверная часть. В случае выхода из строя сервера или критической ошибки серверной части парализуется работа всех приложений.

Аппаратная защита.

1. Электронный ключ.
Приводить описание не буду - полно в интернете.
Преимущества:
Довольно тяжело снять грамотно поставленную защиту. Однако есть в сети много инструментов, да и групп которые пишут эмуляторы под конкретные программы.
Недостатки:
Для каждой копии - один ключ. В случае сетевого лицензирования необходим отдельный сервер (необязательно аппаратный).

Софтварная защита

Тут все зависит от опыта. Грамотно сделанная защита практически невзламываемая (кардинг не в счет). Как пример программ приведу Oxygen Manager и продукты от ElkomSoft. Все что лежит в сети - это кардинг. Не стоит делать сравнения типа серийник-имя - такие защиты взлямываются за минуты, если не за секунды. Всякие ухищрения типа отдельных потоков тормозят работу взломщика ровно на то, чтобы приаттачится к треду.
__________________
Хорошо написанная программа не требует документации
ICQ 9-184-668.
Ответить с цитированием
  #13  
Старый 27.10.2011, 12:55
Asmoday74 Asmoday74 вне форума
Прохожий
 
Регистрация: 12.10.2010
Адрес: Челябинск
Сообщения: 22
Версия Delphi: XE2
Репутация: 893
По умолчанию

Если пишешь софт под конкретную фирму, то думаю сойдет небольшой сервер лицензий самописный который они смогут поднять в сети у себя. Зачастую в мелких компаниях проще заплатить 2-3к чем искать программиста который грамотно ломанет софт. К тому же если ты пишешь этот софт и имеешь доступ к клиентским машинам (установ, тестирование, настройка) факт взлома все равно будет замечен.
Ответить с цитированием
  #14  
Старый 28.10.2011, 10:29
Olimer Olimer вне форума
Прохожий
 
Регистрация: 26.10.2011
Адрес: ПодМосква
Сообщения: 6
Версия Delphi: 7
Репутация: 10
По умолчанию

Thrasher, спасибо за подробное разъяснение. Думаю, что выберу вариант с севером + ассиметричное шифрование. В этом случае, подделать пакеты практически нереально, разве что полностью расковыривать программу, но думаю, что до такого не должно дойти.
Смотрел вариант с аппаратными ключами, в целом супер. Но стоимость их.. надо будет уточнить у руководства, если разрешат пользовать. То возьму Guardant Sign, наверное, у них на сайте нашел обучалки и примеры реализации подобных вещей. Но тут уже от начальства больше зависит. Но все равно спасибо большое за такой разъвернутый ответ.

Asmoday74, спасибо за ответ, я тоже думаю, что до серьезного взлома не дойдет, поэтому буду делать сервер защиты.
Ответить с цитированием
  #15  
Старый 10.11.2011, 23:57
едц едц вне форума
Прохожий
 
Регистрация: 10.11.2011
Сообщения: 1
Репутация: 10
По умолчанию

Рекомендую аппаратные ключи.

Как верно заметил уважаемый Thrasher, эмуляторы в сети встречаются. Однако нужно заметить, что только для старого поколения ключей. Современные содержат асимметричную криптографию. Вопрос-ответ всегда разные, поэтому создавать табличный эмулятор бессмысленно (а при грамотной реализации логики проверок отломать саму защиту - та еще задача).

В комплекте с сетевыми ключами уже есть сервер лицензирования.
Таким образом ключ можно воткнуть в клюбой комп в сети и будет одновременно работать не более оплаченного числа лицензий.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:14.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter