Автор Тема: Привязка скрипта к одному компьютеру (железу)  (Прочитано 65148 раз)

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

Оффлайн art279 [?]

  • Новичок
  • *
  • Сообщений: 20
  • Репутация: 3
  • Пол: Мужской
    • Награды
Может моя мысль покажется Вам странной, но зачем использовать библиотеку WinAPIEx.au3 для привязки скрипта ко всему железу, ну мне кажется что достаточно привязать к серийнику "харда" он индивидуальный и неповторимый для каждого, да и в качестве проверки использовать функцию DriveGetSerial, если я неправ может объясните в чём.....

Русское сообщество AutoIt

Re: Привязка скрипта к одному компьютеру (железу)
« Ответ #30 Отправлен: Август 15, 2010, 19:27:47 »

Оффлайн hikki [?]

  • Продвинутый
  • ***
  • Сообщений: 233
  • Репутация: 99
    • Награды
Пару раз переносил установленную систему на новый винт с помощью акронис чтототамещё, остальное железо не менял вообще. Вот и уникальность и индивидуальность. Нужен все таки набор признаков, а не один.

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5379

  • Автор темы
  • Репутация: 2693
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Может моя мысль покажется Вам странной, но зачем использовать библиотеку WinAPIEx.au3 для привязки скрипта ко всему железу, ну мне кажется что достаточно привязать к серийнику "харда" он индивидуальный и неповторимый для каждого, да и в качестве проверки использовать функцию DriveGetSerial, если я неправ может объясните в чём.....

DriveGetSerial() не выдает серийный номер HDD, она выдает серийный номер тома, который изменится при следующей разметки (форматировании) диска. А именно серийник HDD, как раз берет _WinAPI_UniqueHardwareID(), опционально.


Думай, прежде чем говорить.

Оффлайн Bloodrinker [?]

  • Новичок
  • *
  • Сообщений: 228
  • Репутация: 19
  • Пол: Мужской
  • <Блуждающий...>
    • Награды
Ну допустим с реализацией индентификации железа с ПК разобрались, а как быть со скрытой отправкой данных о железе на сервер. Да и вообще, что должно быть на сервере? как вообще сделать на сервере проверку номеров, выдавание разрешения на запуск приложения или отказ на запуск - без понятия... :wacko:

Русское сообщество AutoIt

Re: Привязка скрипта к одному компьютеру (железу)
« Ответ #33 Отправлен: Август 16, 2010, 23:31:41 »

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5379

  • Автор темы
  • Репутация: 2693
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Здесь я не помощник. Может быть Garrett?

:whistle:

Оффлайн Bloodrinker [?]

  • Новичок
  • *
  • Сообщений: 228
  • Репутация: 19
  • Пол: Мужской
  • <Блуждающий...>
    • Награды
подождем) может он заглянет в тему) может есть пример скрипта какого нибудь, на языке веб программирования, српециально для этого дела.... :-\

Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 3814
  • Репутация: 950
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Yashied
Bloodrinker
Ребята, регистрация на сервере сложностей не представляет! Вариантов достаточно!  :)
Как вариант, ваша программа, собрав все данные и сформировав запрос, просто отошлёт их на заранее указанный в программе адрес сервера, по любому удобному для вас протоколу (HTTP, HTTPS) и любым методом GET или POST.
На сервере скрипт примет их и закинет в базу, опять же сформированную как вам угодно, к примеру, UID – вашей машины, ваш Mail (куда вам придёт ключ), Name и т. д.

Меня куда больше гложет вопрос, как сложить три составляющие:
1. Машину (ПК)
2. Пользователя (который честно, купил программу)
3. Лицензионный ключ

Притом что:
А. Пользователя (который честно, купил программу) захочет переустановить программу, или поставить её себе на работе (он ведь честно её купил).
В. Идентифицировать пользователя как честно купившего программу (в случае утери ключа),  и выдать ему новый ключ.

Ну, с UID машины я вроде разобрался! Это будет просто как бы одна из составляющих при генерации ключа. Другие составляющие это Name, Mail и т. д. Кстати, по имени, почте и другим составляющим будет идти идентификация пользователя как купившего программу.

В общем, я пока остановился на RSA варианте! Вот теперь думаю как сие чудо воплотить в Autoit`е.

Скорблю и помню.




Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5379

  • Автор темы
  • Репутация: 2693
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Это уже становится интересно. Хорошо бы сделать какой-нибудь тестовый сервер для проверки этой теории.

Ну, с UID машины я вроде разобрался! Это будет просто как бы одна из составляющих при генерации ключа.

Нет, ключ, он сам по себе. Это просто уникальный ID, от балды. Главое, что бы он не повторялся. Я думаю генерация обычного GUID подойдет. Этот ключ генерится в момент покупки программы и теоретически отсылается на e-mail честного пользователя. Имя пользователя в данном случае не обязательно, но пусть будет для порядка. Если я буду устанавливать программу с произвольным ключем, то это не пройдет, т.к. он не был сгенерен и его нет в базе на сервере. Сразу отказ с сообщением "Неверный серийный номер". Т.е. первое, что установщик делает, это проверяет, есть ли на сервере такой ключ.

Поехали дальше. Ключ есть. Сервер требует от установщика ID компьютера (UID), на котором он (установщик) запущен. Установщик высылает на сервер UID (16 байт или строковое представление). Если UID на сервере отсутствует (пустое место, 0 и т.д.), то этот присланный UID заносится в базу на сервер и установщику возвращается "OK". Если UID на сервере присутствует и соответствует присланному UID, то тоже "OK". Если UID на сервере присутствует, но отличается от того, который был передан установщиком, то можно либо отказать в установке ("ABORT"), либо обновить в базе UID и увеличить счетчик установок на новую машину на 1. Когда счетчик дойдет до 3, то все, это будет последняя установка.

Я не знаю как это все должно выглядеть на сервере, но получается некий массив:

  • Имя пользователя (не обязательно)
  • E-mail (не обязательно)
  • Серийный номер
  • UID
  • Счетчик установок на новый компьютер с данным серийным номером

Получается, что купив программу, пользователь по жизни будет привязан к одному серийнику с возможностью 3 раза установить программу на новый компьютер (3 раза может быть изменен его UID).

Что делать, если юзер потерял серийный номер? По имени и e-mail всегда можно восстановить серийник.

Да, конечно, из этого вытекает, что пользователь может 3 раза установить программу на разные компьютеры, но тем самым он исчерпает лимит установок и на двух первых компьютерах программа будет работать до первой переустановки. Вообщем-то приемлемо.

Как-то так.

:)
« Последнее редактирование: Август 17, 2010, 04:39:40 от Yashied »

Русское сообщество AutoIt

Re: Привязка скрипта к одному компьютеру (железу)
« Ответ #37 Отправлен: Август 17, 2010, 04:30:53 »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7805
  • Репутация: 2279
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Это всё хорошо, но вы забываете что любопытный юзер (и “знаток” AutoIt'а) сможет декомпилировать программу, и устранить все эти проверки. Или я плохо читал тему, или...


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Оффлайн Bloodrinker [?]

  • Новичок
  • *
  • Сообщений: 228
  • Репутация: 19
  • Пол: Мужской
  • <Блуждающий...>
    • Награды
Ну это само собой) Взять любого знатока Assembler'a и он точно также вскроет любую программу и выкинет из нее лишнее :whistle:

Оффлайн Kalisnik [?]

  • Продвинутый
  • ***
  • Сообщений: 293
  • Репутация: 63
  • Пол: Мужской
  • Эволюция
    • Награды
Собственно, зачем генерировать отдельный GUID при покупке? Его ведь и вправду можно потерять. По моему мнению, лучше изначально вшить серийный номер в саму программу и распространять в таком виде - тогда уже ни что ни куда не потеряется точно.
Мне дело так представляется:
1. Программа распространяется с вшитым в нее серийником - сложность серийного номера значения не имеет, поскольку его основная функция будет заключаться в навигации по базе данных сервера и поиске прикрепленного к этому серийнику ID оборудования пользователя. Самим же "паспортом" пользователя будет являеться ID оборудования. Т.е. серийным номером  вполне может быть какой-либо порядковый номер. Важным моментом является то, что необходимо собрать три ID номера оборудования пользователя. Например: жесткий диск, материнская плата и видеокарта.
2. При первом запуске (установке) программа собирает ID с указанных устройств и ищет ключ в реестре. Если его не находит, ищет Интернет-соединение и отсылает свой серийный номер вместе с собранными ID оборудования на сервер. Там происходит прикрепление серийника к ID и генерация ключа на основе этих же полученных ID оборудования пользователя. После чего этот ключ высылается пользователю.
3. Полученный ключ записывается в реестр и проводится его валидация по ID номерам оборудования пользователя (на основе того же алгоритма, по которому этот ключ был сгенерирован на сервере). В дальнейшем эта процедура валидации ключа будет происходить каждый раз при запуске программы.
4. В случае замены одного из устройств, с которого считывается ID, ключ записанный в реестре не проходит проверку. Тогда, как и во втором пункте, программа ищет интернет-соединение и вновь вместе со своим серийником отсылает собранные три ID номера оборудования пользователя на сервер. Там происходит сверка ID. В случае не совпадения одного из трех высланных ID, но совпадении двух других хранящихся на сервере, несовпадающий ID перезаписывается на новый. Таким образом, пользователь может делать абгрейд оборудования без потери лицензии. Единственный минус - за раз не возможно абгрейдить более одного устройства. Но зато, количество абгрейдов не ограниченно.
Так почему количество собранных у пользователя ID должно ровняться трем? Потому что количество ID должно быть более одного и не должно быть четным, а допустимое количиство заменяемых устройств не более одного за раз. Да бы два "друга" не могли по братски поделиться пополам оборудованием и перезаписывать базу данных сервера по очереди, каждый со своего компьютера - таким образом, они смогли бы по очереди использовать одну программу на двух разных ПК. Это полностью исключается при 3-х ID и разрешенной разовой замене не более одного устройства.
 Ну все остальное думаю уже понятно и уже не раз описывалось  в предыдущих постах.   :)
« Последнее редактирование: Август 17, 2010, 13:57:59 от Kalisnik »

Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 3814
  • Репутация: 950
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Yashied  [?]
Цитировать
Это уже становится интересно. Хорошо бы сделать какой-нибудь тестовый сервер для проверки этой теории.

Всё связанное с веб я тестирую на локальной машине, с установленным программным обеспечением (Posadis (dns server), Abyss X2 (web Server), MySQL, PHP5 и т.д.)
То есть я смогу у себя смоделировать, а остальные коллеги как же?!
Для того чтобы каждый пощупал теорию в деле, нужен хостинг с PHP, MySQL, и доступ к нему по FTP, чтобы загрузить скрипт регистрации.
Можно конечно и на Autoit`е написать сервер, но как к нему прикрутить PHP я не задумывался, да и думаю, овчинка выделки не стоит.

В вкратце это выглядит так:
Запустили программу.
Выполняется соединение с сервером Send Header.
Ответ от сервера 200 OK
Передаём данные посредством POST.
На стороне сервера скрипт разбирает переменную $_POST
Заносим все полученные данные в БД
Формируем ключ и высылаем его на почту.

Как вариант можно использовать RSA (криптографический алгоритм с открытым ключом). Вот тут в общих чертах всё доходчиво расписано! Хотя материала по RSA в интернете достаточно (если углубляться)!

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5379

  • Автор темы
  • Репутация: 2693
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Да, выходит не поиграться с этим. Ну, да ладно. Буду свои программы защищать так:

Код: AutoIt [Выделить]
#OnAutoItStartRegister "Validate"

; Основной код

Func Validate()
    MsgBox(16, 'Ошибка', 'Вы не можете пользоваться этой программой.')
    Exit
EndFunc   ;==>Validate


:)

Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 3814
  • Репутация: 950
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Yashied  [?]
Цитировать
Да, выходит не поиграться с этим. Ну, да ладно.
Ну почему же! "Орешек знаний тверд! Но все же мы не привыкли отступать..."  ;D
Может попробовать Autoit + SQLite? А потом в случае удачи экспортировать на нормальный хостинг с MySQL

Оффлайн Bloodrinker [?]

  • Новичок
  • *
  • Сообщений: 228
  • Репутация: 19
  • Пол: Мужской
  • <Блуждающий...>
    • Награды
Говорите хостинг нужен... я могу предоставить) Все есть. Дам адрес, а также лог и пасс, но не всем подряд! С удовольствием угощу сие чудом без вопросов Yashied'а и Garrett'а (нужно только в дичку написать, если хотите :-[) Я сам не пользуюсь им практически. Раньше использовал пдя теста своих прибамбасов и разных задумок, сейчас лежит без дела. Есть PHP, 50 баз данных MySQ, FTP, Vistapanel, PhpMyAdmin и прочие прибамбасы). 5500 Мб дисковое пр-во, 200 Gb траффик, max 50 доменов(думаю хватит :laugh:) Кстати, домен можно зарегать прямо в панели в ненсколько кликов, будет что-то вроде mywebsite.22web.net (регайте хоть сотню :blink: Правда они некрасивые и длинные будут, а нам то что, это не мешает :P лишь бы был) Так что прошу)
« Последнее редактирование: Август 17, 2010, 21:01:48 от Bloodrinker »

Русское сообщество AutoIt

Re: Привязка скрипта к одному компьютеру (железу)
« Ответ #44 Отправлен: Август 17, 2010, 20:50:57 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
52 Ответов
20921 Просмотров
Последний ответ Май 24, 2010, 19:06:31
от Greens
5 Ответов
8101 Просмотров
Последний ответ Сентябрь 16, 2012, 23:24:05
от shift72
21 Ответов
15483 Просмотров
Последний ответ Июнь 28, 2011, 11:33:24
от Centurion
6 Ответов
4326 Просмотров
Последний ответ Август 27, 2011, 14:49:30
от Kaster
0 Ответов
2442 Просмотров
Последний ответ Август 27, 2011, 11:53:08
от Kaster
9 Ответов
5547 Просмотров
Последний ответ Ноябрь 05, 2011, 19:32:17
от ArtInt
5 Ответов
3500 Просмотров
Последний ответ Февраль 03, 2015, 16:13:48
от rivega
12 Ответов
5294 Просмотров
Последний ответ Май 10, 2013, 13:41:12
от CreatoR
5 Ответов
1402 Просмотров
Последний ответ Август 10, 2015, 08:03:56
от Александр_
2 Ответов
928 Просмотров
Последний ответ Февраль 04, 2017, 02:44:54
от reset86