Как привязать программу к компьютеру
Как привязать программку к компу? Короче у меня программа типо платная и нужно к ней покупать ключ. Но ведь ключом(одним) можно активировать прогу хоть с 10000 компов. Что я придумал:
Вариант 1:
Создаю базу данных из 2 колонн: id и Key. В первой номер, во второй ключ соответственно. Точно знаю, как подключиться к базе данных(username,data source,password). Далее при активации мы подключаемся к БД и проверяем, есть ли там уже такой ключ. Если есть - отказ, иначе занести данный ключ активации в БД и активировать программку.
Ну и понятно, если пользователь вводит ключ второй раз, то. Ошибка. Ну так вот, в итоге я сталкиваюсь с проблемой: размещаю базу данных на ftp сервере, а к нему ведь тоже нужен логин и пароль. Подскажите, как подключиться к ftp серверу и там уже в БД заходить. Ну или же подскажите другой вариант размещения БД(бесплатный).
Вариант 2:
Создается .txt файл, размещается на хостинге(файлообменнике). При запуске программы(каждом) идет загрузка этого файла в %apppdata%. И при попытке активировать в этом файлике ищется строка, равная ключу. Если такова имеется - отказ, иначе. Ошибка. Но! Я снова сталкиваюсь с проблемой: как мне обновить этот файл на хостинге при успешной активации?
------------------------
Программисты! Помогите мне пожалуйста и ,если помогаете, то расскажите пожалуйста подробно.
Как сделать привязку программы к железу Delphi с проверкой через БД?
Как сделать привязку программы к железу Delphi с проверкой через БД? То есть. При запуске.
Сделать привязку программы к тренду
Здравствуйте! Нужно помочь правильно привязать выходной и входной аргумент программы2 и экрана.
Как сделать привязку
Добрый день, помогите пожалуйста сделать привязку программы к железу. Допустим если софт привязан к.
Как сделать привязку?
У меня есть ListBox я привязал его к элементам списка DataContext в моем случае класс LogicalBaseVM.
Кто же в платных проектах чужие сайты использует.
А если с этим сайтом что-то случится?
Ну скажем захотят этот файлообменник попросту закрыть. И что?
YProgramm, Что именно у тебя не получается? Получить номер материнки, подключиться к бд?
Решение
1. Создаем БД ID | Key | ZelezYAka;
2. Создаем файлик php, размещаем на хостинге;
3. Обращаемся к этому файлику (через POST) при активации программы и при проверке активации.
Получение железяк Вам показали, POST запросы элементарны. Про работу с БД при помощи php масса информации.
3. Обращаемся к этому файлику (через POST) при активации программы и при проверке активации.
Получение железяк Вам показали, POST запросы элементарны. Про работу с БД при помощи php масса информации.
1. Взломают.
2. Ты права защитил?
3. Не имеешь права писать на бесплатной версии, платные программы и их продавать, запрещено политикой Microsoft! Можешь получить статус разработчика, но там есть и свои минусы.
Одна и та же копия Visual Studio может быть совершенно лицензионной, если используется, к примеру для не коммерческого проекта, и стать "пиратской", если на ней будет компилироваться проект коммерческий.
(С) Microsoft! Support!
2. Ты права защитил?
3. Не имеешь права писать на бесплатной версии, платные программы и их продавать, запрещено политикой Microsoft! Можешь получить статус разработчика, но там есть и свои минусы.
Если исключить второе, третье не возымеет действия.
Кто запрещает, скажем, получать деньги от "друзей" и присылать им свои "бесплатные" программы?
AeroWhite, Хм. Это вопросы к юристам майкрософта! В любом случае ты нарушишь права.
Извольте купить студию за 1000 енотов и быть счастливым!
Достаточно спорный вопрос, без бумажек даже юристы Microsoft'а ничего предъявить не смогут.
Нет факта продажи и всё тут.
Какой сервер? Мой сайт с php скриптами, который что-то хранит, что-то проверяет?
Это мой домен, мой хостинг(оформлены на мои паспортные данные), я имею право хранить там что угодно, не противоречащие законодательству РФ.
Не имеешь права писать на бесплатной версии, платные программы и их продавать, запрещено политикой Microsoft!
Цитату из лиц. соглашения в студию.
Так это касается только приложений Магазина?
Не слышал ни о каком статусе разработчика, касаемо, скажем, Winforms/WPF.
Одна и та же копия Visual Studio может быть совершенно лицензионной, если используется, к примеру для не коммерческого проекта, и стать "пиратской", если на ней будет компилироваться проект коммерческий.
(С) Microsoft! Support!
Это ни о чём не говорит.
Тем более, автор данного высказывания, возможно, и русского-то не знает с его
Водяной Змей,
УВАЖАЕМЫЙ, ТЫ КОГДА СТАВИШЬ VISUAL STUDIO, БУДЬ ЛЮБЕЗЕН УДОСУЖИТЬСЯ ПРОЧИТАТЬ ТО, НА ЧТО ТЫ СОГЛАШАЕШЬСЯ, ВОТ ТЕБЕ ВЫПИСКА ОТТУДА.
Все редакции Visual Studio делятся на две группы: клиентские (Ultimate, Premium, Professional, Test Professional) и серверные (Team Foundation Server и Lab Management). Они могут лицензироваться по программе корпоративного лицензирования или по модели Retail Software License Terms (лицензионное соглашение на использование приобретённого в розницу программного обеспечения). Клиентские версии Visual Studio могут быть лицензированы по четырём программам корпоративного лицензирования:
Open Value — поставляются только с подпиской MSDN. Программное обеспечение, поставляемое с подпиской MSDN, лицензируется только на пользователя. При этом любой пользователь, работающий с ПО, установленным другим пользователем по подписке MSDN, сам обязан иметь эту подписку. ПО, полученное по подписке MSDN, может использоваться только в целях проектирования, разработки, тестирования и демонстрации.
Может использоваться только в целях проектирования, разработки, тестирования и демонстрации - сюда внимание обрати! Половина или больщая часть форума сидит на версии MSDN, она полная и не отличается от корпоративной ни чем, все компоненты доступны и прочие, только 1 МИНУС МЫ НЕ МОЖЕМ ПРОДАВАТЬ ПРОГРАММЫ НАПИСАННЫЕ НА ТАКОЙ ВЕРСИИ! ЧТО ЕЩЕ ТЕБЕ НЕ ПОНЯТНО?
Для производственного применения требуются другие лицении, например, клиентские лицензии доступа (CAL).
Open License — могут поставляться как с подпиской, так и без.
Select — как и Open License.
Enterprise Agreement — только с подпиской MSDN.
«Исключенная лицензия» — это любая лицензия, согласно которой использование, изменение и/или распространение программного обеспечения, в отношении которого действует исключенная лицензия, возможны только в случае, если это программное обеспечение или другое программное обеспечение, используемое и/или распространяемое вместе с ним, раскрывается или распространяется в исходных кодах, предоставляется по лицензии для создания производных продуктов или может распространяться далее на безвозмездной основе.
Мы на работе покупали корпоративную версию, для разработки и продажи ПО или передачи его третьим лицам без получения вознаграждения. Цена 1 версии стоит 1200$ США!
Ты создаешь сервер активации, и передаешь программу 3 лицам! Прочитай последнюю часть, вот распространяй в исходных кодах и слово тебе не скажут! Или распространяй бесплатно, без активаций, откуда известно может ты все же деньги берешь!?
Данную статью я представляю вниманию новичков для обеспечения защиты своего софта. Защита реализуется путем привязки к железу компа + онлайн проверка.
Наша защита будет состоять из нескольких частей:
- Генератор серийного номера по системным характеристикам.
- Генератор ключа авторизации по серийнику
- Защищаемая программа
Итак… с структурой мы разобрались, теперь нужно определиться к каким параметрам мы будем осуществлять привязку.
Мы сделаем это через WIN Api функции:
- GetUserName — Имя текущего пользователя.
- GetComputerName — Имя компутора.
- GetVolumeInformation — Получение информации о носителе.
- GlobalMemoryStatus — Информация о используемой системой памяти.
function UserName: string;
var
u: pchar;
i: dword;
begin
i := 1024;
u := StrAlloc(Succ(i));
if GetUserName(u, i) then Result := StrPas(u) else Result := '?';
end;
function ComputerName: string;
var
buffer: array[0..255] of char;
size: dword;
begin
size := 256;
if GetComputerName(buffer, size) then
Result := buffer
else
Result := ''
end;
function GetHard: String;
var
VolumeName, FileSystemName: array [0..MAX_PATH-1] of Char;
VolumeSerialNo: DWord;
MaxComponentLength,FileSystemFlags: Cardinal;
GetVolumeInformation('C:\',VolumeName,MAX_PATH,@VolumeSerialNo,
MaxComponentLength,FileSystemFlags, FileSystemName,MAX_PATH);
Result := IntToHex(VolumeSerialNo,8);
function GetMem: String;
var
MyMem: TMemoryStatus;
MyMem.dwLength:=SizeOf(MyMem);
GlobalMemoryStatus(MyMem);
with MyMem do begin
Result:= IntToStr(dwTotalPhys);
end;
end;
Итак, мы получили всю интересующую нас информацию. Теперь мы склеим эти данные в hex строку, что бы конечный пользователь не знал, какие параметры мы используем.
Берем функцию преобразования в 16ричный вид.
function StringToHex(str1,Separator:String):String;
var
buf:String;
i:Integer;
begin
buf:='';
for i:=1 to Length(str1) do begin
buf:=buf+IntToHex(Byte(str1[i]),2)+Separator;
end;
Result:=buf;
end;
Склеим все параметры —
function getSerial:string;
begin
Result := StringToHex((UserName + ComputerName + GetHard + GetMem));
end;
Вывод полученной строки в TEdit
procedure TForm2.Button1Click(Sender: TObject);
begin
Edit1.Text := getSerial;
end;
Мои поздравления, готов модуль получения serial кода.
Генератор регистрационного ключа
Полученый серийник надо шифрануть, что бы жизнь медом не казалась. Используйте любые методы, я приведу пример MD5.
функция шифрации.
function getKey(Serial: string):string;
begin
Result := MD5DigestToStr(MD5String(Serial+'123'));
Теперь кидаем на форму два Tedit и кнопку.
на онклик ставим
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text := getKey(Edit1.Text); / в первый Edit вставляем серийник, во втором будет зашифрованый вариант(очевидно)
end;
Пишем основную программу.
1) Кидаем все функции сбора инфы о компе и генерации серийника из первого модуля.
2) Кидаем функцию шифрации серийника из генератора рег ключа.
Приступим к регистрации программы и онлайн привязки. Кидаем Tedit(для ввода рег ключа) + 2 кнопки
(1 — проверка на валидность рег ключа 2 — коннект к серверу и проверка на наличия записи там)
procedure TForm2.Button1Click(Sender: TObject);
begin
if Edit1.Text = getKey(GetSerial) then ShowMessage('RegOk') else ShowMessage('NoFuckinWay');
end;
Будут вопросы — пишите, но я тут разжевал все до процедур онклика.
Всем удачи в начинаниях.
p.s. Напоминаю, что статья для новичков и является пищей для размышления.
Делаю приложение под windows. Пишу клиент на electron + angular. Мне нужно реализовать привязку программы к компьютеру так, чтобы иметь возможность посмотреть ключ в angular. В моей задумке я должен сверять этот ключ с сохранённым на сервер, потому он должен быть статичным. MAC-адрес не подходит. В своей другой реализации я обнаружил, что он меняется при переключении Wifi и Ethernet
До того, как портить жизнь лояльным пользователям привязками к железу (которые нелояльные все равно обойдут), рассмотрите все возможности просто генерировать UUID при установке приложения и не делать голову ни себе, ни людям.
Программа по подписке работает, это коммерческое решение. UUID постоянно меняется, мне нужно либо хранить его и на клиенте и на сервере, либо брать какой-нибудь статичный идентификатор/номер в системе, к примеру, жёсткого диска.. Но как его получить через angular? или хотя бы через nodejs, который есть в electron. ищу информацию..
Даже если вы ухитритесь из электрона дернуть метод WinAPI по определению серийника системного диска - вам потом разгребать "а как мне перенести программу, я опять переустанавливаю винду. " (при переустановке диск форматируется и серийник тома меняется).
Не говоря уже про предложенные варианты цепляться к видюхе, которая вообще может смениться в любой момент.
Логично что если вы не можете привязать что-то к железу пользователя, есть смысл привязать свое железо к машине пользователя. Если это коммерческое решение - лучший вариант для защиты - физический ключ - донгл. Это ебатория и гемор для клиента, удорожание для вас (ну или для клиента тоже), но дает четкую связку с железом, как вы и хотели. То есть одновременно работать сможет лишь один компьютер с 1 донглом.
Денис Щербина, если у вас постоянная связь с юзером через ваш сайт - на хрена вам вообще привязывать к чему-то клиент? Выдайте юзеру токен и формируйте ему отпечаток, например, из . Блокируя их слишком частую смену.
Здравствуйте! Изучаю с++ builder, и возникла идея попробовать сделать привязку программы к одному компьютеру. Думал сделать на базе клиент-сервера, чтобы клиент при каждом запуске соединялся с сервером и передавал данные, какой-нибудь уникальный код, например серийный номер какого-нибудь устройства. При первом запуске одной копии клиента она регистрируется на сервере и в случае, если ее же запустят на другом компьютере, она не будет работать. Посоветуйте как это можно реализовать. С клиент-сервером более менее разобрался, а вот как и какие уникальные номера взять я не знаю. Надеюсь на Вашу помощь!
Привязать программу к компьютеру
Как сделать чтобы программа работала только на определённом компьютере ?
Как сделать проверку лицензии своего продукта и запретить использование без лицензии
Доброго времени суток. К примеру, у меня есть скрипт, который я хочу распространять платно и хочу.
Серийный номер железа или как ещё привязать к компьютеру?
При помощи VB6 как сделать привязку программы? По SN материнки, процессора, жёсткого диска, сетевой.
Сделать программу наподобие paint'a
Возникла задача слепить программку типа пэинта. package newpa; import java.awt.*; import.
Запомни одну истину - каждый раз подключаться к серверу и верифицироваться не очень хорошо.
Я бы фиг поставил такую прогу. Но дело твое. Используй уникальные номера HDD.
Запомни одну истину - каждый раз подключаться к серверу и верифицироваться не очень хорошо.
Я бы фиг поставил такую прогу. Но дело твое. Используй уникальные номера HDD.
Запомни одну истину - каждый раз подключаться к серверу и верифицироваться не очень хорошо.
Я бы фиг поставил такую прогу. Но дело твое. Используй уникальные номера HDD.
Ага можно подумать у тебя не стоит FlashPlayer, Photoshop, ICQ и прочие программы.
Добавлено через 1 минуту
И что если сеть упадет прога не будет работать ?
Привяжи к железу, если так надо.
Но могу сказать одно, если ты не знаешь еще как это сделать, то это нафиг тебе не надо .
FlashPlayer бесплатный, ICQ удалил, руки не доходят восстановить, а Photoshop замкнута "виртуальным" хостом (только не звони в Adobe, хорошо?)
И мало программ, который каждый раз подключаются к серверу, чтобы узнать состояние лицензии.
Очень мало.
Добавлено через 48 секунд
Решение
Ну открою секрет на защите они с экономили - достаточно подменить файл после проверки лицензии
Суть в том что через интернет удобнее контролировать.
Вот только не могу понять нафига начинающему привязывать быдлокод свои программы понадобилось ?
А ты можешь подсказать каким конкретно методом это сделать? Или ссылочку дать где почитать об этом можно?
Я искал по этой теме информацию, но так ничего толкового не нашел, если есть возможность, дай, пожалуйста, ссылку, где затрагивается конкретно привязка.
Решение
Хочу сделать что-то наподобие Агарио
Скажите как сделать так чтобы когда шар (персонаж) дотрагиваался до точки (кружка) то персонажу.
С помощью какого элемента можно сделать что-то наподобие чека?
С помощью какого элемента можно сделать что-то наподобие чека? Чтобы выводилось окно, которое.
Нужно привязать файл к компьютеру!
Добрый вечер! Помогите пожалуйста решить такую проблему. У меня есть ПК. На нём есть 2 важных.
Имеется скрипт на Python, нужно как-то привязывать его к каждому компьютеру + код активации.
Как это можно реализовать?
- Вопрос задан более трёх лет назад
- 4222 просмотра
Оценить 4 комментария
- Скрипт можно перегнать в exe файл. С помощью py2exe и ему подобному.
В качестве уникального ID можно брать MAC-адрес.
>>> import uuid
>>> mac_addr = hex(uuid.getnode()).replace('0x', '')
>>> print(mac_addr)
6817293b11e5
А ключом активации будет засунутый в md5 этот самый MAC-адресс.
>>> import hashlib
>>> h = hashlib.md5(mac_addr.encode('utf-8'))
>>> key_activation = h.hexdigest()
>>> print(key_activation)
cf8d6b2ecb518e72f6fab0d9fba290b3
Ну, можно соль добавить для параноии.
Из exe - декомпилируется.
exe-файл содержит интерпретатор Питона (который сложно декомпилировать, но его и не нужно декомпилировать для взлома) + те же исходники/байт-код.
laxikodeje: Любую программу крэкают или пишут к ней кей-гены, вне зависимости от языка, на котором она написана. Было бы желание.
Если у человека уровень квалификации позволяет возится с бинарниками, то он и скрипт на питоне сможет написать. И вряд ли его что-то остановит. А для обычных пользователей это достаточная преграда.
И нет смысла особо заморачиваться.
pcdesign:
есть технологии и Python относится к их числу, в том числе и ввиде exe-файла - где взлом на порядки проще.
Если у человека уровень квалификации позволяет возится с бинарниками, то он и скрипт на питоне сможет написать. И вряд ли его что-то остановит. А для обычных пользователей это достаточная преграда.
И нет смысла особо заморачиваться.
Нет или есть смысл - зависит не от квалификации нежелающего/желающего возиться с бинарником.
А от стоимости и распространенности защищенного продукта.
Ломать чужую или писать свою систему - совсем не одно и то же.
Тут дело в менталитете (что тебе интереснее) и в объеме работ (написать сложную систему долго, нужно вникать в предметную область, беседовать с людьми, в то время как для взлома ничем таким заниматься не нужно, сиди себе с байтиками играйся).
С точки зрения заказчика - да. Стоимость взлома против стоимости написания заново.
Однако, если граница проходит хотя бы по 30-50 тыс. рублям (а может хацкер и за 15 тыс. согласится) - взломать уже дешевле.
В том время как 30-50 тыс. рублей с точки зрения разработки - это такая маааалюсенькая не очень сложная в разработке системка.
Для очень распространенных систем - и того проще. Тут кто-то даже ради спортивного интереса взломает, а ты бесплатно (ну не совсем бесплатно, крякер подсадит тебе удаленно управляемого бота, это будет твоя плата, будешь частью бот-сети для DDoS-атак) задействуешь взломаннную систему.
А написать один несложный скрипт - естественно проще, чем его взламывать.
Но к целым системам это не относится.
Читайте также: