Как можно сделать привязку программы по железу?
Попробую расписать как я это вижу.
//1 Выдать пользователю ключ "wfwe-fewf-ew3" который сохранится после ввода в блокнот в папке с программой (или где-то в памяти программы)
//2 Введя ключ программа обращается на сервер (гугл таблицу или по ftp или на сайте) и добавляет код железа рядом с ключом "wfwe-fewf-ew3"
//3 Программа перезапускается
//4 При запуске программы второй раз она проверяет блокнот и копирует от туда ключ и ищет его на сервере, найдя сверяет код железа и если он совпадает то запускается, если он там другой то не запустится.
Таким образом человек не сможет запустить программу на другом компьютере.
Но как в коде реализовать пока слабо представляю. Может у кого есть готовые решения или более простая идея. Да и вообще к чему из железа можно привязку сделать и как получить его данные?
1. Martin - 29 Октября, 2022 - 13:04:10 - перейти к сообщению
2. Martin - 29 Октября, 2022 - 17:36:04 - перейти к сообщению
C помощью командной строки и запроса ipconfig /all я получил физический адрес ПК, вроде как он не меняется
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Как это значение через кибор получить? Без распознавания текста?
(Добавление)
Пробую достать физический адрес таким способом но получаю не читаемый текст, как исправить?
(Добавление)
Разобрался с кодировкой
так находит что нужно, помогите регулярное выражение пожалуйста сделать с ними совсем беда, нужно скопировать код после в строке "Физический адрес"
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Как это значение через кибор получить? Без распознавания текста?
(Добавление)
Пробую достать физический адрес таким способом но получаю не читаемый текст, как исправить?
CODE:
if (createpipeprocess("C:\Windows\System32\cmd.exe -i"))
{
sendpipe("chcp 1251^n");//Устанавливаем кодировку windows 1251 для русс шрифта
sendpipe("ipconfig /all^n");//Отправляем команду dir
waitpipe();//Ждем пока отработает и появятся данные
sleep(500);//для надежности
int C;
string S;
C=getpipe(#S);//Читаем
messagebox (S);
closepipeprocess();//Завершим процесс и закрываем канал
}
{
sendpipe("chcp 1251^n");//Устанавливаем кодировку windows 1251 для русс шрифта
sendpipe("ipconfig /all^n");//Отправляем команду dir
waitpipe();//Ждем пока отработает и появятся данные
sleep(500);//для надежности
int C;
string S;
C=getpipe(#S);//Читаем
messagebox (S);
closepipeprocess();//Завершим процесс и закрываем канал
}
(Добавление)
Разобрался с кодировкой
CODE:
if (createpipeprocess("C:\Windows\System32\cmd.exe -i"))
{
//sendpipe("chcp 1251^n");//Устанавливаем кодировку windows 1251 для русс шрифта
sendpipe("ipconfig /all^n");//Отправляем команду dir
waitpipe();//Ждем пока отработает и появятся данные
sleep(500);//для надежности
int C;
string S;
C=getpipe(#S);//Читаем
S=d866tow1251 (S);//перекодирует текст из DOS 866 в WINDOWS 1251
messagebox (S);
closepipeprocess();//Завершим процесс и закрываем канал
}
{
//sendpipe("chcp 1251^n");//Устанавливаем кодировку windows 1251 для русс шрифта
sendpipe("ipconfig /all^n");//Отправляем команду dir
waitpipe();//Ждем пока отработает и появятся данные
sleep(500);//для надежности
int C;
string S;
C=getpipe(#S);//Читаем
S=d866tow1251 (S);//перекодирует текст из DOS 866 в WINDOWS 1251
messagebox (S);
closepipeprocess();//Завершим процесс и закрываем канал
}
так находит что нужно, помогите регулярное выражение пожалуйста сделать с ними совсем беда, нужно скопировать код после в строке "Физический адрес"
3. Zireael - 29 Октября, 2022 - 18:57:47 - перейти к сообщению
Цитата:
нужно скопировать код после в строке "Физический адрес"
CODE:
if (createpipeprocess("C:\Windows\System32\cmd.exe -i"))
{
//sendpipe("chcp 1251^n");//Устанавливаем кодировку windows 1251 для русс шрифта
sendpipe("ipconfig /all^n");//Отправляем команду dir
waitpipe();//Ждем пока отработает и появятся данные
sleep(500);//для надежности
int C;
string S;
C=getpipe(#S);//Читаем
S=d866tow1251 (S);//перекодирует текст из DOS 866 в WINDOWS 1251
//messagebox (S);
closepipeprocess();//Завершим процесс и закрываем канал
string result[99];
int count = regexsearch(99, #result[0], S, "(?<=Физический адрес).+?[A-Fa-f0-9\-]+");
for(int i=0; i<count; i++)
{
regexsearch(1, #result[i], result[i], "[A-Fa-f0-9\-]+");
messagebox(result[i]);
}
}
{
//sendpipe("chcp 1251^n");//Устанавливаем кодировку windows 1251 для русс шрифта
sendpipe("ipconfig /all^n");//Отправляем команду dir
waitpipe();//Ждем пока отработает и появятся данные
sleep(500);//для надежности
int C;
string S;
C=getpipe(#S);//Читаем
S=d866tow1251 (S);//перекодирует текст из DOS 866 в WINDOWS 1251
//messagebox (S);
closepipeprocess();//Завершим процесс и закрываем канал
string result[99];
int count = regexsearch(99, #result[0], S, "(?<=Физический адрес).+?[A-Fa-f0-9\-]+");
for(int i=0; i<count; i++)
{
regexsearch(1, #result[i], result[i], "[A-Fa-f0-9\-]+");
messagebox(result[i]);
}
}
4. Redear - 31 Октября, 2022 - 07:11:07 - перейти к сообщению
так если контроллеров много, то будет свой физ адрес на каждый контроллер. пока не пойму как это решает задачу определения конкретного пк
5. Martin - 31 Октября, 2022 - 09:52:53 - перейти к сообщению
Redear , Да какая разница сколько их там, просто первый берешь, физический адрес не меняется.
У меня тут ещё вопрос а можно в реестр данные вносить и от туда их считывать? Как это реализовать?
У меня тут ещё вопрос а можно в реестр данные вносить и от туда их считывать? Как это реализовать?
6. Ilya001 - 31 Октября, 2022 - 10:16:46 - перейти к сообщению
Martin пишет:
физический адрес не меняется
Он же MAC - адрес? Его можно менять, или я ошибаюсь?
7. Redear - 31 Октября, 2022 - 13:24:48 - перейти к сообщению
всмысле первый берешь, у тебя чел к примеру устанавливает на комп виртауальную машину вмваре воркстейшен, все первый физ адрес изменился.
8. Martin - 31 Октября, 2022 - 16:24:17 - перейти к сообщению
Ilya001 пишет:
Martin пишет:
физический адрес не меняется
Он же MAC - адрес? Его можно менять, или я ошибаюсь?
Можно если специально знаешь, что делаешь, а так если железо поменять.
Redear пишет:
всмысле первый берешь, у тебя чел к примеру устанавливает на комп виртауальную машину вмваре воркстейшен, все первый физ адрес изменился.
Видишь не всё учел, спасибо, тогда выбрать нужно конкретное устройство вроде как у всех должен быть Адаптер Ethernet Ethernet но я уже не уверен)) к чему то же делают привязку по железу. Сам пытаюсь разобраться, если есть идеи накидывайте)
9. Ilya001 - 31 Октября, 2022 - 17:02:04 - перейти к сообщению
Martin пишет:
если есть идеи накидывайте
Можно на серийный номер HDD/SSD привязать, там посложнее будет его менять, я не думаю что кто нибудь рискнёться на такое)) Также есть CPU, GPU, вариантов много.
10. Martin - 31 Октября, 2022 - 17:36:37 - перейти к сообщению
Ilya001 , как их получить?)
(Добавление)
Разобрался) регулярка конечно страдает и сразу серийные номера всех дисков, но думаю можно сразу к парочке привязку сделать
(Добавление)
О нет, смайлики код испортили) там где "Подмигивание" просто должна быть скобка )
(Добавление)
Разобрался) регулярка конечно страдает и сразу серийные номера всех дисков, но думаю можно сразу к парочке привязку сделать
Получить серийники дисков (Отобразить)
(Добавление)
О нет, смайлики код испортили) там где "Подмигивание" просто должна быть скобка )