Что нового

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

Kalisnik

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

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Yashied [?]
Это уже становится интересно. Хорошо бы сделать какой-нибудь тестовый сервер для проверки этой теории.

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

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

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

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Да, выходит не поиграться с этим. Ну, да ладно. Буду свои программы защищать так:

Код:
#OnAutoItStartRegister "Validate"

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

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


:smile:
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Yashied [?]
Да, выходит не поиграться с этим. Ну, да ладно.
Ну почему же! "Орешек знаний тверд! Но все же мы не привыкли отступать..." ;D
Может попробовать Autoit + SQLite? А потом в случае удачи экспортировать на нормальный хостинг с MySQL
 

Bloodrinker

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

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Bloodrinker
Хорошо, тогда начинаем потихоньку двигаться к заветной цели!
Я пока поэкспериментирую на локальной машине, как будет готова тестовая версия, напишу в ЛС.

Давайте определимся, что нам нужно передать на сервер и занести в базу:
1. UID машины
2. Mail пользователя
3. Name пользователя
4. ...?
Что ещё предлагайте?

Что мы хотим получить:
1. Генерируем ключ (base64_encode думаю, на первое время подойдёт)
2. Отправляем ключ на почту
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Garrett сказал(а):
Давайте определимся, что нам нужно передать на сервер и занести в базу...

1. UID машины
2. Mail пользователя
3. Name пользователя
4. Key, который отправили на почту
5. Count - счетчик установок, изначально выставляем на 3, затем будем уменьшать на 1 при каждой установки на новый компьютер.

Самое главное, UID изначально не определен (0).
 

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
Все верно. Нудно сделать счетчик установок (Как поиздевалась Microsoft, создав OEM версию Home Edition :wacko:smile:. С одной стороны это правильно, но вдруг у пользователя действительно неполадки пк? Ну это ладно, это вторичное. Я также думаю не стоит забывать по IP, а также набрать побольше инфы с железа пк, вдруг он создал образ харда и кинул на другой ПК?... Да и мало ли божет быть... Хотя я не знаю...
 

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
хотя да... ты прав.. ну как там продвигаются работы?

PS насчет хостинга - только что все проверил, от пыли протер :smile: Все работает. Если нужно - в ЛС
 

Waik

Знающий
Сообщения
60
Репутация
16
ООчень интересная тема.

Покупал много ПО разного у обычных программистов(не компании) дак в этом ПО как правило как правило:
1-Генерируется ID твоей машины.Ты даешь ключ автору он тебе ключ.
2- Вводишь ключ в программу и все ОК.
Софт в инет даже не всегда выходят а все хранять на твоём ПК.
Но это так к слову.

Еще нужно не только собирать ID разного железа а делать проверку.
Например собрали ID разных 5железок(проц,мать,хард,видео,сетевая)

И менять можно только 2железки.ТО-есть если заменили больше 2 деталей то считать пк новым и требуется новая привязка ПО.

То-же есть домен с MySQL .и.т.д ,полный доступ к нему не дам но кому надо могу выделить место под скрипты и БД.Я необязан так-что могу кому-то оказать.

P.s Garrett мы в тебя верим.
 

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
Вот недавно придумал ка это можно обойти. Я всмысле про ID железа. Всмысле можно ставить хоть на сотню ПК один и тотже софт с одной и тойже лицензией. Это очень легко. Но не скажу) Надо с Garrett связаться, сказать ему)
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Bloodrinker [?]
Вот недавно придумал ка это можно обойти.
Нет нечего невозможного ;D Если один создал, то второй может сломать, вопрос только в том, как долго он это будет делать ;D
Уверен я только в одном, что лучше, чем уже придумано вряд ли получится ;D
В процессе работы всплыли некоторые нюансы, идеи.
Решил добавить параметр RpogID - идентификационный номер самой программы, ведь у вас, их может быть много :smile:
Остановился на методе POST, для передачи данных.
Пока решаю вопрос проверки входящих данных (без этого никуда)
В общем, работа двигается потихоньку.

В тестовом скрипте key генерируется стандартными методами шифрования, ибо алгоритм у каждого свой полагаю должен быть, а иначе смысла не вижу!
 

HelpMe

Новичок
Сообщения
85
Репутация
3
А если сделать лицензию по использованию, т.е. задать придел использования N-раз? хлапот с абонентами убавиться явно... говорю как делопроизводитель :smile:
а можно проще сделать? давайте подумаем... Autoit же может считывать текстовый файл? представим 1 текстовй файл = 1 абонент...
если Autoit будет считывать код в текстовом файле который на сервере? код найден - програма работает... счеток запросов может показать активность абонента, добавится масса возможностей по их контролю... только вот проблемма, да и не одна 1. каждая програма должна быть индивидуальной, (с индивидуальным кодом) 2. Сбой сервера ))
хотя... для Вас может это и не проблемма ;) при решении этой задачи в любом случае пострадает или безопасность или удобство использования...

Пишу на албансокм - в автоит чайниг!
 

HelpMe

Новичок
Сообщения
85
Репутация
3
Еще нет никакой элементарной защиты???
 

cobra2029

Новичок
Сообщения
54
Репутация
0
тема умерла?


...а ведь была очень интересной )
 

Trans

Знающий
Сообщения
257
Репутация
6
Прочитал всю тему, но так и не нашел примеров защиты программ, может кто поделиться? :'(
 

defens

Знающий
Сообщения
89
Репутация
5
Как привязать к своему компьютеру точнее к оборудованию, чтоб пользователь если с копирует себе ее то пользоваться не сможет.
Без патчей, а сразу при компиляции она привязывался к моему компьютеру
 

ArtInt

Знающий
Сообщения
135
Репутация
18
defens, надо начале скрипта делать где-то так:

Код:
If @compiled and *условие* then
_InjectUniqueID()
Endif


Где *условие* - некая проверка, прошит ли скрипт
  • можно вшивать эту инфу в функции _InjectUniqueID() (вопросы к Yashied)
 
Верх