Сообщество программистов Autodesk в СНГ

ADN Club => Autodesk App Store (ранее Autodesk Exchange Apps) => Тема начата: Виталий от 21-03-2015, 09:50:45

Название: Программная защита и авторизация приложений магазина.
Отправлено: Виталий от 21-03-2015, 09:50:45
Тема создана для обмена опытом и помощи в реализации защиты приложений магазина. Обсуждение методов защиты для разных целей: разовой продажи, помесячной арендной платы, обновления и т.д. 
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Виталий от 22-03-2015, 19:33:37
Вот код на лиспе в открытом доступе в интернете. Можно легко достать номер диска. Вопрос в том насколько это надежный неизменяемый номер, железно ли будет работать данная функция на всевозможных компьютерах. Например, есть программы, которые  меняют номер диска. Если можно менять номер диска, если речь идет об одном и том же значении, то это все ненадежно.
 
Также есть функция лиспа в Брикскаде
Код - Auto/Visual Lisp [Выбрать]
  1.  (get_diskserialid)
  2.  
   returns a 9-digit unique id string, based on the 1. hard disk serial number;
   if the hard disk serial number can not be obtained in very rare caes, the
   9-digit unique id string is based on the serial number of the 1. partition;
   this id string provides a licensing/hardlocking feature for Lisp applications

Можно ли это реализовать на Autolisp'е и вообще на сколько это надежней результата в представленном ниже коде.

Код - Auto/Visual Lisp [Выбрать]
  1. (defun #Asmi_Get_Drive_Serial(Path / fsObj hSn abPth cDrv)
  2.   (vl-load-com)
  3.   (if
  4.     (and
  5.       (setq fsObj(vlax-create-object "Scripting.FileSystemObject"))
  6.       (not
  7.         (vl-catch-all-error-p
  8.           (setq abPth(vl-catch-all-apply 'vlax-invoke-method
  9.                        (list fsObj 'GetAbsolutePathName Path))
  10.                        ); end setq
  11.                    ); end vl-catch-all-error-p
  12.                 ); end not
  13.           ); end and
  14.     (progn
  15.       (setq cDrv(vlax-invoke-method fsObj 'GetDrive
  16.         (vlax-invoke-method fsObj 'GetDriveName abPth
  17.         ); end vlax-invoke-method
  18.       );end vlax-invoke-method
  19.      ); end setq
  20.      (if
  21.        (vl-catch-all-error-p
  22.           (setq hSn(vl-catch-all-apply 'vlax-get-property
  23.             (list cDrv 'SerialNumber))))
  24.             (progn
  25.               (vlax-release-object cDrv)
  26.               (setq hSn nil)
  27.             ); end progn
  28.        ); end if
  29.     (vlax-release-object fsObj)
  30.     ); end progn
  31.    ); end if
  32.   hSn
  33.   ); end of #Asmi_Get_Drive_Serial
  34.  

Очень жду ваше мнение. Получаю большую пользу от ваших мыслей. Как устраивать саму защиту не пишу, но думаю эта тема полезна будет для многих. Потом многие разработчики Автодеска на базе этих знаний будут клепать свои защиты, так как в большинстве случаев стоимость приложений Магазина мизерная, гораздо ниже стоимости защиты если ее просто покупать.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Алексей Кулик от 22-03-2015, 20:08:44
HDD может быть заменен в любой момент. Это раз. Второе: попадаются админы, запрещающие обращение к Scripting.FileSystemObject от непонятных приложений и дополнений.
Я уже говорил в http://adn-cis.org/forum/index.php?topic=2583.0 и повторю еще раз: привязка к какому-либо одному параметру не даст ничего.
Если приложение планируется распространять через Autodesk Exchange Apps, то почти вся головная боль о лицензионности дополнения ложится на плечи Autodesk (мне так кажется).
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 23-03-2015, 01:12:03
Можно легко достать номер диска. Вопрос в том насколько это надежный неизменяемый номер, железно ли будет работать данная функция на всевозможных компьютерах.
Совершенно ненадежный. Кроме того, что написал Алексей, изменить серийный номер логического диска HDD не представляет никакого труда.
Не путать с номером, который присваивается производителем диску (HDD Firmware Serial Number) и который изменить очень сложно, часто невозможно. Но и прочитать его не так просто, а средствами VisualLisp просто невозможно.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 23-03-2015, 01:35:32
На всякий случай если попытаешься пойти по этому пути - вот исходники на C++ (т.е. теоретически можно всунуть в arx-файл) для получения MAC-адреса и серийного номера HDD (физического диска, а не логического раздела): http://www.codeproject.com/Articles/319181/Haephrati-Searching-for-a-reliable-Hardware-ID
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Виталий от 23-03-2015, 07:23:41
Если приложение планируется распространять через Autodesk Exchange Apps, то почти вся головная боль о лицензионности дополнения ложится на плечи Autodesk (мне так кажется).
Вот именно, а у Автодеска это очень темная тема. Как все устроено наверно можно будет понять после публикации. Поэтому я и открыл эти темы (защиты и аттестации приложения), чтобы хотя бы те разработчики, которые опубликовались, поделились своим опытом.
Я даже спрашивал у лиц, проверяющих приложения, а как должна быть устроена защита, авторизация и т.п., например, для случая когда помесячная аренда. Мне ответили что нужно отметить галочкой этот пункт и все. Это скорее шутка, а не ответ. Никакой информации. Это мне напомнило как у Путина спросили, а все таки, что произошло с подводной лодкой "Комсомолец". Он ответил - "Она утонула".   Кстати Автодеск говорит, что защита и авторизация это дело разработчиков.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Виталий от 23-03-2015, 07:36:48
На всякий случай если попытаешься пойти по этому пути - вот исходники на C++ (т.е. теоретически можно всунуть в arx-файл) для получения MAC-адреса и серийного номера HDD (физического диска, а не логического раздела): http://www.codeproject.com/Articles/319181/Haephrati-Searching-for-a-reliable-Hardware-ID
Я пока исследую эту тему. Такой информации должно быть много, чтобы выбрать самое оптимальное. Вот какие еще другие подходы простых защит бывают не используя ID диска и т.п.?  Авторизация это же не защита. Может те кто опубликовывается вообще делают только авторизацию без защиты.
Думаю не следует мыслить о какой-нибудь серьезной защите. Достаточно такой, чтобы простой пользователь (не программист) не мог ее распространить.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Виталий от 23-03-2015, 08:02:10
Если приложение планируется распространять через Autodesk Exchange Apps, то почти вся головная боль о лицензионности дополнения ложится на плечи Autodesk (мне так кажется).
Поэтому Автодеск должен иметь этот метод или технологию и давать разработчикам для внедрения в их приложения именно перед публикацией, до распространения! Иначе разработчику придется отсылать Автодеску абсолютно открытое не защищенно приложение  и потом надеяться, что оно не распространиться после первой скачки.
Модераторы если у вас есть связь с Автодеском, разъясните пожалуйста этот вопрос, так как в представительстве Автодеска в России на эту тему ответа нет.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 23-03-2015, 11:48:01
Поэтому Автодеск должен иметь этот метод или технологию и давать разработчикам для внедрения в их приложения именно перед публикацией, до распространения!
Никто никому ничего не должен. Этого нет ни в Google Play, ни в App Store, ни в Магазине Windows. А с учетом того, что в Магазине Приложений Autodesk имеется куча совершенно разнородных платформ, использующих различные API, языки программирования и операционные системы - создать такую обобщенную технологию, удовлетворившую бы всех, задача неподъемная (IMHO).
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Виталий от 23-03-2015, 12:33:12
Никто никому ничего не должен. Этого нет ни в Google Play, ни в App Store, ни в Магазине Windows. А с учетом того, что в Магазине Приложений Autodesk имеется куча совершенно разнородных платформ, использующих различные API, языки программирования и операционные системы
Неправильно выразился. Не должен, а вот была бы подобная функция в lisp'e (get_diskserialid), было бы неплохо. Конкуренты дошли до этого, дают людям полезный функционал. Уверен и Автодеск до этого дойдет в новых версиях. Не надо быть консерватором.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 23-03-2015, 12:40:02
Не должен, а вот была бы подобная функция в lisp'e (get_diskserialid), было бы неплохо. Конкуренты дошли до этого, дают людям полезный функционал. Уверен и Автодеск до этого дойдет в новых версиях. Не надо быть консерватором.
Читай: http://www.theswamp.org/index.php?topic=38432.0
Там есть несколько вариантов получения серийного номера физического диска. Так же как и в Bricscad это всё достаточно ненадежно.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 23-03-2015, 12:43:34
Уверен и Автодеск до этого дойдет в новых версиях.
Уверен что они этим заниматься не будут.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Виталий от 24-03-2015, 09:11:55
Читай: http://www.theswamp.org/index.php?topic=38432.0
Там есть несколько вариантов получения серийного номера физического диска. Так же как и в Bricscad это всё достаточно ненадежно.
Там их варианты не работают, зависят от систем Windows, может еще от чего, ссылка бесполезная. А (get_diskserialid) как я понял возвращает железно индефикатор с физического диска. Была бы такая функция у Автодеск было бы очень полезно. Сразу бы можно было сделать защиту, задействовав ее, там даже в описании написано - "this id string provides a licensing/hardlocking feature for Lisp applications". А пока стопор, копаться в с++, переводить в arx, заведомо зная, что ненадежно и сложно. Нет решения пока нет такой функции, лично для моей идеи защиты. Кто-то занимался именно этой проблемой? 
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 24-03-2015, 10:05:23
А (get_diskserialid) как я понял возвращает железно индефикатор с физического диска.
Она делает тоже самое, что и функции по моей ссылке. В отличие от них эта функция - черный ящик (т.е. как она работает ты не знаешь).
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Виталий от 24-03-2015, 10:28:30
Она делает тоже самое, что и функции по моей ссылке. В отличие от них эта функция - черный ящик (т.е. как она работает ты не знаешь).
Вот что она делает, возвращает nil.
Код - Auto/Visual Lisp [Выбрать]
  1. $ (defun HDSerial ( / wmi srv drv ser )
  2.   (vl-catch-all-apply
  3.     (function
  4.       (lambda ( )
  5.         (if
  6.           (setq wmi (vlax-create-object "WbemScripting.SWbemLocator")
  7.                 srv (vlax-invoke wmi 'connectserver nil nil nil nil nil nil nil nil)
  8.                 drv (vlax-invoke srv 'execquery "Select SerialNumber from Win32_DiskDrive")
  9.           )
  10.           (vlax-for item drv
  11.             (vlax-for prop (vlax-get item 'Properties_)
  12.               (if (eq "SERIALNUMBER" (strcase (vlax-get prop 'name)))
  13.                 (setq ser (vl-string-trim " " (vlax-get prop 'value)))
  14.               )
  15.             )
  16.           )
  17.         )
  18.       )
  19.     )
  20.   )
  21.   (if drv (vlax-release-object drv))
  22.   (if srv (vlax-release-object srv))
  23.   (if wmi (vlax-release-object wmi))
  24.   ser
  25. )
  26. HDSERIAL
  27. _$ (HDSerial)
  28. nil
Может я чего-то не понимаю, но там и на английском написано, что может не работать. Объясни как увидеть не nil, если утверждаешь, что она работает. Вот лог. номер диска возращается, но он не подходит по определению.
А в описании к (get_diskserialid) сказано что даже если sernumber не возращается, то они вернут другую инфо с Partition. Вопрос о надежности и решении. Если это заявлено значит оно работает. Черный ящик это или нет, как она работает и т.п. мне без разницы, нужен любой идентификатор компьютера, она этому условию подходит.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 24-03-2015, 11:46:47
Если это заявлено значит оно работает.
:D :D :D
А теперь серьезно.
1) На этом форуме не обсуждаются и не упоминаются клоны/конкуренты.
2) Еще раз повторюсь. Autodesk предоставляет площадку для размещения приложений, но не обязана предоставлять инструменты для защиты приложений.
3) Я не буду участвовать в этой дискуссии, так как считаю что "Спасение утопающих, дело рук самих утопающих". Т.е. если тебе нужна защита, то ты должен или сам её сделать или купить готовую.
4) Если тема зайдет куда-то не туда по моему впечатлению (а она именно туда она и движется), то я её закрою.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Виталий от 24-03-2015, 12:01:51
1) На этом форуме не обсуждаются и не упоминаются клоны/конкуренты.
Ну удали все что про "клоны/конкуренты". Я на их базе не работаю и не собираюсь. Задача поставлена - как получить любой уникальный идентификатор компьютера на vlisp или проверенный код на arx. Любое что-то хитрое в этом роде. Думаю это будет полезно не только для меня, но и других участников Магазина.
Извини если я что-то не то написал в разрез с правилами форума, а тема двигается к полезному функционалу для Магазина Автодеска.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Ярослав Решетников от 19-05-2015, 17:13:04
Коллеги, хотел бы обратить ваше внимание, что в инструкциях (http://autodesk.ru/developapps (http://autodesk.ru/developapps)), в разделе "Часто задаваемые вопросы" под заголовком «Лицензирование, стоимость и обновления» есть ответ на вопрос, возникший в ходе обсуждения:
Предоставляет ли Autodesk защиту от копирования или системы лицензирования для моего продукта?
Нет. Защита от незаконного копирования и управление лицензиями является обязанностью разработчика. Это относится как к демо-версиям, так и к платным продуктам. Независимо от используемой системы, продукты из Exchange Apps должны быть доступны клиенту для использования сразу после установки. Если продукт требует от клиента запросить лицензию, которая не предоставляется сразу (например, если запросы лицензий обрабатываются вручную, а не отправляются автоматически по электронной почте или через какую-либо онлайн-систему), то продукт должен обеспечивать полнофункциональную работу на период, достаточный для его активации.

Эта информация на английском языке вот тут - http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=20149725 (http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=20149725)
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Виталий от 19-05-2015, 17:46:09
Предоставляет ли Autodesk защиту от копирования или системы лицензирования для моего продукта?
Нет.
Дня 3 назад отвечал на опрос от Автодеска. Там был вопрос о том, что знаете ли вы о существовании продукта от Автодеск или библиотеки (не помню) по защите и лицензированию приложений от разработчиков.  Что это или это только новые идеи? На ответы к опросам обычно не отвечают.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Ярослав Решетников от 19-05-2015, 17:58:47
Виталий, опередили меня. Хотел дополнить ответ, не успел :-)
На англоязычном сайте http://www.autodesk.com/developapps (http://www.autodesk.com/developapps) есть инструкции по данной теме.
Разделы:
Copy protection in your Apps http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=24243607 (http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=24243607)
Entitlement API for desktop Apps http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=24243865 (http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=24243865)
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: BearDyugin от 05-10-2015, 10:11:00
Copy protection in your Apps http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=24243607
Entitlement API for desktop Apps http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=24243865
Вроде и англицкий немного знаю, и в программирование чуть-чуть разбираюсь, но не доходит до конца.
Может кто-нибудь по-русски мне объяснить?
Т.е. Autodesk даёт нам инструмент, чтоб мы сами из своего приложения при его запуске делали запрос в https://apps.exchange.autodesk.com и проверяли "А покупал ли конкретно этот пользователь, конкретно нашу программу"?
На первый взгляд всё просто, но кроме Lisp-а ничего не знаю. Средствами Lisp такое возможно?
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Владимир Шу от 05-10-2015, 16:40:09
На англоязычном сайте http://www.autodesk.com/developapps есть инструкции по данной теме.
Вот бы на русском такое....
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 05-10-2015, 17:41:21
Средствами Lisp такое возможно?
Думаю, что средствами чистого Lisp это сделать нельзя. Во всяком случае мне неизвестен способ на Lisp обратится по адресу в Internet и получить результат. Возможно это можно сделать через какие-то стандартные COM-сервера, но исключить ситуацию что их нет или администратор закрыл к ним доступ нельзя. Да и вообще сам по себе способ требующий для проверки доступности идентификации обращаться к интернету мне не нравится. Мне не нравится обязательность того, что пользователь должен войти в свою учетную запись Autodesk, а если он это не сделал (просто забыл, интернет не работает, и т.д. и т.п.), то программа работать не будет.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Владимир Шу от 05-10-2015, 17:51:31
Может кто-нибудь по-русски мне объяснить?
По русски не могу, но нашел цикл статей с примерами использования данного API
Часть 1 (http://adndevblog.typepad.com/cloud_and_mobile/2014/03/how-to-protect-my-intellectual-property-of-my-app-on-autodesk-exchange-part-1.html)
Часть 2 (http://adndevblog.typepad.com/cloud_and_mobile/2014/04/how-to-protect-my-intellectual-property-of-my-app-on-autodesk-exchange-part-2.html)
Часть 3 (http://adndevblog.typepad.com/cloud_and_mobile/2014/05/how-to-protect-my-intellectual-property-of-my-app-on-autodesk-exchange-part-3.html)
Вот только про лисп там ничего нет...
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Ярослав Решетников от 05-10-2015, 23:12:03
Перевод этих статей доступен по ссылке - http://adn-cis.org/articles/autodesk-exchange-apps/
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 05-10-2015, 23:36:15
Конкретные ссылки на перевод на нашем сайте:
Как защитить интеллектуальную собственность моего приложения на Autodesk Exchange - часть 1 (http://adn-cis.org/kak-zashhitit-intellektualnuyu-sobstvennost-moego-prilozheniya-na-autodesk-exchange-chast-1.html)
Как защитить интеллектуальную собственность моего приложения на Autodesk Exchange - часть 2 (http://adn-cis.org/kak-zashhitit-intellektualnuyu-sobstvennost-moego-prilozheniya-na-autodesk-exchange-chast-2.html)
Как защитить интеллектуальную собственность моего приложения на Autodesk Exchange - часть 3 (http://adn-cis.org/kak-zashhitit-intellektualnuyu-sobstvennost-moego-prilozheniya-na-autodesk-exchange-chast-3.html)
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: BearDyugin от 06-10-2015, 08:07:27
Да и вообще сам по себе способ требующий для проверки доступности идентификации обращаться к интернету мне не нравится. Мне не нравится обязательность того, что пользователь должен войти в свою учетную запись Autodesk, а если он это не сделал (просто забыл, интернет не работает, и т.д. и т.п.), то программа работать не будет.
     В общем написал я тут недавно "Картограмму (http://www.youtube.com/watch?v=L4sUUt7z6Ds)" для Civil 3D, и как-то так получилось, что сил и времени потратил на это больше чем ожидалось, и тут стала жаба меня поддушивать. Решил не напрямую денег брать а ввёл регистрацию, не зарегистрированная версия полностью работает, только просит некоторые небольшие вычисления вручную проводить.

     Для получения серийного номера тупо брал "Имя пользователя" + "Имя компьютера" переводил всё это дело по определённому алгоритму в 16-ти значное число и к нему 4- значный код активации. По запросу высылал код активации на почту и в письме намекал, что если всё клёво, можете денег слать.
В итоге за 2 месяца 500 загрузок 15 из них зарегистрировались, и лишь 3-ое денег прислали, 2-е успели переустановить систему и получили новые коды активации.
     
     Вообщем жабе не легче, и деньги каждый раз в письме выпрашивать тоже не приятно. Вот и решил, что на профильном сайте форуме геодезистов так и буду дальше безвозмездно программы раздавать, уже набрался небольшой пакет геодезических приложений вроде не плохих по отзывам, а сюда запилю их за небольшую плату, не ради заработка, а так для приятного бонуса.
     
    Но как оказалось на практике не так всё просто, начиная от работы с платёжными системами заканчивая защитой.

    Пр защиту, как я понял либо программа сразу бесплатная, либо она платная но плата проходит через магазин Autodesk и если пользователь заплатил в магазине то после установки она сразу должна у него уже работать безо всяких там доп регистраций?

    Опять же есть смысл защищать 5-то долларовую программу? Я не думаю что кто-то сильно начнёт распространять дистрибутив вне магазина.

перевод на нашем сайте:
Спасибо, всё понятно и даже скорее всего просто, но только только начал изучать NET  с С# и пока после Lisp-а глаза разбегаются  :o
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Владимир Шу от 06-10-2015, 09:20:38
Конкретные ссылки на перевод на нашем сайте:
Цитировать
Для AutoCAD или вертикальных продуктов, есть простой способ получить имя текущего пользователя и его userid, вы можете использовать следующие недокументированные системные переменные: ONLINEUSERNAME и ONLINEUSERID.
Правда, есть еще OAuth, но в свете следующей цитаты, это не важно.
Цитировать
// Так как вы, вероятно, не знаете этот AppId, пока вы его не опубликуете приложение,
// давайте сохраним AppId в конфигурационном файле, чтобы иметь возможность отредактировать впоследствии
// без изменения исходного кода
И ничто не мешает отредактировать это AppId, на купленное за 3 копейки приложение.

ИМХО, защита какая то дырявая получилась или я что то не доглядел?
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 06-10-2015, 10:43:27
ИМХО, защита какая то дырявая получилась или я что то не доглядел?
Даже если бы информация о AppId была бы "зашита" в приложение (даже в зашифрованном виде), особого труда для перехвата его и подмены не возникло бы. Эта одна из причин, по которой я считаю этот метод защиты "не слишком удачным" (это я так очень мягко пишу...)
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Владимир Шу от 06-10-2015, 11:27:00
особого труда для перехвата его и подмены не возникло бы
Открытый GET запрос с указанием всего и вся, хотя в 3 части показано ssl соединение, вроде бы подразумевается шифрованный обмен данными. Но я не специалист, а потому не знаю.

А какие варианты Вы видите? Или не стоит игра свеч?
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 06-10-2015, 12:01:50
А какие варианты Вы видите? Или не стоит игра свеч?
Это тот (редкий) случай, когда я предпочитаю не высказывать своё мнение.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Владимир Шу от 06-10-2015, 12:21:49
Зайду с другой стороны, в статьях просят смотреть репозитарий на github и там есть вот такой файлик и проект к нему
https://github.com/ADN-DevTech/ExchangeAppsCopyrightProtectionExample/blob/master/BestPracticeExample/samplecode.docx
В котором рассказывают как сделать оффлайн защиту для приложения, это работает?
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 06-10-2015, 12:37:56
В котором рассказывают как сделать оффлайн защиту для приложения, это работает?
Не проверял, но почему нет? В действительности там говорится о том как сделать Online/Offline защиту. Online-защита - это та защита, о которой мы уже говорили. Offline защита заключается в проверке MAC-адреса и дат начала лицензии, последнего запуска и завершения лицензии (если лицензия временная).
Эта информация хранится на компьютере в зашифрованном виде. Всё тоже самое ты мог сделать и сам (т.е. использовать другие данные о PC, другой алгоритм шифровки и т.д.)
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: BearDyugin от 13-11-2015, 08:33:54
Нашёл на caduser (http://www.caduser.ru/forum/index.php?PAGE_NAME=read&FID=23&TID=43385&phrase_id=32773) такую функцию
Код - 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.     )
Получаю мак адрес, раньше слышал такое слово , но не знал эго смысла, почитал википедию (https://ru.wikipedia.org/wiki/MAC-%D0%B0%D0%B4%D1%80%D0%B5%D1%81), получается это уникальный идентификатор сетевой карты, я правильно понял?
Изначально функция получала мак адрес состоящий из 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 мак адреса, оказались нулевыми?

Можно ли сказать, что из самых простых защит, привязка к мак адресу самая стабильная?
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Дмитрий Загорулькин от 13-11-2015, 09:12:47
Не знаю, какие MAC возвращает именно этот код, но, подозреваю, что все подряд, включая виртуальные сетевые адаптеры. Посмотреть информацию по сетевым адаптерам можно в консоли (cmd.exe) с помощью команды ipconfig /all.
Соответственно, эти данные могут в любой момент поменяться - смена сетевой карты, удаление-установка Wi-Fi/Bluetooth карт, установка виртуальных машин и пр. Так что, привязка к MAC, на мой взгляд, одна из самых нестабильных.

Ну и "на закуску": https://ivstar.net/kak-smenit-mak-adres-na-setevoy-karte.html
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: BearDyugin от 13-11-2015, 09:24:07
Так что, привязка к MAC, на мой взгляд, одна из самых нестабильных.
Хорошо, верю. Тогда к чему привязаться? Т.е. я конечно давно и много раз читал, что это всё сложно, и нормальную защиту проще купить, чем самому писать, но для дешёвых\бесплатных программ оно того не стоит.
Что самое стабильное в компьютере, к чему можно по простому добраться из AutoLISP?
Или как из "всех подряд" MAC-ов выбрать самый стабильный?

Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Владимир Шу от 13-11-2015, 09:47:57
ИМХО, если говорить про железо, то самое стабильное это HDD, их реже всего обновляют и часто переносят со старых компов на новые... другое дело, что программа то пишется под акад и соответственно должна привязываться к автокаду (лицензия денег стоит и потому мигрирует с пользователем по компам долго), но о доступе к данным по лицензии внутри автокада я ничего не нашел. =(
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Дмитрий Загорулькин от 13-11-2015, 09:51:28
В свое время, в 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 - очень непростая задача, близкая к невозможной.
 
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Владимир Шу от 13-11-2015, 09:57:02
не соглашусь.
Купили новый комп, новую винду и поставили старенький лицензионный автокад 2012 х64, а у пользователя куплена утилита именно под этот автокад, пользователю еще раз ее покупать?
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: BearDyugin от 13-11-2015, 10:00:25
пользователю еще раз ее покупать?
Нет, написать автору, объяснить ситуацию, и получить новый ключ. Я кстати так делал с каким-то приложением для Windows, без проблем мне прислали новый ключ.
Еще можно пробовать привязываться к параметрам системного жесткого диска.
Это уже всё было в начале этой же темы.

Если последовать совету Алексея
привязка к какому-либо одному параметру не даст ничего.
Вариант разбить серийный номер на 4 части, 1 часть - MAC, 2 часть - серийный номер логического диска 3 часть -что-то ещё 4 часть номер приложения. И проверять чтоб хотябы один из первых 3 частей соответсвовал
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Дмитрий Загорулькин от 13-11-2015, 10:06:52
Ну вопрос сложный, и простого ответа на него нет. Кто как решит вести маркетинговую политику, так и будет правильно.
Почему привязывать приложение под AutoCAD нужно именно к AutoCAD? Есть же еще сетевые лицензии, которые очень распространены в крупных организациях, как с этим быть?
Вот, например, приложения магазина можно привязать к учетной записи Autodesk. То есть, идет привязка не к железу, не к софту, а к конкретному пользователю. Тоже неплохой вариант.
Или те же самые электронные ключи защиты. Вынул из рабочего ПК, пришел домой, вставил - работаешь. Нужна коллеге программа - дал ему ключ. Для пользователя - один из самых удобных вариантов, и для взлома довольно непростой.
Вариант разбить серийный номер на 4 части, 1 часть - MAC, 2 часть - серийный номер логического диска 3 часть -что-то ещё 4 часть номер приложения. И проверять чтоб хотябы один из первых 3 частей соответсвовал
Пробуйте :) Ваше приложение - Вам и решать как его защищать :) Вряд ли кто-то будет подробно рассказывать каким образом сделана защита его приложений. Потому как чем меньше известно о принципах работы защиты, тем она надежнее.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 13-11-2015, 13:01:02
По поводу MAC-адреса хочу напомнить, что он легко меняется средствами Windows:

(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F5306%2F7842324.4%2F0_10fd7f_42a6f91c_orig.png&hash=7f4ef15c524d38299132c0a8b92b6b85)
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 13-11-2015, 19:03:20
Или те же самые электронные ключи защиты. Вынул из рабочего ПК, пришел домой, вставил - работаешь. Нужна коллеге программа - дал ему ключ. Для пользователя - один из самых удобных вариантов, и для взлома довольно непростой.
Да. Но есть несколько НО (с этим я хорошо знаком):
1) Электронный ключ стоит денег. В среднем  $20...$25. Для недорогих программ (скажем до $200) это не выгодно.
2) Электронный ключ нужно передать покупателю. А если он из другого города (другой страны)? Это требует дополнительной пересылки (т.е. тоже денег и времени). В те времена, когда продавались "коробочные" версии программ (например AutoCAD до версии 2000 включительно), это не влияло на скорость поставки. Сейчас же ждать никто не хочет...
3) Производители электронных ключей могут перестать их производить или поставлять (например, Rainbow Sentinel SuperPRO). И тогда нужно задумываться о переходе на другой ключ / другую систему защиты.
4) При наличии большого количества ключей одного или разных производителей могут возникнуть проблемы совместимости между ними, необходимость докупать USB-хабы в случае если не хватает USB-портов.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: BearDyugin от 13-11-2015, 20:09:34
По поводу MAC-адреса хочу напомнить, что он легко меняется средствами Windows:
Да это понятно, вопрос зачем его менять? Для каких целей?
Но есть несколько НО (с этим я хорошо знаком)
Вряд ли кто-то будет подробно рассказывать каким образом сделана защита его приложений. Потому как чем меньше известно о принципах работы защиты, тем она надежнее.
Да, блин, давайте спустимся на землю, ни кто не говорит о серьёзной защите, действительно глупо было бы обсуждать её на форму. Речь идёт о оптимальном варианте простейшей защиты.

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

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

И процесс регистрации приложения опять же не ради денег, до сих пор я свои бесплатно раздаю, проблема в их потом бесконтрольном распространении. Программист я так себе, и часто от первого релиза, до более менее стабильной версии выходит 10-20 обновлений в течении нескольких лет. А потом встречаю в сети распространителей моих программ ещё первых версий с косяками.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 13-11-2015, 20:24:08
Да это понятно, вопрос зачем его менять? Для каких целей?
Совершенно реальный пример. Идентификация абонента интернет-провайдером чаще всего идёт по MAC-адресу. К интернету был подключен PC с одним MAC-адресом, а затем вместо него появилась необходимость подключить другой. Чтобы не связываться со службой поддержки провайдера на другом PC меняют MAC-адрес и он спокойно получает интернет. По историческим причинам у меня именно так.
Например Дмитрей предположил, что этот код собирает всё подряд, но ведь из этого всё подряд есть что-то более стабильное, так вот в каком направление этот код дописать, что он взял не всё подряд это самое стабильно?
Никак. Он берёт MAC-адреса всех сетевых адаптеров (реальных и/или виртуальных).
P.S.: Моё глубокое убеждение - на одном только VisualLisp (без arx/.net) невозможно сделать сколько-нибудь нормальную систему защиты.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Дмитрий Загорулькин от 13-11-2015, 21:46:39
Цитировать
Речь идёт о оптимальном варианте простейшей защиты.
Берите номер тома системного раздела HDD. В качестве простейшей защиты вполне нормально.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Николай Горлов от 18-11-2015, 10:37:08
как бы так проще выразиться. какой бы простой не была защита, стоимость взлома должна превышать стоимость покупки )))
по поводу того, к чему еще дополнительно привязаться. если функция "vk_GetMacAddress" рабочая, то могу посоветовать глянуть в сторону "Win32_Processor" (Win32_NetworkAdapter поменять на Win32_Processor) и запустить. Будет интересовать значение поля "ProcessorId". Если в поисковике написать WMI Win32_Processor то в первой десятке будет ссылка майкрософтовская на все ключевые слова (хотя, если честно, выбирать там особо не из чего ))) )
дальше, не стоит хранить файл лицензии в открытом виде (ну мало ли, взруг он таки хранится без шифрования), лучше превратить его в набор кракозябликов ))), самый простой вариант без использования навороченных библиотек, но с сохранением логики шифрования будет выглядеть так:
Код - C++ [Выбрать]
  1. // строка в кракозяблики по ключевому слову
  2. void _encode(ACHAR * key, ACHAR * str, int strlen)
  3. {
  4.         int j = 0;
  5.         for (long i = 0; i < strlen; i++)
  6.         {
  7.                 str[i] -= key[j++];
  8.                 if (j >= _tcslen(key)) j = 0;
  9.         }
  10. }
  11.  
  12. // кракозяблики в строку по ключевому слову
  13. void _decode(ACHAR * key, ACHAR * str, int strlen)
  14. {
  15.         long j = 0;
  16.         for (long i = 0; i < strlen; i++)
  17.         {
  18.                 str[i] += key[j++];
  19.                 if (j >= _tcslen(key)) j = 0;
  20.         }
  21. }
  22.  
  23. // и так. key - ключ шифрования, str - строка данных (грубо говоря, лицензия), strlen - длина строки str
  24.  
  25. ну и примерчик создания файла лицензии на жестком диске
  26. FILE * f;
  27. _wfopen_s(&f,licFilePath.GetString(),_T("wb"));
  28. if (f == NULL)return false;
  29. ACHAR str[1024]; _tcscpy(str, licData.GetString());
  30. _encode(_T("Это мой ключик шифрования. чем он длинней, тем сложней ломать"),str,_tcslen(str));
  31. fwrite(str,sizeof(ACHAR),_tcslen(str),f);
  32. fclose(f);
  33.  
PS: думаю перевести при необходимости код на lisp труда не составит
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: BearDyugin от 19-11-2015, 20:36:06
если функция "vk_GetMacAddress" рабочая, то могу посоветовать глянуть в сторону "Win32_Processor" (Win32_NetworkAdapter поменять на Win32_Processor) и запустить. Будет интересовать значение поля "ProcessorId"
Спасибо
По аналогии с "vk_GetMacAddress" получилось вот так
Код - Auto/Visual Lisp [Выбрать]
  1. (defun Get_ProcessorId (/               LocatorObj      SecurityObj
  2.                         SecurityObj     ObjectSetObj    Processor_Id
  3.                        )
  4.   (setq LocatorObj
  5.          (vlax-create-object "WbemScripting.SWbemLocator")
  6.   )
  7.   (setq ServiceObj
  8.          (vlax-invoke
  9.            LocatorObj 'ConnectServer nil nil nil nil nil nil nil nil)
  10.   )
  11.   (setq ObjectSetObj
  12.          (vlax-invoke
  13.            ServiceObj
  14.            'ExecQuery
  15.            "Select * from Win32_Processor"
  16.          )
  17.   )
  18.   (vlax-for Obj ObjectSetObj
  19.     (setq Processor_Id
  20.            (vlax-get Obj 'ProcessorId)
  21.     )
  22.   )
  23.   (foreach Obj
  24.                (list LocatorObj ServiceObj SecurityObj ObjectSetObj)
  25.     (and Obj (vlax-release-object Obj))
  26.   )
  27.   Processor_Id
  28. )
Работает, но всё равно половина не понятно.
1) переменная SecurityObj есть, но в коде (исходном) ни где не определяется, но зато в конце успешно release-ится, или это просто ошибка, притянулось от куда-то из прошлого?
2) Для чего в конце делают release объектов?
3) ID процессора, который мы вроде как получили, ни кто направо и налево не меняет, как тот же MAC-адрес?
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Дмитрий Загорулькин от 19-11-2015, 20:50:48
3) ID процессора, который мы вроде как получили, ни кто направо и налево не меняет, как тот же MAC-адрес?
Нет. Но, насколько я помню, он не является уникальным. То есть, на одинаковых процессорах он один и тот же.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Дмитрий Загорулькин от 19-11-2015, 21:00:53
На основе предыдущего кода. Получаем серийный номер материнской платы:
Код - Auto/Visual Lisp [Выбрать]
  1. (defun Get_BaseBoardSerialNumber (/ LocatorObj ServiceObj ObjectSetObj SerialNumber)
  2.   (setq LocatorObj
  3.          (vlax-create-object "WbemScripting.SWbemLocator")
  4.   )
  5.   (setq ServiceObj
  6.          (vlax-invoke
  7.            LocatorObj 'ConnectServer nil nil nil nil nil nil nil nil)
  8.   )
  9.   (setq ObjectSetObj
  10.          (vlax-invoke
  11.            ServiceObj
  12.            'ExecQuery
  13.            "Select * from Win32_BaseBoard"
  14.          )
  15.   )
  16.   (vlax-for Obj ObjectSetObj
  17.     (setq SerialNumber
  18.            (vlax-get Obj 'SerialNumber)
  19.     )
  20.   )
  21.   (foreach Obj
  22.                (list LocatorObj ServiceObj ObjectSetObj)
  23.     (and Obj (vlax-release-object Obj))
  24.   )
  25.   SerialNumber
  26. )
То же самое, только из BIOS:
Код - Auto/Visual Lisp [Выбрать]
  1. (defun Get_BIOSSerialNumber (/ LocatorObj ServiceObj ObjectSetObj SerialNumber)
  2.   (setq LocatorObj
  3.          (vlax-create-object "WbemScripting.SWbemLocator")
  4.   )
  5.   (setq ServiceObj
  6.          (vlax-invoke
  7.            LocatorObj 'ConnectServer nil nil nil nil nil nil nil nil)
  8.   )
  9.   (setq ObjectSetObj
  10.          (vlax-invoke
  11.            ServiceObj
  12.            'ExecQuery
  13.            "SELECT * FROM Win32_BIOS"
  14.          )
  15.   )
  16.   (vlax-for Obj ObjectSetObj
  17.     (setq SerialNumber
  18.            (vlax-get Obj 'SerialNumber)
  19.     )
  20.   )
  21.   (foreach Obj
  22.                (list LocatorObj ServiceObj ObjectSetObj)
  23.     (and Obj (vlax-release-object Obj))
  24.   )
  25.   SerialNumber
  26. )

Ну и на закуску - уникальный идентификатор компьютера (UUID):
Код - Auto/Visual Lisp [Выбрать]
  1. (defun Get_UUID (/ LocatorObj ServiceObj ObjectSetObj UUID)
  2.   (setq LocatorObj
  3.          (vlax-create-object "WbemScripting.SWbemLocator")
  4.   )
  5.   (setq ServiceObj
  6.          (vlax-invoke
  7.            LocatorObj 'ConnectServer nil nil nil nil nil nil nil nil)
  8.   )
  9.   (setq ObjectSetObj
  10.          (vlax-invoke
  11.            ServiceObj
  12.            'ExecQuery
  13.            "SELECT UUID FROM Win32_ComputerSystemProduct"
  14.          )
  15.   )
  16.   (vlax-for Obj ObjectSetObj
  17.     (setq UUID
  18.            (vlax-get Obj 'UUID)
  19.     )
  20.   )
  21.   (foreach Obj
  22.                (list LocatorObj ServiceObj ObjectSetObj)
  23.     (and Obj (vlax-release-object Obj))
  24.   )
  25.   UUID
  26. )

И на основе вот этого: http://www.nextofwindows.com/the-best-way-to-uniquely-identify-a-windows-machine
Код - Auto/Visual Lisp [Выбрать]
  1. (defun get-machine-guid ()
  2.   (vl-registry-read
  3.     "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography"
  4.     "MachineGuid"
  5.   )
  6. )
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 19-11-2015, 23:20:03
Не уверен, что WbemScripting будет всегда работать. Скорее всего админ запретит его для обычных пользователей.
Возможны и другие проблемы. Обсуждение их здесь: Проблемы использования WMI (http://adn-cis.org/forum/index.php?topic=3286.0)
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Николай Горлов от 20-11-2015, 12:04:05
На основе предыдущего кода. Получаем серийный номер материнской платы:
То же самое, только из BIOS:
Ну и на закуску - уникальный идентификатор компьютера (UUID):
в картинке результат работы этих функций на компьютере, собранном вручную (возможно, если б это был ноут или запаяный деловский или HP-шный корпус, было бы более информативно ))) )
ID процессора, который мы вроде как получили, ни кто направо и налево не меняет
увы, это не серийный номер, а набор циферок-буковок, которые набираются из характеристик процессора. скажу одно, поменять его руками практически никак, он не меняется после повторного включения компьютера ))). пользоваться можно, но не ТОЛЬКО ЭТИМ полем, а совместно с другими. UUID работает (правда возможен вариант, когда первых три набора идут с нулями, если верить документации).

короче говоря, вот так выглядит файл лицензии у меня:
Цитировать
Application:название приложения| <- думаю тут всё понятно
360UserID:XXXXXXXXX| <-идентификатор Autodesk360
MAC:XX:XX:XX:XX| <- мак адрес. не надежно, но не страшно ))) Win32_NetworkAdapter.MACAddress
UUID:XXXXXXXXXXXXXXXXXXXXXXXX| <- Win32_ComputerSystemProduct.UUID
ProcessorId:XXXXXXXXXXX| <- Win32_Processor.ProcessorId
Status:request| <-(ну или ключевое слово, позволяющее перейти в оффлайн режим работы)
KEY:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX| <- рандомно генерируется ключ
и так, если пользователь прошел онлайн проверку (хотя б один раз), генерируется такой файл. сам файл естественно шифруется. функции шифрования написал выше.
получение оффлайн лицензии возможно ТОЛЬКО в случае наличия этого файла. т.е. если установил купленную прогу на 10 компов, то файл запроса лицензии появится только на тех компиках, где входил под своим аккаунтом в Autodesk360 и ЗАПУСКАЛ программу.
дальше, если хочет офлайн, нужно на мыло отправить ключик, состоящий из значений полей: Application|360UserID|KEY
В ответ он получает ключ для того, чтоб файл запроса офлайн лицензии поменялся на полный файл лицензии. Естественно, перед тем, как выдать ключик можно зайти в магазин и глянуть, сколько версий проги купил человечек с этим UID-ом ))).
в открытом виде никакая информация не передается. есть три набора алфавита
1. ABCDE...
2. VGDHA...
3. GRDSL...
инфа внутри файла лицензии лежит в первом варианте алфавита.
мне передается код запроса во втором варианте алфавита
я отправляю код активации в третьем варианте алфавита.
ну и естественно, вся работа происходит в первом варианте алфавита, значит есть функции для превращения набора буковок-циферок ИЗ-В

Не уверен, что WbemScripting будет всегда работать. Скорее всего админ запретит его для обычных пользователей.
если у пользователя такие вольготные условия, что даже интернет есть ))), то вряд-ли закрыт WMI ). ну а если и закрыт, то работа будет только с онлайн лицензией, что тоже лично для меня не сильно страшно.
И на основе вот этого: http://www.nextofwindows.com/the-best-way-to-uniquely-identify-a-windows-machine
очень интересно. нужно потестировать. как проверю, отпишусь по этому поводу.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Николай Горлов от 20-11-2015, 14:50:46
почитал про MachineGuid. Это ключ, который использует криптография виндузов. без проблем его можно поменять на тот, который хочется. если просто удалить и перегрузиться, виндуза сгенерят новый.
http://forum.screenconnect.com/yaf_postst1694_MachineGuid-reset.aspx#post6966

PS: перестают работать программы, которые создают свой ключ на основе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MachineGuid. Простая переустановка переставших работать программ решает проблему )))
http://blogs.msdn.com/b/vivekkum/archive/2009/02/14/machinekey-in-iis.aspx (много букв ни о чем. всё важное в последнем абзаце статьи))) )

так что уж если и привязываться к чему-то, то только к тому, что сложно поменять и уж точно таких привязок должно быть больше, чем одна (например, работать можно если совпало минимум 2/3 или 3/5 привязок). пусть в результате получится не уникальный набор данных в целом, но вероятность того, что одна и та же лицензия будет работать на нескольких компьютерах даже одного отдела уменьшается с увеличением количества привязок.
ну, еще пару слов о процессоре. хоть ProcessorId и не является серийным номером, но для четырех одинаковых процессоров купленных из одного ящика (серийные номера на коробках сверить не получится, чтоб узнать идут ли они подряд))), коробки уже давно сгнили на свалке) я получил четыре разных набора буковок-циферок.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 20-11-2015, 14:56:46
1) ProcessorId не обязательно уникален.
2) Это фишка Intel, а процессор может быть и не Intel
3) Получение CPUID может быть отключено в BIOS.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Николай Горлов от 20-11-2015, 15:58:51
1) ProcessorId не обязательно уникален.
2) Это фишка Intel, а процессор может быть и не Intel
3) Получение CPUID может быть отключено в BIOS.
увы, это жизнь ))). но другого выхода нет. чем больше брать параметров и чем меньше порог проходимости (2/3 параметров или 2/10) тем больше вероятность того, что хоть что-то будет работать (или что комп разберут на части для сбора нескольких других машинок ))) для установки одного ключа на них))) ). и в любом случае, ключ генерится только если всё срабатывает, в противном случае остается только онлайн защита.
кстати, один из самых простых способов получения уникального ключа для виндузов делается на основе времени создания папки виндузов на компьютере ))). завалить  ключ можно только переустановив windows ))). хакнуть можно написав маленький досовый экзешник, который установит дату создания папки на требуемом компьютере в нужное время ))).
так что повторюсь, взлом защиты должен превышать цену покупки. этого вполне достаточно
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Владимир Шу от 26-11-2015, 09:15:05
Так как топик посвящен защите ПО, то хотелось бы узнать, как уважаемые форумчане пишущие на .net защищают свой од от просмотра и как выглядит защита этого кода?
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: BearDyugin от 27-11-2015, 10:46:42
работать можно если совпало минимум 2/3
При этом мне кажется, если из 3 параметров совпало только 2, то 3-й стоит переписать на новое значение?
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Дмитрий Загорулькин от 27-11-2015, 11:10:10
в картинке результат работы этих функций на компьютере, собранном вручную (возможно, если б это был ноут или запаяный деловский или HP-шный корпус, было бы более информативно ))) )
Эта информация не является неизменяемой.
У меня был случай, когда я обновлял BIOS своей материнской платы. После этого, слетела регистрация всех моих автокадов и у меня не получилось никак их заново активировать. Помню, я даже обращался в ADN за помощью в этом вопросе.
Дело оказалось вот в чем: в утилите обновления есть кнопка "Clear DMI". Ну я ее и нажал, по глупости, удалив, тем самым, данные о номере матплаты из BIOS. В итоге, удалось раскопать инструмент, который позволил вбить этот номер заново и проблема пропала.
http://www.gigabyte.ru/forum/viewtopic.php?f=58&t=84520&p=398811#p398811
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Николай Горлов от 27-11-2015, 11:17:55
Цитировать
При этом мне кажется, если из 3 параметров совпало только 2, то 3-й стоит переписать на новое значение?
ага, только делать это желательно незаметно для пользователя (дата последних изменений файла лицензии меняться не должна, чтоб пользователь ничего не заподозрил ))) )

Так как топик посвящен защите ПО, то хотелось бы узнать, как уважаемые форумчане пишущие на .net защищают свой од от просмотра и как выглядит защита этого кода?
хоть я и начинающий дотнетовец ))) (жизнь заставила разбираться с ревитом))) ) но на этот вопрос ответ один - обфускаторы. по факту, на любой обфускатор есть "деобфускаторы", да и, как пишут люди, после обфускации иногда увеличивается время обработки функций. в принципе, это имеет право оказатья правдой, ведь обфускация не защищает код, а путает следы ))). так что правильный ответ будет... увы никак. из советов в интернете советуют на дотнете делать то, что не жалко, а всю логику выносить в web сервисы или писать на с++. по факту, на c# пишут полностью всё))) в надежде на порядочность и особо не заморачиваются возможностью взлома.
уж что точно не стоит писать на c#, так это защиту ))) с открытым ключом проверки.

Эта информация не является неизменяемой.
тут вот в чем дело... я и не утверждал, что это константы, выцарапанные гвоздем на заводе))). но какова будет вероятность того, что это компьютер, для которого была получена лицензия, если 4/5 характеристик не совпали с данными ключа? а так как в тех полях просто мусор, скорей всего одинаковый для всех компьютеров на моей фирмы ))), т.к. готовое в принципе не берем, а собираем под себя и свои требования, то данные поля в ключе перекинутом на разные компьютеры совпадут, что уж точно не есть хорошо. пользоваться лучше осмысленными полями, хоть вероятность нарваться на пустое всегда остается. отсюда вывод - чем больше полей возьмем, тем лучше.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: BearDyugin от 07-01-2016, 07:12:22
Ну в общем так и сделал, собрал серийник из:
Но вот примерно каждый третий серийник стал приходить, где часть Mac адреса,и часть GUID-а, совпадают.
Тогда проверил ещё раз что возвращают эти функции, на моём ПК
Get_MacAddress -> ("FC:8B:97:0A:52:FE" "48:5B:39:97:5B:88")
Get_GUID -> "7E529360-FE8D-11D5-84C5-485B39975B88"
и оказалось они содержат общую часть...
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Владимир Шу от 10-02-2016, 15:32:41
Свеженькая статья на эту тему от Kean Walmsley: Securing your AutoCAD app using .NET (http://through-the-interface.typepad.com/through_the_interface/2016/02/securing-your-autocad-app-using-net.html)
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Дмитрий Загорулькин от 10-02-2016, 15:41:31
А если еще и код вот такой штукой закрыть: http://www.eziriz.com/dotnet_reactor.htm, то вполне надежно может получиться :)
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Николай Горлов от 10-02-2016, 16:14:32
Свеженькая статья на эту тему от Kean Walmsley: Securing your AutoCAD app using .NET (http://through-the-interface.typepad.com/through_the_interface/2016/02/securing-your-autocad-app-using-net.html)
ну допустим это перепечатка старого материала с теми же косяками :)
первое и самое главное, теоретически я не знаю, как в конечном итоге назовут моё приложение в магазине.
на практике создается просто публикация с интересующим меня именем без отправления на проверку. ну и после создания публикации я вижу имя, которое мне присвоили. следовательно, зашивать :en мягко говоря не разумно, особенно если локализаций несколько в одном инсталляторе. сейчас, например, они штампуют еще суффиксы, например "_windows32and64" к имени приложения.
короче говоря. зашивать нужно ТОЛЬКО имя приложения, которое вводится на страницу при начале публикации, остальное - от большой фантазии

пример из реальной жизни :). есть приложение copyEx. следовательно, запросы (все запросы проверил, так что 100% инфа :) )
appstore.exchange.autodesk.com:copyex
appstore.exchange.autodesk.com:copyex_windows32and64:ru
appstore.exchange.autodesk.com:copyex_windows32and64:en
appstore.exchange.autodesk.com:copyex_windows32and64
appstore.exchange.autodesk.com:copyex_windows32
appstore.exchange.autodesk.com:copyex_windows64

для валидного пользователя вернут один и тот же вариант - "true". да оно и правильно. если человек скачал английскую версию, то в русской, доступной в том же инсталляторе он должен работать без лишних телодвижений.
и вот если я знаю, что моё приложение называется copyex, страница публикации приложения говорит, что ссылка на проверку заканчивается на copyex без всяких суффиксов, какой мне смысл заниматься отсебятиной, которая через время может перестать работать?
например,
appstore.exchange.autodesk.com:copyex_lol32 возвращает false :):):). где гарантия того, что через пол года "_windows32" не вернет false?
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Дмитрий Загорулькин от 10-02-2016, 16:47:13
Можно там в комментариях у Кина уточнить этот вопрос - нужно ли указывать версию виндовс и локализацию.
Мне вот еще интересно, почему-то для меня, как разработчика приложения, при попытке проверить пользователя, всегда возвращается False:
{"UserId":"<тут мой ONLINEUSERID>","AppId":"appstore.exchange.autodesk.com:civiltableexport","IsValid":false,"Message":"Ok"}Приложение бесплатное. Я его даже еще раз скачал и переустановил - не помогает.
Это у всех так?
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Николай Горлов от 10-02-2016, 17:11:22
Мне вот еще интересно, почему-то для меня, как разработчика приложения, при попытке проверить пользователя, всегда возвращается False
ну на это могу ответить и я :). true возвращается ТОЛЬКО если приложение платное и ТОЛЬКО если для данного приложения в таблице есть указанный ID. засунуть свой ID туда можно двумя способами:
1. купить свое собственное приложение
2. попросить автодесковцев добавить ID в таблицу купивших приложение.

PS: вариантом №2 они всей толпой пользуются для тестирования онлайн защиты. мне на каждое приложение (всего их сейчас 2) приходят 2-3 письма (одно письмо на одного добавленного), что такие-то товарищи добавлены в список:
The following users are now entitled by Autodesk App Store admin to download ...
ну и если потом попользоваться их ID :):):) для проверки валидности, то возвращает true.


Можно там в комментариях у Кина уточнить этот вопрос - нужно ли указывать версию виндовс и локализацию.
а смысл? я как-то пытался выяснить почему на возврат всегда false идет в такого же рода комментариях после публикации. а выяснил только пообщавшись с магазинными товарищами. скорей всего ответом будет - я просто перепечатал старую тему снабдив её видео. для более детально информации... и куча ссылок :)

просто, когда я начинал заниматься вопросом магазина, мне попалась статья, где прям выделено было то, что засовывается в строку проверки. может, если будет время, поклацаю, поищу. если найду - кину сюда ссылку.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Дмитрий Загорулькин от 10-02-2016, 17:23:05
ТОЛЬКО если приложение платное
Но ведь приложение Screenshot, о котором речь в статье идет, не является платным. И для него с моим ID вернуло True, после того, как я его скачал и установил.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Николай Горлов от 10-02-2016, 18:08:46
Но ведь приложение Screenshot, о котором речь в статье идет, не является платным. И для него с моим ID вернуло True, после того, как я его скачал и установил.
хихи, а я даже не устанавливал и тоже true. а после этого скачал еще пару бесплатных программ. и для них - false.
так что это у Кена нужно выяснить, почему его уникальное приложение возвращает true, а остальные не хотят ))).
может причина в том, что оно с 2012 года висит. может тогда добавлялись пользователи и для бесплатных приложений. ну и скрипт оставили без изменений до сих пор, не знаю.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Николай Горлов от 11-02-2016, 12:09:48
Можно там в комментариях у Кина уточнить...
я вот не поленился и спросил ))). ответ достоин внимания )))
PS: кстати, там в вопросе я вставил ссылочку, где есть картинка с красным прямоугольничком, указывающим на имя приложеения, которое и нужно вставлять в проверку.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Владимир Шу от 11-02-2016, 12:55:21
ответ достоин внимания )))
Скромничает однако.
Хотя если присмотреться, то тут (http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=24243865) используют  RestSharp, а он использовал продукт от Newtonsoft. Мелочь, а приятно.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Николай Горлов от 11-02-2016, 13:24:13
Хотя если присмотреться, то тут используют  RestSharp, а он использовал продукт от Newtonsoft.
:) я например вообще обошелся стандартным winhttp из С++. суть то одинаковая - ушел запрос, пришел ответ. http-шных библиотек полно и платных и бесплатных, и стандартизированных и самопальных :). вопрос только в том, что бездумно перепечатывается одно и то же из года в год. не спорю, на данный момент такой вариант работать будет, но если поменяется политика и добавят чего-то нового, убрав старое, то можно и натерпеться от пользователей, купивших приложение, за те 2-3 недели, пока будет перевыкладываться в магазин исправленный вариант онлайн защиты.

кстати, в дополнение к плагину screenshot.
там только английская версия, но true возвращается и для ":fr", ":ru", ":it" или букв любого другого языка, но если поставить что-то левое, например, ":aa", то возврат - false. возможно когда-то они пытались делать разбивку по языкам, типа скачал с английской страницы, значит запускать можно только английскую версию мультиязычного плагина и т.п. но потом поняли, что смысла в этом нет (но буквы по каким-то соображениям оставили :), так же, как и добавили недавно "_windows" и "_macos") и теперь нам приходится с этим развлекаться, постоянно задумываясь над тем, по какому ключевому слову проводить проверку согласно свеженьким мануалам.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Владимир Шу от 11-02-2016, 15:20:34
я например вообще обошелся стандартным winhttp из С++. суть то одинаковая - ушел запрос, пришел ответ.
Позвольте согласиться.  :D

Извините, вам запрещён просмотр содержимого спойлеров.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: BearDyugin от 02-08-2016, 09:06:39
Ну в общем так и сделал, собрал серийник из:
  • части Mac адреса,
  • части GUID-а,
  • кода приложения,
  • части  ProcessorId
В общем за год регистраций набрал статистики:

1) Функция vk_GetMacAddress (http://adn-cis.org/forum/index.php?topic=2580.msg13175#msg13175) выполняется дольше всех примерно секунд 5, и через раз выдаёт разные результаты, их как правило не больше 3  ;D но всё равно не приятно, в итоге отказался от неё.
2) Функция Get_ProcessorId (http://adn-cis.org/forum/index.php?topic=2580.msg13373#msg13373) работает стабильно, даже после переустановки системы выдаёт тоже значение, но как показала статистика, этих значений не много, очень часто встречаются одинаковые у разных пользователей.
3) Функция Get_UUID (http://adn-cis.org/forum/index.php?topic=2580.msg13376#msg13376) вроде тоже стабильны, и ещё не видел повтарений, можно впринципе только её одну и использовать.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: BearDyugin от 04-10-2016, 06:46:52
2) Функция Get_ProcessorId (http://adn-cis.org/forum/index.php?topic=2580.msg13373#msg13373) работает стабильно, даже после переустановки системы выдаёт тоже значение, но как показала статистика, этих значений не много, очень часто встречаются одинаковые у разных пользователей.
3) Функция Get_UUID (http://adn-cis.org/forum/index.php?topic=2580.msg13376#msg13376) вроде тоже стабильны, и ещё не видел повтарений, можно впринципе только её одну и использовать.
В общем пишут мне периодически, что переустановили систему и серийник поменялся, т.е. это всё же эти функции не столь стабильны, о чем не однократно предупреждали, или пользователи меня обмануть хотят?
И как дела обстоят с прочим лицензионным ПО после переустановки системы? Просто как то я сам с переустановками ни разу не сталкивался...
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 04-10-2016, 10:49:41
В общем пишут мне периодически, что переустановили систему и серийник поменялся, т.е. это всё же эти функции не столь стабильны, о чем не однократно предупреждали, или пользователи меня обмануть хотят?
Если речь идет о (Get_UUID), то так и должно быть - при переустановке системы этот код меняется.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 04-10-2016, 10:50:23
И как дела обстоят с прочим лицензионным ПО после переустановки системы? Просто как то я сам с переустановками ни разу не сталкивался...
С продуктами Autopdesk аналогично - код запроса новый.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Дмитрий Загорулькин от 04-10-2016, 11:13:03
ProcessorID (он же CPU ID) - это та информация, которую выдает процессор по соответствующему запросу к нему. Не верю, что он может измениться после переустановки ОС.
UUID хранится в биосе. Как я считал, он формируется и задется при сборке ПК и уже впоследствии не изменяется (если, конечно, не использовать специальный софт). Но, вроде пишут, что может измениться при переустановке: http://www.cyberforum.ru/csharp-net/thread929851.html
Судя по этому: http://vlab.su/viewtopic.php?f=235&t=31336, даже если что-то в UUID изменилось, должна остаться неизменной часть, которая формируется из MAC-адреса сетевой карты. Сверьте новый UUID со старым, если совпадает неизменная часть, то, скорее всего, не обманывают. 
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 04-10-2016, 11:22:16
UUID хранится в биосе. Как я считал, он формируется и задется при сборке ПК и уже впоследствии не изменяется (если, конечно, не использовать специальный софт).
Он НЕ хранится в биосе, а хранится в реестре. Ну и реестр при переустановке системы чистится, если выполняется полная переустановка с форматированием раздела диска.
ProcessorID (он же CPU ID) - это та информация, которую выдает процессор по соответствующему запросу к нему. Не верю, что он может измениться после переустановки ОС.
Он точно не меняется, но очень часто эта информация недоступна и выдаётся один и тот же номер, никакого отношения к CPU ID не имеющий. Кроме того при помощи драйверов теоретически можно выполнить подмену CPU ID.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 04-10-2016, 11:23:55
должна остаться неизменной часть, которая формируется из MAC-адреса сетевой карты
Подменить MAC-адрес настолько просто в Windows, что с этим справится даже ребёнок - так что это ненадежный идентификатор.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: BearDyugin от 04-10-2016, 11:33:28
А если ProcessorId
ProcessorID точно не меняется, но очень часто эта информация недоступна и выдаётся один и тот же номер
Да, он ни разу не изменился, но он у каждого второго одинаковый  :( Так что даже по его части не понятно будет обманывают или нет, т.к. он легко может быть на другой машине такой же.


С продуктами Autopdesk аналогично - код запроса новый.
Т.е. купил чувак лицензионный AutoCAD, переустановил систему и всё, покупай новую лицензию?
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 04-10-2016, 11:42:44
Т.е. купил чувак лицензионный AutoCAD, переустановил систему и всё, покупай новую лицензию?
Нет. Во-первых, если переустановка системы плановая (т.е. система жива), то можно воспользоваться утилитой перемещения лицензий перед переустановкой Windows. Во-вторых, даже если лицензия не была перенесена перед переустановкой Windows, можно несколько раз получать код ответа на один и тот же серийный номер продукта Autodesk и выполнять его авторизацию. В-третьих, если количество установок на один и тот же номер было превышено можно обратится к партнеру Autodesk, у которого приобретался продукт и он выполнит авторизацию, предварительно пожурив вас за то, что вы не воспользовались утилитой перемещения лицензий.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Дмитрий Загорулькин от 04-10-2016, 16:53:00
Он НЕ хранится в биосе, а хранится в реестре.
А Вы не спутали его с MachineGuid? Я немного погуглил, вроде все пишут, что UUID в BIOS хранится. Но информации об этом из каких-нибудь более-менее авторитетных источников не нашел.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 04-10-2016, 17:14:46
Он НЕ хранится в биосе, а хранится в реестре.
А Вы не спутали его с MachineGuid? Я немного погуглил, вроде все пишут, что UUID в BIOS хранится. Но информации об этом из каких-нибудь более-менее авторитетных источников не нашел.
Он похоже генерируется на основе каких-то данных из BIOS и еще чего-то, что не содержится в BIOS. И хранится в реестре. И именно поэтому при переустановке Windows оно меняется.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: BearDyugin от 04-10-2016, 17:20:31
то можно воспользоваться утилитой перемещения лицензий перед переустановкой Windows.
Ну не писать же мне сейчас такую утилиту для 5$ приложения. :-(
можно несколько раз получать код ответа на один и тот же серийный номер продукта Autodesk и выполнять его авторизацию.
Т.е. мы можем легально установить 5 копий одного продукта на 5 машин скажем в своём отделе?
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Дмитрий Загорулькин от 04-10-2016, 17:34:30
Т.е. мы можем легально установить 5 копий одного продукта на 5 машин скажем в своём отделе?
Просто, как я понимаю, они так решили проблему активации при переустановке системы или другой похожей ситуации. Установить вы можете хоть миллион копий :) А вот использовать в работе одновременно можно только то количество копий, сколько куплено лицензий.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Дмитрий Загорулькин от 04-10-2016, 17:39:20
Он НЕ хранится в биосе, а хранится в реестре.
В таком случае, его бы и получали из реестра. Зачем же все тогда используют методы WMI для этого?
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 04-10-2016, 17:39:53
Т.е. мы можем легально установить 5 копий одного продукта на 5 машин скажем в своём отделе?
Легально - нет. То, что у тебя будет установлено и работать 5 продуктов не значит, что все 5 ты используешь легально, если купил только один. Если по документам ты купил одно рабочее место - то легально только одно рабочее место можешь использовать. Но это уже юридические тонкости, с которыми не дай Бог тебе столкнуться...
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 04-10-2016, 17:41:42
В таком случае, его бы и получали из реестра. Зачем же все тогда используют методы WMI для этого?
А ты думаешь WMI работает не с реестром? ;) Во многих случаях именно с ним. Просто однократно это значение (рас)считывается и записывается в реестр. А оттуда уже используется.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Дмитрий Загорулькин от 04-10-2016, 17:46:24
Положа руку на сердце, честно Вам признаюсь, что в тонкостях работы WMI я абсолютно не разбираюсь :). Просто мне непонятно то, что гораздо проще же и надежнее просто прочитать значение из реестра, чем пользоваться методами WMI. Неужели никто до этого не додумался?
Если верить вот этой статье: http://www.windowsnetworking.com/articles-tutorials/windows-7/Deploying-Windows-7-Part18.html, то UUID можно получить даже с компьютера без ОС.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: BearDyugin от 04-10-2016, 18:54:11
Просто мне непонятно то, что гораздо проще же и надежнее просто прочитать значение из реестра, чем пользоваться методами WMI.
Я тоже об этом подумал.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 04-10-2016, 19:39:04
Просто мне непонятно то, что гораздо проще же и надежнее просто прочитать значение из реестра, чем пользоваться методами WMI. Неужели никто до этого не додумался?
Не думаю, что оно там хранится в удобоваримом виде. Впрочем спорить не буду. В любом случае далеко не все материнки поддерживают UUID. В отличии от старых IBM-360/370 (и советской серии ЕС-10XX), которые все имели реальный CPUID и все они были уникальны, на PC этого нет и видимо никогда уже не будет - не вижу попыток реальной стандартизации. Вроде что-то и вводили, но как-то через одно место...
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Дмитрий Загорулькин от 05-10-2016, 01:50:44
Эх, не поленился я между делом поставить Windows 7 x32 параллельно с Ubuntu 9.10 на древнющий Acer Extensa 5220, который валяется в шкафу уже пару лет. Что могу сказать: не изменился UUID после обеих инсталляций! Единственное, что Ubuntu и Windows по разному его показывают:
Ubuntu: 34C04320-76B7-11DC-A503-E5CF2AB6A82A
Windows: 2043C034-B776-DC11-A503-E5CF2AB6A82A
Что интересно, при этом, MAC-адреса обеих сетевых карт не совпадают с концовкой UUID. Также, при изменении MAC-адресов, UUID остается неизменным.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: BearDyugin от 02-07-2017, 12:25:19
А какие мысли на счёт привязки к ONLINEUSERID ?
Если ПК без интернета, то пользователь не сможет войти в учётку?
На скольких машинах одновременно пользователь может быть одновременно авторизован?
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 02-07-2017, 13:09:49
Если ПК без интернета, то пользователь не сможет войти в учётку?
А проверить? Отключи интернет и запусти AutoCAD. У меня ONLINEUSERID не изменился при запуске при отключенной сети.

На скольких машинах одновременно пользователь может быть одновременно авторизован?
А вот на это я бы не стал рассчитывать. 
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: BearDyugin от 02-07-2017, 13:20:23
А проверить? Отключи интернет и запусти AutoCAD. У меня ONLINEUSERID не изменился при запуске при отключенной сети.
Проверял конечно, если ранее входил в учётку то всё норм. А если выйти то без интернета уже не войти, впрочем как и не выйти
А вот на это я бы не стал рассчитывать. 
Вот тут и не понятно, смогут ли под одним аккаунтом войти 10 ПК в отделе? Т.е. купив одну лицензию, пользоваться под одной учёткой всем отделом? Пусть даже не разом, а по очереди, потом отключить интренет и можно пользоваться?
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 02-07-2017, 13:30:10
Вот тут и не понятно, смогут ли под одним аккаунтом войти 10 ПК в отделе? Т.е. купив одну лицензию, пользоваться под одной учёткой всем отделом? Пусть даже не разом, а по очереди, потом отключить интренет и можно пользоваться?
Об этом я и написал, что рассчитывать на это нельзя. Раньше на форум Autodesk можно было зайти из разных мест под одной учеткой одновременно. Сейчас нельзя. Что придумают очередное с этим - я прогнозировать не берусь.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: BearDyugin от 22-12-2017, 06:53:01
Пытаюсь разобраться с покупкой через магазин.
Создал платное приложении,пока не опубликовано.
Попросил "кураторов" добавить мой ID в список "оплативших"

Я: I need to have any ID added to the database that bought my application so that I can conduct the tests.
К:For this paid app (https://apps.autodesk.com/ACD/en/Detail/Index?id=7024841255247590068&appLang=en&os=Win32_64&mode=preview) you would like to implement the Entitlement API and also test, right?
Please provide me your “user id/email id” from which you would like to test. I will enable the entitlement for that email id.
Я:user id: 201011031059843
email: 89139290787@mail.ru
К:I have added the email id “89139290787@mail.ru” now this user is entitled to access this paid app “Import \ Export coordinates”
вместе с этим получил 2 автоматических письма:
Цитировать
Dear Bear Dyugin,

You are now entitled to download and use Import \ Export coordinates. Please use this link (https://apps.autodesk.com/Autodesk.Appstore.Web.Models.Views.Store/en/Detail/Index?id=7024841255247590068&appLang=en&os=Win32_64) to download your new app.

Please contact appsinfo@autodesk.com if you have any problems or have any other questions regarding Autodesk App Store.

Sincerely,
Autodesk App Store Team.
И
Цитировать
Dear Bear Dyugin,

The following users are now entitled by Autodesk App Store admin to download Import \ Export coordinates

89139290787@mail.ru


Please contact apps.customersupport@autodesk.com if you have any problems or have any other questions regarding Autodesk App Store.

Sincerely,
Autodesk App Store Team

Т.е. ни каких userid про которые писал Николай в письме я не вижу
 
The following users are now entitled by Autodesk App Store admin to download ...
ну и если потом попользоваться их ID :):):) для проверки валидности, то возвращает true.

Ну всё равно пытаюсь:
https://apps.autodesk.com/webservices/checkentitlement?userid=201011031059843&appid=appstore.exchange.autodesk.com:Import%20\%20Export%20coordinates
Получаю false:
{"UserId":"201011031059843","AppId":"appstore.exchange.autodesk.com:Import \\ Export coordinates","IsValid":false,"Message":"Ok"}
На всякий случай проверяю с emailid:
https://apps.autodesk.com/webservices/checkentitlement?emailid=89139290787@mail.ru&appid=appstore.exchange.autodesk.com:Import%20\%20Export%20coordinates
Получаю неверный параметр:
{"AppId":"appstore.exchange.autodesk.com:Import \\ Export coordinates","IsValid":false,"Message":"Invalid parameter(s)."}

Куратору конечно опять написал, но я ему только три дня объяснял, зачем моё(или любое) userid добавить в базу "купивших"
Может тут быстрее кто-нибудь подскажет?

Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: BearDyugin от 22-12-2017, 10:36:07
Получил ответ
Цитировать
Hi Berdyugin,

Unfortunately, I am not the right guy to help you with programming as I do not have programming expertise ☹

If you are an ADN member you can post your query to API support or you can try using the API forum and someone would certainly help you.

Sorry,
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Николай Горлов от 22-12-2017, 10:59:03
приложение уже лежит в магазине, но просто не в открытом доступе? тогда просто нужно
1. залогиниться в магазине
2. зайти в свой "publisher corner"
3. найти свое приложение. в строке будет кнопка (ссылка) Manage. Нажать
4. откроется страничка настроек приложения. верхний левый угол - там будет имя приложения (вот не уверен, что и сейчас также. чего-то они там меняли). попробуй вставить в строку запроса то имя, которое указано на страничке. ну и там же есть справа закладка "Download Entitlement Management"
(https://s9.postimg.org/6zn7sqwyz/image.png) (https://postimg.org/image/6zn7sqwyz/)

у меня две регистрации в магазине. вот email, привязанный к тестовому аккаунту я и добавил. а USERID тестового аккаунта вытащил из переменной автокада, предварительно войдя в акаде в автодесковский аккаунт. как-то так.

PS: про переменную emailid первый раз слышу. судя по возврату checkentitlement, она тоже не в курсе :)
PS2: userid соответствует email-у, или это два разных пользователя?
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: BearDyugin от 22-12-2017, 11:18:30
откроется страничка настроек приложения. верхний левый угол - там будет имя приложения
там только id
Вставил его после appid=appstore.exchange.autodesk.com: не помогло
Потом сразу как id
https://apps.autodesk.com/webservices/checkentitlement?userid=201011031059843&appid=7024841255247590068
И всё заработало!
{"UserId":"201011031059843","AppId":"7024841255247590068","IsValid":true,"Message":"Ok"}

Спасибо :-)

Кнопки "Добавить холявщика" пока нет, может после публикации появится.

Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Николай Горлов от 22-12-2017, 11:39:44
это замечательно. единственное, что еще следует уточнить у автодесковцев - не поменяется ли это appid после публикации приложения. это я к чему. у меня вроде бы тоже есть одно приложение с цифровым appid. но достукиваюсь я до него через имя а не порядковый номер. просто если номер закреплен статически, то все ок, а вот если он может поменяться, то есть вероятность, что пользователи начнут нервничать из-за того, что приложение вдруг перестанет работать

кстати, обрати внимание на название приложения и на то, что пишется в строке браузера. в браузере двойной слэшь вместо одинарного. может быть в этом была проблема
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: BearDyugin от 22-12-2017, 11:42:27
кстати, обрати внимание на название приложения и на то, что пишется в строке браузера. в браузере двойной слэшь вместо одинарного. может быть в этом была проблема
Да я заметил, но в адресе один слэш, это в ответе 2, но там значение в "" типа текстовое, а в текстовых слэшь типа служебный симвл, потому их и 2...
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Николай Горлов от 22-12-2017, 11:58:23
Цитировать
в текстовых слэшь типа служебный симвл, потому их и 2
вот оно и ищет пользователя для приложения, в имени которого два слэша :), а таких нет

еще символ слэша можно заменить на %5С, но в данном случае это не поможет, я проверил. скорей всего у них там стоит парсер на введенный текст (типа защита, чтоб нельзя было залезть, куда не следует простому человеку лазить :) ). ну и этот самый парсер добавляет еще 1 слэш. а вот с "/" (%2F) таких проблем нет. его не умножает. но это так, для будущих программ, на заметку :)
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Madison1982 от 28-05-2018, 11:57:47
Добрый день.
Подскажите более детально, как организовать защиту файла LISP с помощью UUID?
Пытаюсь применить функцию Get_UUID (http://adn-cis.org/forum/index.php?topic=2580.msg13376#msg13376), по аналогии с vk_GetMacAddress, но пишет ошибку:
; error: bad argument type: listp "292910C0-D7DA-11DD-A740-C8600098E960"когда вставляю свой UUID для проверки. Наверняка проблема с типом данных, но мой уровень владения LISP пока не позволяет решить эту проблему самостоятельно. Буду признателен за помощь.
Код - Auto/Visual Lisp [Выбрать]
  1. (vl-load-com)
  2. (and
  3. (defun Get_UUID (/ LocatorObj ServiceObj ObjectSetObj UUID)
  4.   (setq LocatorObj
  5.          (vlax-create-object "WbemScripting.SWbemLocator")
  6.   )
  7.   (setq ServiceObj
  8.          (vlax-invoke
  9.            LocatorObj 'ConnectServer nil nil nil nil nil nil nil nil)
  10.   )
  11.   (setq ObjectSetObj
  12.          (vlax-invoke
  13.            ServiceObj
  14.            'ExecQuery
  15.            "SELECT UUID FROM Win32_ComputerSystemProduct"
  16.          )
  17.   )
  18.   (vlax-for Obj ObjectSetObj
  19.     (setq UUID
  20.            (vlax-get Obj 'UUID)
  21.     )
  22.   )
  23.   (foreach Obj
  24.                (list LocatorObj ServiceObj ObjectSetObj)
  25.     (and Obj (vlax-release-object Obj))
  26.   )
  27.   UUID
  28. )
  29.   (vl-position "292910C0-D7DA-11DD-A740-C8600098E960" (Get_UUID))
  30.  
  31.   (defun C:...
  32.   ...код основной программы
  33.   ) ; end of defun
  34. ) ; end of and
  35.  
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Алексей Кулик от 28-05-2018, 12:46:08
Функция get_uuid возвращает строку. А ты пробуешь с ней работать как со списком. Тут либо
Код - Auto/Visual Lisp [Выбрать]
  1. (vl-position "292910C0-D7DA-11DD-A740-C8600098E960" (list (Get_UUID)))
либо
Код - Auto/Visual Lisp [Выбрать]
  1. (= "292910C0-D7DA-11DD-A740-C8600098E960" (Get_UUID))
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Александр Ривилис от 28-05-2018, 22:59:41
Madison1982
Прочитайте у меня в подписи как следует форматировать код для форума и соблюдайте это правило.
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Алексей Кулик от 28-05-2018, 23:01:53
Дополню... Если программа привязывается к нескольким компам, то лучше будет использовать нечто типа
Код - Auto/Visual Lisp [Выбрать]
  1. (member (get-uuid) '("292910C0-D7DA-11DD-A740-C8600098E960" "292910C0-D7DA-11DD-A740-C8600098E690" ;|<...>|;))
Название: Re: Программная защита и авторизация приложений магазина.
Отправлено: Madison1982 от 30-05-2018, 15:00:44
Алексей Кулик, спасибо огромное, очень помогли, и дополнение очень кстати.
Александр Ривилис, учту.