Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Получаем CPU_ID + активация по мылу. CPU_ID и Мыло перевести скажем в цифры, сложить/умножить = сумма - она же ID. При запуске проверяется сумма. Если все нормально, то загружается программа.
А так если CPU_ID и Мыло не то, то сумма будет неверна. Если переписать на другой комп, то там будет CPU_ID другое ... ну и т.п. Тока вопрос - где хранить такое значение, да еще и каждый раз к нему при загрузке обращаться.
Так можно и самому запутаться , на данный момент пока ограничусь привязкой к МАКу , на данный момент мне ее достаточно
Quote (Jivchik)
2DEMBEL
Читал тут статейку: При активации снимается "след" с железа компьютера. Скажем 5 параметров. Биос, Мать, Хард, Сетевуха, Видюха ... и установлены проверки. Скажем если 2 из 5 совпадают, то работает прога, меньше нет. И установлен временной апгрейд снятия "следа", т.е. скажем вы хард поменяли, через какое-то время он станет родным для программы (т.е. понятно если комп сразу весь поменяли, то уж извините). Ну и естественно привязка по логину к серваку и обмен данными с ним.
Так Винда в оригинале и делает
Сообщение отредактировано Snow_Irbis - Сб, 23 Октября 2010, 23:30
ну почему бред, так и надо. как-то я делал такую штуку, когда автор рассылал ключи активации программы по мылу. база пользователей у него была просто на локалке в Excel. юзер присылал ему (неважно с какого адреса) сгенерированный в программе ID системы на основе CpuID, имени пользователя и адреса его почты куда прислать ключ. Автор на своей машине раскодировал ID, получал адрес почты, генерировал ключ активации и отправлял по полученному адресу. Основные моменты при этом: - Даже если придет запрос на активацию тем же ID, но с чужой машины, ответный ключ все равно отправится по зашитому в ID адресу почты. Да и в ключ заодно зашита проверки CpuID. Активировать ключом другую тачку не выйдет. При активации прога проверяет не только CpuID по ключу, но и просит ввести имя и адрес почты. Эти 3 параметра можно получить как из ID машины, так и из ключа активации. Так что случайные совпадения cpuid исключены. - Автор программы пробивал по базе соответствия имени пользователя/почты/ID системы, в случае реактивации программы или замены оборудования. Ключ всегда высылается на указанное юзером мыло при генерации ID системы.
Ну естественно, программа не была столь дорогостоящей, что требовало бы применения сервера активаций и баз online. Да и автор в данном вопросе предпочитал сам решать что ему делать.
DEMBEL, о пасибо. Значит пока на этом и остановлюсь. Только конечно мозг надо по напрягать, всё это по кодировать, да передать, да еще на сайте активировать ... эх.
Добавлено (23 Октябрь 2010, 23:53) --------------------------------------------- DEMBEL, тока получается, что ключ-то полюбэ где-то должен храниться на машине пользователя. Или если его хорошо шифрануть, то можно и в простом текстовом файлике - лицензия.txt ?
что ключ-то полюбэ где-то должен храниться на машине пользователя
да, просто при удачной активации (при этом может зашиться кол-во дней), в реестр пишется шифрованная строка. При старте прога расшифрует строку и понимает, активирована она или нет, можно запускаться или нет. Проверяются Cpuid, так что скопировать строку реестра на др. тачку не пойдет.
Quote (Jivchik)
то можно и в простом текстовом файлике - лицензия.txt ?
файлик удалить, реестр почистить, и прогу снова можно активировать. но это только актуально при ограниченном периоде лицензии. тут надо еще методы применять, читайте сеть...
Добавлено (24 Октябрь 2010, 00:06) ---------------------------------------------
Quote (Jivchik)
Только конечно мозг надо по напрягать, всё это по кодировать, да передать, да еще на сайте активировать ... эх.
а что там напрягать? простого математического алгоритма собственного изготовления по генерации/раскодирования ключа и данных достаточно. Как задавать вопросы
кстати если хотите делать триальный период по кол-ву запусков или кол-ву дней, советую сразу забыть эту затею. Любой триал легко сбрасывается, отслеживается софтом любая активность проги даже неопытным пользователем (куда что какие метки пишутся, реестр, файлы). Да и вы сами видите на примере известных программ как легко сбрасывается триал по его истечению. Так что лучше делайте урезанные демо-версии программ, а если делаете активацию, то насовсем. Тогда степеней свободы принятия однозначных решений алгоритмом защиты проги станет гораздо меньше, либо активировано либо нет, в завис-ти от этого разблокируйте доп. функционал проги в отличие от демо. В этом случае хотя бы ограничения зашиты в самой проге, а не лежат где-то в системе в виде триальной метки, которую легко обнаружить и удалить. Как задавать вопросы
а в чем вопрос собсно? 1. Если как сгенерировать ключ, то как я уже сказал, выдумывай собственный математический алгоритм. Переводи символы в числовое (dec/hex)-выражение и далее переставления/подмены/математика. Делай как придумаешь. Жаль нб не умеет возвращать код символа, в ммб есть такой оператор. Но это поправимо. Пример генерации (для ммб) ключа на основе строки (правда не совсем то, но логику и алгоритм демонстрирует) можно посмотреть тут.
2. Если вопрос как зашифровать/расшифровать строку, то см. функции Cipher в этом наборе. Пришла пожалуй пора его обновить, накопилось...
В принципе, можно только шифровать... Если не требуется какое-то структурированное представление данных, но и это условно.
Добавлено (24 Октябрь 2010, 11:21) --------------------------------------------- Сергей, ну да. Вот в этом и вопрос. Поэтому и спросил про кодирование.
ну вот, и ненадо никаких алгоритмов на НБ, есть и плагин по мд5 и вбс функция.... Можно сделать по такому принципу: 1-обрезаная версия(демо), ее распростронять 2-чел который захотел ее купить, отпраляет бланк, где присутствует эта строка 3-дома компилируешь полноценую и зашиваешь мд-строку в проект, и высылаешь после оплаты..
Добавлено (24 Октябрь 2010, 11:29) --------------------------------------------- а чтоб, чел потарапился с покупкой, можно при входе и выходе пускать месагу, что мол триальная и вообще на клик каждой кнопки тоже месага
Добавлено (24 Октябрь 2010, 11:29) --------------------------------------------- это ппц, как напрегает
про шифрование или генерацию ключа алгоритмом - чаще хочется оперировать структурированными данными типа A34G-D344-BN7N-VFT0-D01B а не шифрованным мусором типа jlggBsb1D8T+tjVC0sWY71ddjURTd=YwZYyNet+Kv+znlA17hNIQNf+MuW/ XRyhBUJszVitgFgex8IhPI8OG9XoWCNn0MecInBLsC1457xsV3= Как задавать вопросы
а что жевать, делай 1 программу обрезанную(работает например только одна функция), при загрузки ставишь вывод сообщения, при нажатии любой кнопки опять вывод сообщения, при закрытии программы тоже вывод мессаги Захотел купить, там должна быть форма отправки, он вводит например логин и мыло, отправляешь данные + строку-мд5 к себе на мыло. Дальше дело техники в полной версии делаешь проверку мд5-строки с той что прислали, и с тем что НБ получит сама....
а если данные CpuID+логин+мыло объеденить в одну строку и кодировать в мд5, а потом сверять эту строку?!
прежде чем метаться, нужно выстроить четкую логическую цепочку, какие есть стадии активации и выбирать методы исходя из них. Для проверки cpuid самой прогой это вариант. Она хранит в реестре хэш данных и каждый раз его вычисляет, читает сохраненный вариант из реестра и сравнивает. А например, если потребуется передать автору данные для генерации ключа активации, хэш ему не поможет, его же никак не раскодируешь обратно. Ну чтож, придется мне вытащить из загашников старые наработки... Одна из многих примерных схем активации может быть такова:
1. [Локально] Генерация ключа-идентификатора системы 1.1 Пользователь вводит личные данные (мыло, имя) 1.2 Программа читает CPUID (любой ид железа или метка из комбинации ид железок) 1.3 На основе данных генерируется ключ по обратимому алгоритму, либо просто шифруется. 1.4 Отправка данных автору на мыло/на сервер для регистрации и обработки
2. [Удаленно] Генерация ключа активации 2.1 Расшифровка полученных данных, регистрация пользователя в базе. 2.2 На основе полученных данных генерируется новый ключ (содержит как минимум данные о ид железа, метку что нужно разблокировать в проге и др. инфу). Отправляется по полученному из ключа адресу на мыло.
3. [Локально] Активация приложения (тут самое важное и сложное) 3.1 Ввод ключа активации 3.2 Программа раскодирует ключ, получает из него ид железа на котором ей разрешен запуск. 3.3 Читает ид железа из системы и сравнивает его с полученным из ключа. Если метки совпадут, значит ключ подлинный. Происходит запуск в активированном режиме. 3.4 Сохранение информации в реестре (файле лицензии). Конечно, высылать можно не только ключ в виде строки но и в виде шифрованного файла лицензии. 3.4.1 Генерация строки в которой будет записано, что программа активирована и метка железа (присланная с ключом). Использовать можно хэш, но лучше обратимый алгоритм шифрования т.к. может потребоваться получение инфы пришедшей с ключом, и ее надо сохранить. Сохраняем строку в реестр.
4. [Локально]: Процедура валидации при каждом запуске программы (здесь очень внимательно все делать, обрабатывать любые ошибки и исключения. Требуется получить надежный вывод.) 4.1 При старте программа читает строку из реестра (если она есть), расшифровывает ее если ей нужны оттуда сохраненные данные из ключа активации. Если сохранялся только хэш по метке железа, то читаем данные системы и снова его вычисляем. Сравниваем полученный хэш с хэшем из реестра, если совпало значит активировано. Тут я все же рекомендую не пользоваться данными ид железа в чистом виде, иначе любой сможет посчитать хэш ид собственного железа, записать его в реестр и все. Нужно генерировать какую-то метку, в т.ч. включать туда знак того что программа активирована. Преимущество метода - данные не хранятся в исходном виде, расшифровать хэш нельзя. Сравниваем не данные между собой, а их хэши. 4.2 Если сохранялся не хэш а шифрованная строка, то расшифровываем, получаем обратно метку железа и др. инфу (метку об активации, имя пользователя и пр.), вычисляем метку системного железа и сравниваем ее с меткой из реестра, если совпало и в наличии инфа что прога активирована, запускаемся в активированном режиме.
В любом случае, возможны многочисленные вариации. Наиболее сложные и ответственные 3,4 моменты, тут надо все продумать досконально.
Добавлено (24 Октябрь 2010, 12:13) ---------------------------------------------
Quote (Сергей)
дома компилируешь полноценую и зашиваешь мд-строку в проект, и высылаешь после оплаты..
не совсем удобен такой обмен, если вдруг прога весит под несколько десятков мб? тут лучше оперировать строками-ключами. Как задавать вопросы
не совсем удобен такой обмен, если вдруг прога весит под несколько десятков мб
и что, времена диалапов прошло надо избавлятся от стереотипа, можно и не саму прогу, а сделать стартер. Нб может открыть другой НБ-проект вместо себя с передачей всех переменых! Что не вариант?
Нб может открыть другой НБ-проект вместо себя с передачей всех переменых! Что не вариант?
немного подробнее, как вся процедура активации в целом может работать? я что-то не до конца втыкаю...
Добавлено (24 Октябрь 2010, 13:04) ---------------------------------------------
Quote (Jivchik)
теперь есть четкое понимание.
вот когда есть понимание что и как надо делать, тогда вы сможете составить собственный алгоритм активации исходя из ваших нужд и возможностей. Принципиальные моменты: - невозможность использовать левый ключ при активации, полученный для другой машины - невозможность расшифровки хранящихся вне программы данных об активации - невозможность валидации программы при подмене хранящихся вне программы данных об активации В каждом случае следует сверять метки по железу из ключа и из системы. Как задавать вопросы
ничего нигде не расшифровывается, просто генерируются хэши и ведутся их базы. Допустим почти все простые короткие цифровые пароли можно в них найти их хэши, я таким макаром часто расшифровывал пароли от вконтакта. А длинную строчку непонятного содержимого - бесполезно. Но если вам это не дает спокойно спать или нужен хэш короткой строки, то это легко обходится двойным, тройным хэшированием - md5(md5(пароль)) или модификацией строки md5(строка+мусор) или все вместе md5(md5(md5(строка+мусор))). Все эти базы на лоховские пароли, еще ни разу ничего реально нужного не расшифровал. Как задавать вопросы
ну вотспособ о котором я писал короче у юзера находится проект, это файл стартер(startDemo.pub) и файл проекта(app.pub) 1-Он решил купить прогу и есно в проекте(startDemo.pub) нажимает кнопку "Купить" - заполняет форму и отправляет письмо автору 2-Автор получает письмо с даными(mail.txt) и генерирует код своим генератором(avtor.pub) Один код вида UPS-ХХХХХ-ХХХХХ-ХХХХ-ХХ вкладывается в письмо, второй зашивается в проекте(startActiv.pub) все это отправляется письмом юзеру 3-Проверяем проект(вместо юзера) запускаем startActiv.pub вводим С\Н, программа активирована 4-запускаем еще раз для проверки startActiv.pub Предупреждаю, исходники не прилизаны, чисто показать принцип работы, остально доделайте сами Внимание, для теста надо скомпилировать проекты, иначе будет ошибка по именам итак: 0)компилируем app.pub 1)запускаем проект startDemo.pub, после отправки данных.... 2)открываем avtor.pub(его можно не компилировать) генерируем код 3)зашиваем полученый код в startActiv.pub в переменую (SetVar "[strSNApp]" "ХХХХХХХХХХХХХХХХ"), компилируем 4)запускаем startActiv.pub выбираем "Ввести С\Н" и вводим код(вида UPS-ХХХХХ-ХХХХХ-ХХХХ-ХХ) 5)можно еще раз запустить startActiv.pub программа сразу перейдет к активированной странице Возможно, можно и упростить...