如何在C中获得笔记本电脑串口

时间:2011-04-20 22:56:28

标签: c licensing license-key

您好 我正在尝试为我的C项目制作一个安全功能,这样如果有人偷了它,它就变得毫无用处。 它的工作原理如下: 仅当我的macbook的Serial与加密的Serial的比较为1时,才运行main函数。

问题是我无法在程序中获取系统信息。

当我这样做时:

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;
}

它只向stdout输出信息。 有没有办法进行比较?


最好的问候

4 个答案:

答案 0 :(得分:2)

不是你问题的答案,但请记住,这些技巧从来都不是真正安全的。

参见例如this post at lifehacker(这与OS X有关,但并不重要)。

答案 1 :(得分:1)

system()不返回char指针,它从运行的命令返回退出代码(int)。您可以使用popen()来运行命令。 popen()将返回您可以阅读的FILE*(来自程序的stdout)。然后,您可以相应地读取和解析程序输出。

答案 2 :(得分:0)

系统返回一个int而不是const char *,它将显示在命令中断器上。如果你想要程序的输出,你需要得到stdout程序。


看看这个question如何从管道获取输出。

答案 3 :(得分:0)

如果您真的想要使其安全,请使用(例如)BIOS序列号(或硬盘序列号)作为加密可执行文件的密钥。编写一个小包装器,读取相同的数据,用它来解密可执行文件,然后运行结果。至少无法访问原始硬件,这可能相当难以解决(与您正在进行的比较不同)。 OTOH, 访问原始硬件,这也很容易破解。