|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Ограничение числа пользователей программы
Здравствуйте.
Появилась необходимость реализовать следующее. Разрешить одновременную работу только N копий программы. Сижу, туплю, даже не знаю как подступиться. Может быть кто-то уже решал данную проблемку, подскажите. |
#2
|
||||
|
||||
Смотри как запретить одновременный зпуск 2х копий программы, и изменяй алгоритм таким образом чтобы запретить запуск n+1 копии программы.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#3
|
|||
|
|||
я так понимаю ограничение на запуск 1 копии это локальная фишка? Я, наверное, неправильно описал. Программа может быть установлена не только на 1 компьютере. Получается, наверное, что надо ограничение делать как-то по сети.
|
#4
|
||||
|
||||
Цитата:
Цитата:
Пишу программы за еду. __________________ |
#5
|
|||
|
|||
Если программа имеет серверную часть то реализуй проверку на сервере по количеству подключений например. Если же нет, тогда думаю придется использовать какие-либо серийные номера для каждой копии. Есть еще вариант обмена широковещательными пакетами в сети, но не факт что они будут разрешены и все компьютеры будут в одной подсети.
|
#6
|
||||
|
||||
Опять наивные попытки защитить программу. Неужели каждому хочется набить личную шишку, чужие не убеждают?
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#7
|
||||
|
||||
Цитата:
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#8
|
|||
|
|||
Цитата:
Да, именно так. |
#9
|
|||
|
|||
Цитата:
Похоже это единственный вариант это использование своего сервера. Сделать какую-то привязку ко времени запуска и каждые N минут стучать на сервер, что программа запущена. С серийными номерами непонятно, как ограничивать количество одновременно запущенных копий. |
#10
|
|||
|
|||
Цитата:
Наивно ничего не делать и надеяться на откровенную честность. |
#11
|
|||
|
|||
Есть еще вариант использование аппаратных ключей типа HASP или Guardant для работы по сети. Почитай у них на сайте расписано. Правда этот вариант в основном используют для достаточно дорогого ПО.
|
#12
|
||||
|
||||
Если есть возможность сделать сетевую защиту - то лучше применять её.
Но в любом случае есть возможность её сломать. Вопрос во времени. Использовать навесные протекторы - это упростить взлом. Их уже изучают долго поэтому написано достаточное количество утилит. Что предлагаю: Сетевое лицензирование. 1. Сервер лицензий. Реализация: Есть сервер лицензий, в котором прописано количество возможных подключений. Каждая копия программы имеет ключ (число, строка, набор байт), который передается на сервер при запуске. Сервер получает серийный номер, верифицирует его и отправляет ответ - разрешен запуск или нет (естественно каждый раз по разному). Преимущества: Нет надобности привязывать лицензию к конкретной машине. Гибкая политика лицензирования. Недостаток: Эмуляция сервера после снифа пакетов. Рано или поздно составят таблицу вопросов-ответов 2. Сервер лицензий + исполнение кода на сервере Реализация: Как в первом варианте, но добавляется засылка запроса с необходимыми данными на сервер, где производятся вычисления и результат отсылается назад, где используется для проведения дальнейших операций. Преимущества: Как и в первом варианте плюс малая вероятность эмулировать сервер. Довольно сложно для взлома. Недостаток: Необходима надежная серверная часть. В случае выхода из строя сервера или критической ошибки серверной части парализуется работа всех приложений. Аппаратная защита. 1. Электронный ключ. Приводить описание не буду - полно в интернете. Преимущества: Довольно тяжело снять грамотно поставленную защиту. Однако есть в сети много инструментов, да и групп которые пишут эмуляторы под конкретные программы. Недостатки: Для каждой копии - один ключ. В случае сетевого лицензирования необходим отдельный сервер (необязательно аппаратный). Софтварная защита Тут все зависит от опыта. Грамотно сделанная защита практически невзламываемая (кардинг не в счет). Как пример программ приведу Oxygen Manager и продукты от ElkomSoft. Все что лежит в сети - это кардинг. Не стоит делать сравнения типа серийник-имя - такие защиты взлямываются за минуты, если не за секунды. Всякие ухищрения типа отдельных потоков тормозят работу взломщика ровно на то, чтобы приаттачится к треду. Хорошо написанная программа не требует документации ICQ 9-184-668. |
#13
|
|||
|
|||
Если пишешь софт под конкретную фирму, то думаю сойдет небольшой сервер лицензий самописный который они смогут поднять в сети у себя. Зачастую в мелких компаниях проще заплатить 2-3к чем искать программиста который грамотно ломанет софт. К тому же если ты пишешь этот софт и имеешь доступ к клиентским машинам (установ, тестирование, настройка) факт взлома все равно будет замечен.
|
#14
|
|||
|
|||
Thrasher, спасибо за подробное разъяснение. Думаю, что выберу вариант с севером + ассиметричное шифрование. В этом случае, подделать пакеты практически нереально, разве что полностью расковыривать программу, но думаю, что до такого не должно дойти.
Смотрел вариант с аппаратными ключами, в целом супер. Но стоимость их.. надо будет уточнить у руководства, если разрешат пользовать. То возьму Guardant Sign, наверное, у них на сайте нашел обучалки и примеры реализации подобных вещей. Но тут уже от начальства больше зависит. Но все равно спасибо большое за такой разъвернутый ответ. Asmoday74, спасибо за ответ, я тоже думаю, что до серьезного взлома не дойдет, поэтому буду делать сервер защиты. |
#15
|
|||
|
|||
Рекомендую аппаратные ключи.
Как верно заметил уважаемый Thrasher, эмуляторы в сети встречаются. Однако нужно заметить, что только для старого поколения ключей. Современные содержат асимметричную криптографию. Вопрос-ответ всегда разные, поэтому создавать табличный эмулятор бессмысленно (а при грамотной реализации логики проверок отломать саму защиту - та еще задача). В комплекте с сетевыми ключами уже есть сервер лицензирования. Таким образом ключ можно воткнуть в клюбой комп в сети и будет одновременно работать не более оплаченного числа лицензий. |