DevelNext — Активация программы через сервер с привязкой к железу

Программа передаёт ключ и id железа, на их основе сервер генерирует уникальный файл лицензии для каждого ПК. В последующие запуски активация через Интернет не требуется, т.к. данные об активации хранятся в лицензионном файле. В демо я сделал id железа = хэш sha-1 от uuid и id мат.платы, поэтому никакие личные данные никуда не утекут. Можно не вешать ssl на сервер, вряд ли что-то можно будет сделать, даже перехватив данные.

Описание алгоритма

Серверная часть

Скачать "DevelNext Activation Server" Загрузок: 1213

Клиент

Скачать "Windows-activation-client.zip" Версия: 2.0 | Загрузок: 103

Инструкция по установке

1. Установка на сервер
1.1 Скачать и распаковать скрипты для сервера
1.2 Создать базу данных SQL, сделать импорт файла dn.sql
1.3 Отредактировать файл config.php: указать логин/пароль для авторизации, параметры для подключения к MySQL, придумать секретный ключ, которым будет подписываться файл лицензии, его нужно будет прописать в программе-клиенте (далее).

2. Конфигурация клиента
2.1 Скачиваем проект с программой клиентом, открываем модуль Activation

2.2 В модуле указываем секретный ключ (такой же, как в конфигурации сервера из п.1.3), URL сервера, где установлен скрипт авторизации.
2.3 Для работы к проекту необходимо подключить пакет Windows
2.4 Обязательно отметьте галочку компилировать в байт-код, иначе смысла от такой активации не будет

Активация демо проекта настроена на этот сервер

Демо админ-панель


Открыть админ-панель в новом окне

[UPD] Исправлена ошибка «Uncaught Error: Cannot call ‘getTime’ method of non-object…»

DevelNext — Активация программы через сервер с привязкой к железу
Средняя оценка: 4
Голосов: 5

Добавить комментарий

  1. Отличная программа , если у когота не работает то пишите ему : https://vk.com/greentopfox

  2. alex.shopds:

    Извиняюсь если очевидная ошибка,но не совсем силён в этой области
    Веб морда работает как надо,взаимодействие скрипта с базой в норме.
    При запуске клиента сразу ошибка такого плана
    И крутит бесконечно
    Fatal error: Uncaught Error: Class ‘bundle\windows\Windows’ not found in res://app/modules/Activation.php on line 98, position 33

  3. При запуске проекта клиента пишет что нет пакета расширений Windows 2.0. Остальное работает. Помоги плиз!

  4. Помогу с настройкой, чтобы не доставили TsSaltan. Но не спамьте только)

  5. Помогите! В программе пишет для активации необходима интернет соединение!

  6. TsSaltan, как тебе скрин отправить?

  7. Dan:

    Ошибка в тексте: «т.к. программа скомпилирована в байткод, достать его будет проблематично»
    Строки не переводятся в байткод, и их легко достать из файлов проги. Лучше всего шифровать все это дело. Тем более если хостинг слабый, ведь часто люди просто закидывают слабые сервера (например, от 000webhost) запросами, чем можно легко положить человеку аккаунт на время, а в конце он может и бан словить.

  8. seapdesign:

    Клиент -> http://hub.develnext.org/project/XwPQonrLkF
    {«code»:404,»message»:»HTTP 404 Not Found»}

  9. Fatal error: Uncaught Error: Cannot call ‘getTime’ method of non-object in res://app/modules/Activation.php on line 57, position 105

    Что делать?

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

  11. При заходе на сайт вылазит это:
    ‘Новый ключ добавлен!’, ‘keyDeleted’ => ‘Ключ удалён’, ‘keyEdited’ => ‘Ключ изменён’, ]; if(isset($messages[$_GET[‘message’]])){ ?>
    Как исправить?

  12. хм а почему вы не запишите видео урок как все это сделать так было бы удобнее а то так не оч. пон. и появ. много вопросов.

    • TsSaltan:

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

  13. Помогите! В программе пишет для активации необходима интернет соединение!

  14. Zmalin:

    template.php не добавляет ключ, можно ли как нибудь в ручную его добавить?

  15. Аноним:

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

  16. Павел:

    Привет, у меня такая проблема скачать DevelNext 16.7.0 скачал проект установил пакет (Проект пакеты добавить пакет ) и пишет все равно, что нужно скачать пакет dn-windows-bundle.dnbundle в чем может быть проблема ? Ибо я впервые пользуюсь данной программой.

    • Аноним:

      Пакет мало установить в систему, ее в при конкретном проекте, нужно перетащить в верхнее поле с нижнего, где она отображалась как установленная…

  17. Nelegal-38:

    Одним и тем же ключом активировал несколько программ на разных компьютерах. Вывод, нет привязки по железу…

  18. Nikl:

    Не работает активация в online режиме лог фаил жалуется на несоответствие времени

  19. Руслан:

    Почему у меня весь template.html в каракулях?

  20. Аноним:

    Блин это же гениально как я до этого не мог додуматься
    и знаешь что ты крутой кодер или как вас там завут

  21. DraonKHacks:

    Что такое ‘Авторизационные данные’ в config.php к чему они?

  22. Аноним:

    При заходе на сайт вылазит это:
    ‘Новый ключ добавлен!’, ‘keyDeleted’ => ‘Ключ удалён’, ‘keyEdited’ => ‘Ключ изменён’, ]; if(isset($messages[$_GET[‘message’]])){ ?>
    Как исправить?

  23. RenX:

    Система очень уязвима. Смотри…. когда из базы удалить ключ и отмотать время на компе (клиенте) , то можно пользоваться программой сколько захочешь (отматывая время) при условии что нет ключа. И просто без удаления ключа из базы данных, можно отмотать время назад и юзать прогу сколько угодно. Т.к программа обращается к серверу когда лицензия закончится( а время она берет не из сервера а из компа-клиента).
    Т.е в базе данных время истекло, а на компе-клиенте нет, и юзай прогу сколько влезет отматывая время.

    • RenX:

      тестировал на 2-х ноутбуках в течении 3-х дней

    • Аноним:

      Если не трудно подскажите код как можно дату сверить со временем в интернете? Я прописывал в Activation.php $now = Time::now(TimeZone::of(‘Moscow’))->getTime(); но это время компютера а как в интернет выйти?

      • Аноним:

        Создаешь файл php на серве пишешь туда это

        date_default_timezone_set(«Europe/Moscow»);
        $today[1] = date(«H:i:s»);
        $date = gmdate(«Y-m-d $today[1]»);
        $timestamp = strtotime($date);
        echo $timestamp;

        На $now в клиенте ставишь file_get_contents этого файлика profit

        • Nikl:

          Пожалуйста помоги разобраться — почему когда скрипт на сервере online выдает ошибку после ввода серийного номера —
          Fatal error: Uncaught Error: Cannot call ‘getTime’ method of non-object in res://app/modules/Activation.php on line 63, position 105
          Stack Trace:
          #0 app\forms\ActivationForm->doActivateAction() called at [res://php/gui/UXNodeWrapper.php:252]
          #1 app\modules\Activation::getLicense() called at [res://app/forms/ActivationForm.php:22]
          #2 app\modules\Activation::is() called at [res://app/modules/Activation.php:86]
          #3 app\modules\Activation::getLicenseFileParams() called at [res://app/modules/Activation.php:33]
          #4 {main}
          thrown in res://app/modules/Activation.php on line 63

  24. Аноним:

    При нажатии на «Получить лицензию» выдаёт ошибку Fatal error: Uncaught Error: Cannot call ‘getTime’ method of non-object in res://app/modules/Activation.php on line 57, position 105

    • Nikl:

      Я заметил что эта ошибка зависит от того имеется ли какая-нибудь надпись в окне ввода при стартовом запуске программы если да то начинает выдавать такую ошибку но если окно ввода пусто при первом запуске то все нормально. Причем окно запуска нужно сделать пустым еще до сборки программы в devel…

    • Аноним:

      Эта ошибка будет существовать до тех пора, пока не удалишь файл лицензии, он будет нулевого размера! Но при повторном запуске скрипта протекции, сразу не будет, выскочит форма ввода ключа, но с сервером связи (с требуемой конфигурацией) не, и файл лицензии просто создастся пустой, т.е нулевой. это связано с тем, что хостинг, где установлена серверная часть скрипта, не соответствует по настройкам (в файле php.ini) с требуемыми. С какими, я не стал выяснять, просто сменил хостинг на иной, и все заработало.

  25. Аноним:

    Parse error: syntax error, unexpected ‘[‘ in /var/www/u0314106/data/www/mushroomeater.pw/license/index.php on line 18

  26. Аноним:

    Спасибо, отличный исходник, пригодится!