Программная защита и авторизация приложений магазина.

Автор Тема: Программная защита и авторизация приложений магазина.  (Прочитано 30696 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 9843
  • Карма: 1257
  • Рыцарь ObjectARX
  • Skype: rivilis
А какие варианты Вы видите? Или не стоит игра свеч?
Это тот (редкий) случай, когда я предпочитаю не высказывать своё мнение.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Владимир Шу

  • ADN Club
  • ****
  • Сообщений: 486
  • Карма: 111
    • ПГСу Бложик
Зайду с другой стороны, в статьях просят смотреть репозитарий на github и там есть вот такой файлик и проект к нему
https://github.com/ADN-DevTech/ExchangeAppsCopyrightProtectionExample/blob/master/BestPracticeExample/samplecode.docx
В котором рассказывают как сделать оффлайн защиту для приложения, это работает?

Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 9843
  • Карма: 1257
  • Рыцарь ObjectARX
  • Skype: rivilis
В котором рассказывают как сделать оффлайн защиту для приложения, это работает?
Не проверял, но почему нет? В действительности там говорится о том как сделать Online/Offline защиту. Online-защита - это та защита, о которой мы уже говорили. Offline защита заключается в проверке MAC-адреса и дат начала лицензии, последнего запуска и завершения лицензии (если лицензия временная).
Эта информация хранится на компьютере в зашифрованном виде. Всё тоже самое ты мог сделать и сам (т.е. использовать другие данные о PC, другой алгоритм шифровки и т.д.)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн BearDyugin

  • ADN Club
  • ***
  • Сообщений: 243
  • Карма: 20
  • Геодезист
Нашёл на caduser такую функцию
Код - Auto/Visual Lisp [Выбрать]
  1. (defun vk_GetMacAddress
  2.       (/ LocatorObj ServiceObj SecurityObj ObjectSetObj OutList)
  3.       (setq LocatorObj
  4.         (vlax-create-object "WbemScripting.SWbemLocator")
  5.       )
  6.       (setq ServiceObj
  7.         (vlax-invoke
  8.           LocatorObj      'ConnectServer      nil
  9.           nil    nil      nil        nil       nil
  10.           nil    nil
  11.          )
  12.       )
  13.       (setq ObjectSetObj
  14.         (vlax-invoke
  15.           ServiceObj
  16.           'ExecQuery
  17.           "Select * from Win32_NetworkAdapter"
  18.         )
  19.       )
  20.       (vlax-for   Obj ObjectSetObj
  21.    (if (wcmatch (vl-princ-to-string (vlax-get Obj 'AdapterType))
  22.            "Ethernet 802.*"
  23.        )
  24.      (setq OutList (cons (vlax-get Obj 'MACAddress) OutList))
  25.    )
  26.       )
  27.       (foreach Obj
  28.           (list LocatorObj ServiceObj SecurityObj ObjectSetObj)
  29.    (and Obj (vlax-release-object Obj))
  30.       )
  31.       (car OutList)
  32.     )
Получаю мак адрес, раньше слышал такое слово , но не знал эго смысла, почитал википедию, получается это уникальный идентификатор сетевой карты, я правильно понял?
Изначально функция получала мак адрес состоящий из 3 частей, типа такого ("00:1C:F0:10:76:A0" "00:1C:F0:10:76:A1" "20:CF:30:AF:DA:F9")
Решил зачем мне все 3, и взял только первую часть "00:1C:F0:10:76:A0"
Но и она состоит из 6 значений, опять много, взял последние 3, 10 76 A0
Перевёл их из 16 в 10 систему (16 118 160)
Чтоб довести их до 4-х значных каждое умножил на 39 (0624 4602 6240)
Т.к. эта функция стала универсальной для всех моих приложений, добавил в конце номер приложения, и в итоге получил серийный номер: "0624" "4602"  "6240" "1540"

Ну и в принципе пока примерно 100 регистраций и всё работает хорошо.
А некоторые пишут спустя время, "ой а у меня регистрация слетела, серийник поменялся и код активации не подходит", да без проблем держи новый код. Это он что, сетевую карту поменял, или просто на другой комп установил?
Попадались серийники с нолями, типа  "0624" "0000"  "6240" "1540", ну а почему нет? А один раз был такой "0000" "0000"  "0000" "1540", т.е. всё что я взял из мак адреса оказалось равно 0. Опять же, у него сетевая карта отсутствует, или так могло совпасть, что из тех 3-х значений взятых из 18 мак адреса, оказались нулевыми?

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

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2076
  • Карма: 533
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Не знаю, какие MAC возвращает именно этот код, но, подозреваю, что все подряд, включая виртуальные сетевые адаптеры. Посмотреть информацию по сетевым адаптерам можно в консоли (cmd.exe) с помощью команды ipconfig /all.
Соответственно, эти данные могут в любой момент поменяться - смена сетевой карты, удаление-установка Wi-Fi/Bluetooth карт, установка виртуальных машин и пр. Так что, привязка к MAC, на мой взгляд, одна из самых нестабильных.

Ну и "на закуску": https://ivstar.net/kak-smenit-mak-adres-na-setevoy-karte.html

Оффлайн BearDyugin

  • ADN Club
  • ***
  • Сообщений: 243
  • Карма: 20
  • Геодезист
Так что, привязка к MAC, на мой взгляд, одна из самых нестабильных.
Хорошо, верю. Тогда к чему привязаться? Т.е. я конечно давно и много раз читал, что это всё сложно, и нормальную защиту проще купить, чем самому писать, но для дешёвых\бесплатных программ оно того не стоит.
Что самое стабильное в компьютере, к чему можно по простому добраться из AutoLISP?
Или как из "всех подряд" MAC-ов выбрать самый стабильный?


Оффлайн Владимир Шу

  • ADN Club
  • ****
  • Сообщений: 486
  • Карма: 111
    • ПГСу Бложик
ИМХО, если говорить про железо, то самое стабильное это HDD, их реже всего обновляют и часто переносят со старых компов на новые... другое дело, что программа то пишется под акад и соответственно должна привязываться к автокаду (лицензия денег стоит и потому мигрирует с пользователем по компам долго), но о доступе к данным по лицензии внутри автокада я ничего не нашел. =(

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2076
  • Карма: 533
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
В свое время, в Microsoft думали над вопросом: к чему привязывать Windows? Что в ПК является наиболее неизменной частью? В итоге, выбор пал на материнскую плату, насколько я помню. То есть, в ПК может поменяться все что угодно, но если меняем мат.плату - покупаем новый Windows. Поэтому, довольно разумно придерживаться той же политики, на мой взгляд. Другое дело, что из Auto-VisualLISP добраться до ее параметров у меня, в свое время, не получилось. Но, раз Windows уже привязана к ПК, то можно попробовать привязаться к уникальным параметрам Windows. На деле, конечно, они могут оказаться совсем не уникальными на разных компьютерах, надо проверять.
Еще можно пробовать привязываться к параметрам системного жесткого диска. Замена жесткого диска, как правило, влечет за собой переустановку Windows, AutoCAD и пр. Поэтому, наше приложение уж точно придется заново устанавливать, а значит и регистрировать. http://www.cadtutor.net/forum/showthread.php?35406-How-to-get-serial-number-of-hard-drive-by-lisp
Вообще, параметров, к которым можно привязаться, довольно много (http://stackoverflow.com/questions/99880/generating-a-unique-machine-id). Но вот добраться до них из LISP - очень непростая задача, близкая к невозможной.
 

Оффлайн Владимир Шу

  • ADN Club
  • ****
  • Сообщений: 486
  • Карма: 111
    • ПГСу Бложик
не соглашусь.
Купили новый комп, новую винду и поставили старенький лицензионный автокад 2012 х64, а у пользователя куплена утилита именно под этот автокад, пользователю еще раз ее покупать?

Оффлайн BearDyugin

  • ADN Club
  • ***
  • Сообщений: 243
  • Карма: 20
  • Геодезист
пользователю еще раз ее покупать?
Нет, написать автору, объяснить ситуацию, и получить новый ключ. Я кстати так делал с каким-то приложением для Windows, без проблем мне прислали новый ключ.
Еще можно пробовать привязываться к параметрам системного жесткого диска.
Это уже всё было в начале этой же темы.

Если последовать совету Алексея
привязка к какому-либо одному параметру не даст ничего.
Вариант разбить серийный номер на 4 части, 1 часть - MAC, 2 часть - серийный номер логического диска 3 часть -что-то ещё 4 часть номер приложения. И проверять чтоб хотябы один из первых 3 частей соответсвовал

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2076
  • Карма: 533
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Ну вопрос сложный, и простого ответа на него нет. Кто как решит вести маркетинговую политику, так и будет правильно.
Почему привязывать приложение под AutoCAD нужно именно к AutoCAD? Есть же еще сетевые лицензии, которые очень распространены в крупных организациях, как с этим быть?
Вот, например, приложения магазина можно привязать к учетной записи Autodesk. То есть, идет привязка не к железу, не к софту, а к конкретному пользователю. Тоже неплохой вариант.
Или те же самые электронные ключи защиты. Вынул из рабочего ПК, пришел домой, вставил - работаешь. Нужна коллеге программа - дал ему ключ. Для пользователя - один из самых удобных вариантов, и для взлома довольно непростой.
Вариант разбить серийный номер на 4 части, 1 часть - MAC, 2 часть - серийный номер логического диска 3 часть -что-то ещё 4 часть номер приложения. И проверять чтоб хотябы один из первых 3 частей соответсвовал
Пробуйте :) Ваше приложение - Вам и решать как его защищать :) Вряд ли кто-то будет подробно рассказывать каким образом сделана защита его приложений. Потому как чем меньше известно о принципах работы защиты, тем она надежнее.

Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 9843
  • Карма: 1257
  • Рыцарь ObjectARX
  • Skype: rivilis
По поводу MAC-адреса хочу напомнить, что он легко меняется средствами Windows:

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 9843
  • Карма: 1257
  • Рыцарь ObjectARX
  • Skype: rivilis
Или те же самые электронные ключи защиты. Вынул из рабочего ПК, пришел домой, вставил - работаешь. Нужна коллеге программа - дал ему ключ. Для пользователя - один из самых удобных вариантов, и для взлома довольно непростой.
Да. Но есть несколько НО (с этим я хорошо знаком):
1) Электронный ключ стоит денег. В среднем  $20...$25. Для недорогих программ (скажем до $200) это не выгодно.
2) Электронный ключ нужно передать покупателю. А если он из другого города (другой страны)? Это требует дополнительной пересылки (т.е. тоже денег и времени). В те времена, когда продавались "коробочные" версии программ (например AutoCAD до версии 2000 включительно), это не влияло на скорость поставки. Сейчас же ждать никто не хочет...
3) Производители электронных ключей могут перестать их производить или поставлять (например, Rainbow Sentinel SuperPRO). И тогда нужно задумываться о переходе на другой ключ / другую систему защиты.
4) При наличии большого количества ключей одного или разных производителей могут возникнуть проблемы совместимости между ними, необходимость докупать USB-хабы в случае если не хватает USB-портов.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн BearDyugin

  • ADN Club
  • ***
  • Сообщений: 243
  • Карма: 20
  • Геодезист
По поводу MAC-адреса хочу напомнить, что он легко меняется средствами Windows:
Да это понятно, вопрос зачем его менять? Для каких целей?
Но есть несколько НО (с этим я хорошо знаком)
Вряд ли кто-то будет подробно рассказывать каким образом сделана защита его приложений. Потому как чем меньше известно о принципах работы защиты, тем она надежнее.
Да, блин, давайте спустимся на землю, ни кто не говорит о серьёзной защите, действительно глупо было бы обсуждать её на форму. Речь идёт о оптимальном варианте простейшей защиты.

Не дальше чем все уже ранее предложенные примеры получения серийного номера HDD или того же MAC, средствами AutoLISP. И я уже понял что всё это сомнительно и не надёжно, но я даже половину кода из того же  vk_GetMacAddress не понимаю. Например Дмитрей предположил, что этот код собирает всё подряд, но ведь из этого всё подряд есть что-то более стабильное, так вот в каком направление этот код дописать, что бы он взял не всё подряд, а это самое стабильно?

Вопрос даже не стоит сделать максимально надёжную защиту от взлома, один хацкер уже декомпилировал мой VLX и нашёл там функцию get_reg_cod и сам себе создал код активации, не жалко. Охота чтоб простой пользователь не испытывал неудобства, с неработающим приложением из-за переустановки чего-нибудь на компьютере.

И процесс регистрации приложения опять же не ради денег, до сих пор я свои бесплатно раздаю, проблема в их потом бесконтрольном распространении. Программист я так себе, и часто от первого релиза, до более менее стабильной версии выходит 10-20 обновлений в течении нескольких лет. А потом встречаю в сети распространителей моих программ ещё первых версий с косяками.

Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 9843
  • Карма: 1257
  • Рыцарь ObjectARX
  • Skype: rivilis
Да это понятно, вопрос зачем его менять? Для каких целей?
Совершенно реальный пример. Идентификация абонента интернет-провайдером чаще всего идёт по MAC-адресу. К интернету был подключен PC с одним MAC-адресом, а затем вместо него появилась необходимость подключить другой. Чтобы не связываться со службой поддержки провайдера на другом PC меняют MAC-адрес и он спокойно получает интернет. По историческим причинам у меня именно так.
Например Дмитрей предположил, что этот код собирает всё подряд, но ведь из этого всё подряд есть что-то более стабильное, так вот в каком направление этот код дописать, что он взял не всё подряд это самое стабильно?
Никак. Он берёт MAC-адреса всех сетевых адаптеров (реальных и/или виртуальных).
P.S.: Моё глубокое убеждение - на одном только VisualLisp (без arx/.net) невозможно сделать сколько-нибудь нормальную систему защиты.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение