Russian Qt Forum
Ноябрь 24, 2024, 04:56
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
создание триальной проги
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: создание триальной проги (Прочитано 9168 раз)
Sergey_N
Гость
создание триальной проги
«
:
Январь 14, 2009, 17:08 »
Добрый день
Мне нужно сделать свою QT прогу, работающую под Mac OS, триальной.
Чтобы она работала только 15 дней после первого запуска.
Я хочу использовать такой алгоритм:
1. Во время первого запуска программа генерит уникальный идентификатор машины, на которй работает.
Соединяется с веб-сервером и передает ему этот идентификатор.
2. Скрипт на веб-сервере ищет в базе данных полученный ID. Если находит - дата берется из базы. Если нет - вставляет в базу строку с ID и текущей датой и использует текущую дату.
3. Скрипт на веб-сервере возвращает программе зашифрованную дату первого использования. ID используется как пароль.
4. Программа проверяет, прошло ли 15 дней с полученной даты. Если прошло - отказывается работать.
Программа кеширует результат, полученный от веб сервера, используя QSettings, так что нужно только одно обращение в самом начале использования программы.
У меня 2 вопроса:
1. Как создать уникальный идентификатор для машины с Mac OS? Так чтобы он был действительно уникальным и в то же время не менялся время от времени. Я думал о QNetworkInterface::hardwareAddress(). Но как быть если на машине несколько интерфейсов? Какой из них использовать? Может быть есть более подходящие уникальные параметры?
2. Достаточно ли хорош описанный мной алгоритм? Может быть это можно сделать как-то по-другому и более надежно?
--
Сергей
Записан
ритт
Гость
Re: создание триальной проги
«
Ответ #1 :
Январь 14, 2009, 17:20 »
сопутствующие вопросы:
* если выход в инет отсутствует или запрещён?
* если нет ни одной сетевой карты?
* если после получения от сервера данных найти кэшированное значение и удалить его/изменить?
* если после первого соединения hardwareAddress был изменён (изменилась железка, адрес изменили вручную и т.п.)?
Записан
Frol
Гость
Re: создание триальной проги
«
Ответ #2 :
Январь 14, 2009, 21:54 »
* если выкорчевать хрень которая отказывается работать?? то даже после синхнронизации всё будет плавно...
Записан
Detonator
Гость
Re: создание триальной проги
«
Ответ #3 :
Январь 15, 2009, 00:36 »
Проще раздавать демонстрационный регкод, работающий до какого-то числа. Каждый день на сайте, или где он пользователями будет браться, его обновлять. Или вообще генерить и раздавать персонально.
При проверке на компе брать информацию о текущей дате не напрямую, а пособирать последние даты изменения системных файлов и т.д. чтобы исключить когда пользователь влоб меняет дату назад.
Записан
BaltikS
Гость
Re: создание триальной проги
«
Ответ #4 :
Январь 15, 2009, 07:44 »
Если поможет, то для генерации уникального имени можно использовать класс QUuid и использовать его так:
Код:
QUuid::createUuid().toString()
... Но в то же время он зависит от времени...
«
Последнее редактирование: Январь 15, 2009, 09:58 от BaltikS
»
Записан
alexandr_ps
Гость
Re: создание триальной проги
«
Ответ #5 :
Январь 15, 2009, 12:11 »
Идея с QUuid кажется оптимальной, ведь генерирует он очень большое число и вероятность того, что 2 таких числа совпадут практически нереальна.
А что значит зависит от времени? Ну да при генерации идентификатора используется текущее время как одна из составляющих. И в чем проблема, не вкурил что-то?
Записан
BaltikS
Гость
Re: создание триальной проги
«
Ответ #6 :
Январь 15, 2009, 12:19 »
Цитировать
был действительно уникальным и в то же время не менялся время от времени
Записан
Sergey_N
Гость
Re: создание триальной проги
«
Ответ #7 :
Январь 15, 2009, 13:51 »
Цитата: alexandr_ps от Январь 15, 2009, 12:11
Идея с QUuid кажется оптимальной, ведь генерирует он очень большое число и вероятность того, что 2 таких числа совпадут практически нереальна.
А что значит зависит от времени? Ну да при генерации идентификатора используется текущее время как одна из составляющих. И в чем проблема, не вкурил что-то?
Идентификатор нужен вот для чего: Допустим пользователь поставил программу, получил триальный код на сайте. Причем неважно, программа сделала это сама; пользователь получил, заполнив форму на сайте; или я отправил ему по email. Потом он снес прогу, после того, как она отработала 15 дней и вычистил с компа все "начки", в которых хранилась информация о триальности. Ставит прогу снова. Запрашивает новый триальный код. Я или скрипт на сайте должны понять, что прога уже активизировалась на этом компьютере. И именно для этого нужен уникальный код, однозначно идентифицирующий машину. Как пример такого кода - серийный номер Bios, Mac адреса сетевых интерфейсов...
Поэтому QUuid совсем не подходит. Так как после сноса проги и чистки заначек он будет сгенерен новый. И прога опять может быть активирована.
У меня сейчас осталось 3 вопроса по этой теме:
1. Если использовать MAC-адреса сетевых интерфейсов в качестве уникального ключа, как быть если они меняются количеством - например при установке VMWare их количество удваивается? Можно ли считать что комп тот же самый, если из 5 интерфейсов только у одного такой же мак-адрес, как и у другого компа?
2. По каким файлам определять текущую дату? Ведь я не могу просканировать всю файловую систему. Это займет очень много времени.
3. Как в Mac OS получить серийный номер BIOS? - его можно было бы использовать как еще одну составляющую ключа.
Записан
Sergey_N
Гость
Re: создание триальной проги
«
Ответ #8 :
Январь 15, 2009, 14:02 »
Цитата: Константин от Январь 14, 2009, 17:20
* если выход в инет отсутствует или запрещён?
* если нет ни одной сетевой карты?
Прогой нельзя будет пользоваться. Поскольку активация происходит через интернет, сетевой интерфейс нужен однозначно.
Как вариант можно использовать серийный номер BIOS и offline-активацию по email/телефону. Но это сути не меняет. Для начала все равно нужно реализовать online вариант.
Цитата: Константин от Январь 14, 2009, 17:20
* если после получения от сервера данных найти кэшированное значение и удалить его/изменить?
Прога каждый раз будет брать серийный номер компа и смотреть, этот ли серийный номер в кешированных данных. К тому же они будут храниться в зашифрованном виде. Так что исправить корректно их довольно проблематично. А просто сломав, прога откажется работать, потребовав заново получить триальный код с сайта.
Цитата: Константин от Январь 14, 2009, 17:20
* если после первого соединения hardwareAddress был изменён (изменилась железка, адрес изменили вручную и т.п.)?
Вот этот вопрос для меня неразрешим. Но работают же как-то фирменные системы активации той же Windows, Adobe...
Может кто знает как они работают?
Записан
kirill
Гость
Re: создание триальной проги
«
Ответ #9 :
Январь 15, 2009, 14:28 »
Привязка к оборудованию не есть гуд на мой взгляд. Как показывает практика оборудование меняется чаще, чем того ожидает программист )))
Может лучше посадить в недра системы неудаляемого жучка?
Записан
xintrea
Супер активный житель
Offline
Сообщений: 754
Re: создание триальной проги
«
Ответ #10 :
Январь 15, 2009, 14:33 »
Цитата: Sergey_N от Январь 15, 2009, 14:02
Цитата: Константин от Январь 14, 2009, 17:20
* если выход в инет отсутствует или запрещён?
* если нет ни одной сетевой карты?
Прогой нельзя будет пользоваться. Поскольку активация происходит через интернет, сетевой интерфейс нужен однозначно.
И конечно, твоя сетевая часть будет работать через PROXY всяких видов (HTTP,HTTPS,SOKS4,SOKS5) ? Или обязательно нужно будет иметь прямой доступ в инет?
Записан
Собираю информацию по крупицам
http://webhamster.ru
SABROG
Гость
Re: создание триальной проги
«
Ответ #11 :
Январь 15, 2009, 14:36 »
Если наличие интернета так критично, то почему бы не сделать проверку времени на основе NTP протокола (UDP). При запуске программа ломится в инет (
http://www.ntp.org/
) и спрашивает который час.
Защиту от "дурака" сделаешь, но обычно люди, которые пользуются *nix'ами не настолько тупы. И твою прогу пропатчат и эмулятор сделают и драйвера напишут.
Урезай функционал лучше. Чего не скачалось, того не крякнеш. Правда стоит одному купить и выложить для всех как все твои усилия сведутся на нет.
Записан
Sergey_N
Гость
Re: создание триальной проги
«
Ответ #12 :
Январь 15, 2009, 16:45 »
Цитата: xintrea от Январь 15, 2009, 14:33
И конечно, твоя сетевая часть будет работать через PROXY всяких видов (HTTP,HTTPS,SOKS4,SOKS5) ? Или обязательно нужно будет иметь прямой доступ в инет?
Вот с этим я не совсем знаком. Я пользуюсь просто методом QHttp::request, где проставляю адрес сервера и переменные запроса POST. Чтобы работало PROXY всяких видов (HTTP,HTTPS,SOKS4,SOKS5) нужны еще какие-то телодвижения?
Записан
niXman
Гость
Re: создание триальной проги
«
Ответ #13 :
Январь 15, 2009, 18:51 »
Цитата: SABROG от Январь 15, 2009, 14:36
обычно люди, которые пользуются *nix'ами не настолько тупы. И твою прогу пропатчат и эмулятор сделают и драйвера напишут.
Да да да...
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...