如何用C语言获取笔记本电脑的串口

发布于 2024-11-02 10:57:46 字数 496 浏览 1 评论 0 原文

你好 我正在尝试为我的 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;
}

它只将信息打印到标准输出。 有没有办法进行这种比较?


此致

Hi
I'm trying to make a security feature for my C Project, so that if someone steals it, it becomes useless.
It works as following:
The main function only runs if the comparison of my macbook's Serial to an encrypted one is 1.

The Problem is that I cannot get the system info in the program.

When I do:

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

It only prints info to stdout.
Is there a way to do that comparison?


Best Regards

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

身边 2024-11-09 10:57:46

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

例如,请参阅 lifehacker 上的这篇文章(这是关于 OS X 的,但这并不重要)。

Not an answer to your question, but keep in mind that these tricks are never really secure.

See for example this post at lifehacker (this is about OS X, but it doesn't really matter).

稍尽春風 2024-11-09 10:57:46

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

system() does not return a char pointer, it returns the exit code (an int) from command that was run. You could use popen() to run a command. popen() will return a FILE* that you can read from (it is from the program's stdout). You can then read and parse the program output accordingly.

逆流 2024-11-09 10:57:46

系统返回一个 int,而不是命令中断器上显示的 const char *。如果您想要程序的输出,您将需要获取该程序的标准输出。


看看这个关于如何获取输出的问题从管道中。

system returns an int not a const char * of what would show up on the command interrupter. If you want the output of the program you will need to get that programs stdout.


Take a look at this question on how to get the output from a pipe.

迟月 2024-11-09 10:57:46

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

If you honestly want to make it secure, use (for example) a BIOS serial number (or hard disk serial number) as a key to encrypt the executable. Write a small wrapper that reads the same data, uses it to decrypt the executable, and then runs the result. At least without access to the original hardware, this can be fairly difficult to work around (unlike the comparison you're doing). OTOH, with access to the original hardware, this is pretty easy to break as well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文