Как получить ноутбук Serial в C

Привет! Я пытаюсь сделать функцию безопасности для моего C-проекта, чтобы, если кто-то ее украл, она стала бесполезной. Он работает следующим образом: основная функция запускается только в том случае, если сравнение серийного номера моего macbook с зашифрованным равно 1.

Проблема в том, что я не могу получить системную информацию в программе.

Когда я делаю:

int main ()
{ i=0;  

if (strcmp(system("system_profiler SPHardwareDataType | grep \"Serial Number\""), 
                  "Serial Number (system): W80314GJATP"));

{
 bla
 bla 
 bla
}

else {for(i=0;i<100;i++)
         {printf("Unauthorized Computer");
     }

 return 1;
}

Он выводит информацию только на стандартный вывод. Есть ли способ сделать это сравнение?


С уважением

4 ответа

Решение

system() не возвращает указатель на символ, он возвращает код выхода (int) из команды, которая была запущена. Вы могли бы использовать popen() запустить команду. popen() вернет FILE* что вы можете прочитать (это из программы stdout). Затем вы можете прочитать и проанализировать вывод программы соответствующим образом.

Не ответ на ваш вопрос, но имейте в виду, что эти приемы никогда не бывают безопасными.

Посмотрите, например, этот пост в Lifehacker (это о OS X, но это не имеет большого значения).

Если вы действительно хотите сделать его безопасным, используйте (например) серийный номер BIOS (или серийный номер жесткого диска) в качестве ключа для шифрования исполняемого файла. Напишите небольшую оболочку, которая читает те же данные, использует их для расшифровки исполняемого файла, а затем запускает результат. По крайней мере, без доступа к исходному оборудованию, это может быть довольно сложно обойти (в отличие от сравнения, которое вы делаете). OTOH, с доступом к оригинальному оборудованию, это тоже довольно легко сломать.

Система возвращает int, а не const char * того, что будет отображаться в командном прерывателе. Если вы хотите вывод программы, вам нужно получить стандартный вывод программы.


Взгляните на этот вопрос о том, как получить вывод из трубы.

Другие вопросы по тегам