Прошу Вас не пинайте сразу, подобная тема уже обсуждалась не раз.
Много информации прочитал в этом разделе по поводу контроля лицензий и организации контроля, после прочитанного — в голове каша и тяжело разобраться.
Опишу суть задачи — Разработал программу для продажи. Программа разработана на .NET и работает с MSSQL Server 2008. Продавать собираюсь через инет. Мне необходимо иметь контроль по кол-ву запущенных копии на каждую фирму. Как я вижу это:
1) Для каждой фирмы внутри программы нужно зашить какой-то GUID
2) Есть хостинг с MySQL где есть табличка в которой прописаны все GUID моих клиентов и кол-ва предоставленных копий.
3) Программа при запуске формирует зашифрованную строку и отправляет ее на сервер для определения — попадает ли эта копия в допустимый интервал разрешенных лицензий.
а) если лимит превышен — закрываем прогу с сообщением
б) если все впорядке — программа работает и каждую минут дает о себе знать на MySQL.
4) Кроме того в порграмме имеется автообновление которое выкладывается на хостинге.
Но задался вопросом — а что если в фирме стоит например 4 копии и вдруг отключили инет на день (поломка на линии например)? тогда до появления инета программа просто не запуститься. Как тогда контролировать кол-во запущенных копии в режиме off-line?
Думаю что нужно к основной программе создать маленькое приложение типа "Сервер контроля запущенных программ" и устанавливать непосредственно в офисе клиента на любой одной машине. А при доступе в инет — сверяться с данными на MySQL. Разумно ли это?
Может есть готовые проверенные продукты/решения для моей задачи?
Очень прошу совета!
С уважением.
Здравствуйте, marty33, Вы писали:
M>Добрый день Господа форумчане!
M>Опишу суть задачи — Разработал программу для продажи. Программа разработана на .NET и работает с MSSQL Server 2008. Продавать собираюсь через инет. Мне необходимо иметь контроль по кол-ву запущенных копии на каждую фирму. Как я вижу это:
а чего изволим лицензировать? людей или машин? тут сложная политическая ситуация возникает. если я купил одну копию на одного себя, но у меня два компа на работе (один мак с вынь виртуалкой и живая вынь) -- могу я работать с обоими? а если лицензия на девайс, то может ли на одном компе работать весь отдел (что технически вполне осуществимо).
в принципе, активация с привязкой к HW ID это вполне распростаненный вариант (хотя юзерам он не очень нравится и покупателей отбивает).
в рамках локальной сети очень просто написать программу, которая не сможет работать при наличии своей копии (поиск своих копий в сети, использование жестко прошитых портов при коннекте на сервер). вообще, наличие централизованной базы все упрощает.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, мыщъх, Вы писали:
М>Здравствуйте, marty33, Вы писали:
M>>Добрый день Господа форумчане!
M>>Опишу суть задачи — Разработал программу для продажи. Программа разработана на .NET и работает с MSSQL Server 2008. Продавать собираюсь через инет. Мне необходимо иметь контроль по кол-ву запущенных копии на каждую фирму. Как я вижу это:
М>а чего изволим лицензировать? людей или машин? тут сложная политическая ситуация возникает. если я купил одну копию на одного себя, но у меня два компа на работе (один мак с вынь виртуалкой и живая вынь) -- могу я работать с обоими? а если лицензия на девайс, то может ли на одном компе работать весь отдел (что технически вполне осуществимо).
Лицензировать думаю людей. Если чел. купил одну лицензию а стоит на нескольких машинах, то прога должна запуститься только на одной из машин. На остальных послать с сообщением "занято, свободных мест нет".
М>в принципе, активация с привязкой к HW ID это вполне распростаненный вариант (хотя юзерам он не очень нравится и покупателей отбивает).
О привязке в этом разделе писали, в основном про отрицательные стороны. Как и Вы пишите. Наверное привязку не стоит трогать из-за неудобства и проблем при обслуживании?
М>в рамках локальной сети очень просто написать программу, которая не сможет работать при наличии своей копии (поиск своих копий в сети, использование жестко прошитых портов при коннекте на сервер).
Вас не затруднит указать на пример? или вкратце описать принцып работы такой програмки? Думаю в дальнейшем это многим будет полезно.
Сегодня наткнулся на подобный пост в этом форуме — человек создал компонент для слежки за копией запусков. Называется VALLA. Стоит ее использовать как доплнение?
М>вообще, наличие централизованной базы все упрощает.
А что именно упрощает централизованная база? Я так полагаю, в программе прописать функции которые заносят инфу (предварительно собрав какую-то HWID) в одну талицу о запустившейся копии и с интервалом времени в эту же таблицу дают о себе знать. так же в программе прописать проверку на кол-во запущенных копий? Или же все гораздо проще чем я пологаю?
М>в рамках локальной сети очень просто написать программу, которая не сможет работать при наличии своей копии (поиск своих копий в сети, использование жестко прошитых портов при коннекте на сервер).
Да очень интересно как это сделать, по крайней мере хотя бы знать куда начинать копать.
У меня есть Lingvo, дак она примерно секунд через 10 после запуска ругается, что копия с точно таким же ключём уже запущенна, и типа это противоречит соглашениям и всё такое. Вот так бы сделать и ладно.
Здравствуйте, alex95, Вы писали:
A>Да очень интересно как это сделать, по крайней мере хотя бы знать куда начинать копать. A>У меня есть Lingvo, дак она примерно секунд через 10 после запуска ругается, что копия с точно таким же ключём уже запущенна, и типа это противоречит соглашениям и всё такое. Вот так бы сделать и ладно.
Стандартный вариант — broadcast'ом рассылать сообщение с кодом лицензии.
Здравствуйте, Cyberax, Вы писали:
C> A>Да очень интересно как это сделать, по крайней мере хотя бы знать куда начинать копать. C> A>У меня есть Lingvo, дак она примерно секунд через 10 после запуска ругается, что копия с точно таким же ключём уже запущенна, и типа это противоречит соглашениям и всё такое. Вот так бы сделать и ладно.
C> Стандартный вариант — broadcast'ом рассылать сообщение с кодом лицензии.
да, но админы в корпоративной среде за это бьют обычно
и это не одна проблема, броадкаст работает только в пределе ...*, то есть 255 штук
у меня у самого сделана проверка на броадкастах — есть клиент (ы? наверное уже да), который пишет, что у него на работе все пучком, а у жены дома не получается
Здравствуйте, anonimus, Вы писали:
A>Здравствуйте, Cyberax, Вы писали:
C>> A>Да очень интересно как это сделать, по крайней мере хотя бы знать куда начинать копать. C>> A>У меня есть Lingvo, дак она примерно секунд через 10 после запуска ругается, что копия с точно таким же ключём уже запущенна, и типа это противоречит соглашениям и всё такое. Вот так бы сделать и ладно.
C>> Стандартный вариант — broadcast'ом рассылать сообщение с кодом лицензии.
А не стандартный, но надежный вариант предложить можете?
A>да, но админы в корпоративной среде за это бьют обычно A>и это не одна проблема, броадкаст работает только в пределе ...*, то есть 255 штук A>у меня у самого сделана проверка на броадкастах — есть клиент (ы? наверное уже да), который пишет, что у него на работе все пучком, а у жены дома не получается
А как Вы решили эту проблему? Начали использовать какой-то другой механизм проверки?
Здравствуйте, alex95, Вы писали:
М>>в рамках локальной сети очень просто написать программу, которая не сможет работать при наличии своей копии (поиск своих копий в сети, использование жестко прошитых портов при коннекте на сервер).
A>У меня есть Lingvo, дак она примерно секунд через 10 после запуска ругается, A>что копия с точно таким же ключём уже запущенна, и типа это противоречит A>соглашениям и всё такое. Вот так бы сделать и ладно.
конкретно как работает лингво не скажу, но можно сделать, например, широковещательную UDP рассылку (правда, может порезать фаер), можно создавать скрытые шары в локальной сети и смотреть сколько их уже создано и с какими ключами (фаеру сложно будет это заблокировать, т.к. SMB внутри локалки обычно открыт). и это все без выделенного сервера. и без сканирования локальной сети на предмет обнаружения своих копий.
DNS протокол так же редко блокируют. и потому можно слать DNS запросы, используя, например, поле TXT (тут правда, вам нужен ваш DNS сервер за пределами локальной сети).
как я понял, у вас программа работает с базой данных? ну вот и пусть в базу попадает не только данные, но и "подпись" создателя, основанная на ключе. ну и смотреть от кого приходят запросы и в какой интерал времени. скажем, если ключ один, а клиентские машины разные -- грить, чтобы не наглели (типа юзер меняет IP с каждым запросом -- понятно, что тут юзер не один).
как вариант, чтобы и честных юзеров не щемить в критической для них ситуации и чтобы пиратов не баловать -- блокировать запрос на время выполнения запроса программы с таким же ключом. в этом случае две копии работать будут более или менее. а вот десять юзеров программу не поставят, т.к. им придетя поочередно обращаться к базе. вот обратился один, а другим говорим -- объявляем десятиминутный перерыв на обед. идите пить кофе. и так по кругу. столько кофе люди не выпьют
конечно, все это отламывается хакерами, но будем считать, что хакеров нет, т.к. создание серьезной защиты, взлом которой не окупится, это десятки килобаксов -- дешевле готовый электронный ключ купить. а попытки создания защиты без опыта либо приносят геморой юзерам, либо ломаются хакерами влет, либо вызывают конфликты и ругательства со стороны антивирусов и новых версий винды.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, anonimus, Вы писали:
A>да, но админы в корпоративной среде за это бьют обычно A>и это не одна проблема, броадкаст работает только в пределе ...*, то есть 255 штук A>у меня у самого сделана проверка на броадкастах — есть клиент (ы? наверное уже да), который пишет, что у него на работе все пучком, а у жены дома не получается
А сильно лучше не получится. Ну можно пытаться изращаться с попыткой определить внешний IP-адрес и учётом лицензий на нём.
Но тут стоит задуматься что важнее: клиенты или учёт лицензий?
Здравствуйте, Cyberax, Вы писали:
C> А сильно лучше не получится. Ну можно пытаться изращаться с попыткой определить внешний IP-адрес и учётом лицензий на нём.
C> Но тут стоит задуматься что важнее: клиенты или учёт лицензий?
Здравствуйте, мыщъх, Вы писали:
М>конкретно как работает лингво не скажу, но можно сделать, например, широковещательную UDP рассылку (правда, может порезать фаер), можно создавать скрытые шары в локальной сети и смотреть сколько их уже создано и с какими ключами (фаеру сложно будет это заблокировать, т.к. SMB внутри локалки обычно открыт). и это все без выделенного сервера. и без сканирования локальной сети на предмет обнаружения своих копий.
Обычно в локалке прокатывали mailslotы.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока