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

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

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

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

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

Клиент

Скачать "Windows-activation-client.zip" Загрузок: 1245

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

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…”

4.4/5 - (9 голосов)

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

  1. bolshak:

    Помогите , вот такая ошибка когда ввожу ключ активации
    Fatal error: Uncaught Error: Class ‘bundle\windows\Windows’ not found in res://app/modules/Activation.php on line 98, position 33
    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::getSystemID() called at [res://app/modules/Activation.php:74]
    #3 {main}
    thrown in res://app/modules/Activation.php on line 98

    • Malinkhiii:

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

      • TsSaltan:

        Если на одном ПК работают и программа, и локальный веб сервер, то конечно будет слетать активация при смене времени

        • Malinkhiii:

          Привет..у меня сервер на Хосте не на локальном компютере . Может где нужно поставить галочку ?? А то действительно программа становится без смысла. Дай пожалуйста подробную инструкцию по Активации продукта . За раннее спасибо !

  2. Malinkhiii:

    Привет всем уже всю голову изломал !! Помогите пожалуйста при в воде ключа лицензии появляется вот эта ошибка!

    ошибка: java.io.ioexception: cannot run program

    ЧТО ДЕЛАТЬ???

    • Malinkhiii:

      Короче сам разобрался проблема в пакете Windows 2.2 просто поставил версию 2.0 и заработало всё нормально ..

      Но к сожалению есть дыра с временим если на ПК меняешь дату то лицензия не работает пока не знаю как это исправить так как я новичок и не понимаю код. Если есть люди кто может помочь то пожалуйста помогите с этим … За раннее спасибо ..

  3. Всё настроил, работает, помогите сделать проверку по времени в интернете, ниже способы описывали – пробовал, всё компилируется, но попросту не работает проверка.

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

    PHP перепробовал все версии, от 5 до 8.
    в php.ini прописывал short_open_tag = on

    Помогите, отблагодарю $

  5. Привет, распаковал, установил на сервер, изменил конфиг, при HTTP авторизации просто перезагружается страница. Опишу подробно: захожу на index.php, ввожу авторотационные данные, которые указаны в config.php, после этого просто страница перезагружается и снова просит ввести эти данные, то есть я даже не могу просмотреть таблицу. Если в файле index.php убрать строки 4-8, то авторизации не будет и я получаю доступ к таблице: просмотр, добавление и удаление ключей работают отлично. Как сделать авторизацию ?

  6. Арсен:

    Как решить проблему с ошибкой: Ключ недействительный ?

  7. Fantassy:

    помогите, в программе когда ввожу ключ активаций то выдает такую ошыбку:

    Fatal error: Uncaught Error: Class ‘bundle\windows\Windows’ not found in res://app/modules/Activation.php on line 98, position 33
    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::getSystemID() called at [res://app/modules/Activation.php:74]
    #3 {main}
    thrown in res://app/modules/Activation.php on line 98

  8. SkeTlik:

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

    Notice: Undefined index: message in /storage/ssd4/718/15583718/public_html/index.php on line 26

    Notice: Undefined variable: messages in /storage/ssd4/718/15583718/public_html/index.php on line 26

    Notice: Trying to access array offset on value of type null in /storage/ssd4/718/15583718/public_html/index.php on line 26

  9. Max:

    В программе реализовал это и все отлично! Такой вопрос – можно ли и как это сделать, использовать эту авторизацию через эту же базу данных, использовать для авторизации на сайте?

  10. SkeTlik:

    Смотрим INFO APLICATION всегда и начинающим как я Секретный ключ не понятен

  11. Не понял вишку что куда ставить зачм и как попонятние надо объяснять .

  12. INTROSET:

    [ERROR] Для работы данного проекта необходимо установить пакет расширений Windows версии 1.0
    [ERROR] Скачать данный пакет можно по ссылке: https://tssaltan.ru/1156.develnext-windows/#download
    не могу найти версию 1.0
    С версией 2.2 не работает

  13. Стикс:

    Установил веб часть, при заходе на сайт в input полях выводит текст по типу: <?=implode, <?=key. Как фиксить

  14. Канал:

    ошибка: WindowsScriptHOst Error : Отсуствуют экземпляры.
    Что делать?

  15. Здравствуйте. Можете дать свой вк? телеграмм или дискорд? Хотел бы с вами связаться и обсудить несколько вопросов. Конечно же, не за бесплатно.

  16. Artur:

    Ничего не работает, что бы я не вводил пишет “ошибка. Полученная лицензия недействительна”. Файл license приходит пустой.

  17. пишет что Полученая лицензия не действительна, самое что интересно без разницы написал ты ключ или нет, один хрен выдает это. Тобишь софт даже не чекает что ты ему пишешь

  18. Все работает кроме : создаю ключ он создается в keys он тоже добавляется но когда вожу ключ в программу пишет :
    Получена-я лицензия не действительна..

  19. Лева:

    все работает кроме , при активации ключа пишет
    Ошибка: Для активации необходимо интернет-соединение , в чем проблема может быть ?

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

  21. alex.shopds:

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

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

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

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

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

  26. Dan:

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

    • TsSaltan:

      Проблематично не есть невозможно, достать возможно любую информацию из любой скомпилированной программы, дело времени и навыков.

  27. seapdesign:

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

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

    Что делать?

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

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

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

    • TsSaltan:

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

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

  33. Zmalin:

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

  34. Аноним:

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

    • Аноним:

      Я тоже с этим поборолся слегка… Ты возьми, перейди по ссылки предлагаемой и скачай только версию 1.0 (ее как раз ссылка и предлагает) , и поставь, вернее система спросить заменить на более раннюю версию, отвечай да… И тогда все заработает

  35. Павел:

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

    • Аноним:

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

  36. Nelegal-38:

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

  37. Nikl:

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

  38. Руслан:

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

  39. Аноним:

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

  40. DraonKHacks:

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

  41. Аноним:

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

  42. 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

  43. Аноним:

    При нажатии на “Получить лицензию” выдаёт ошибку 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) с требуемыми. С какими, я не стал выяснять, просто сменил хостинг на иной, и все заработало.

  44. Аноним:

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

  45. Аноним:

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