Mac OS的机器ID?

时间:2009-06-26 17:51:38

标签: c++ macos

我需要为运行MacOS的计算机计算计算机ID ,但我不知道在哪里检索信息 - 比如HDD序列号等。主要要求对于我的特定应用程序,用户一定不能欺骗它。在你开始大笑之前,我知道这很遥远,但在至少,欺骗方法必须重新启动。

最好的解决方案是 C / C ++ 中的一个,但如果没有别的办法,我会选择Objective-C。最佳解决方案不需要root权限

有什么想法吗?感谢。

3 个答案:

答案 0 :(得分:3)

工具/ usr / sbin / system_profiler可以为您提供各种硬件组件的序列号列表。您可以考虑将这些值用作文本来生成md5哈希或类似的东西。

答案 1 :(得分:3)

Erik建议system_profiler(以及其基础但未记录的SystemProfiler.framework)是您最好的希望。您的基本要求是不可能的,任何没有硬件支持的解决方案都将很快被破解。但是您可以使用system_profiler和/或SystemProfiler.framework构建合理的混淆级别。

我不确定您的实际要求,但这些帖子可能有用:

我将在此重复我在第一篇文章中所说的内容:安全地确保只有您的客户可以与您的服务器通信是不可能的,期间,不可能的。如果这是您的基本要求,那么这不是一个可解决的问题。我将扩展它,说不可能构建你的程序,以便人们不能拿出你输入的任何支票,所以如果目标是许可,那也不是一个完全可解决的问题。上面的第二篇文章讨论了如何从业务而不是工程角度思考这个问题。

编辑:关于您要求重新启动的请求,请记住Mac OS X具有内核扩展。通过加载内核扩展,始终可以修改系统在运行时如何看到自己而无需重新启动。原则上,这将是一个Mac rootkit,从根本上说它不比Linux rootkit复杂。您需要仔细考虑攻击者是谁,但如果您的攻击者包含Mac内核黑客(这不是一个无关紧要的群组),那么即使重启要求也不合理。这并不是说你不能让大多数用户烦恼。一个相当称职的攻击者总能做到这一点。所有现代操作系统都是如此;关于Mac,这里没什么特别的。

答案 2 :(得分:1)

如何使用ifconfig获取连接到计算机的网卡的MAC ID?