【问题标题】:Machine ID for Mac OS?Mac OS 的机器 ID?
【发布时间】:2009-06-27 02:50:06
【问题描述】:

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

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

有什么想法吗?谢谢。

【问题讨论】:

标签: c++ macos


【解决方案1】:

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

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

我将在此重复我在第一篇文章中所说的话:不可能,暂时,不可能,安全地确保只有您的客户端可以与您的服务器通信。如果这是您的基本要求,那么这不是一个可解决的问题。我将通过说不可能构建您的程序以使人们无法取出您放入的任何检查来扩展这一点,因此,如果目标是许可,那也不是一个完全可以解决的问题。上面的第二篇文章讨论了如何从业务而非工程的角度考虑这个问题。

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

【讨论】:

  • 谢谢。你显然对这个问题非常了解。为了清楚起见,我不从事版权保护工作。客户是一个非常害怕欺诈的安全网站。您是否碰巧有关于 system_profiler 的更多信息,例如它的数据来自哪里(如果它直接轮询硬件等)?我用谷歌搜索“SystemProfiler.framework,但没有找到任何东西。
  • 我的回复太长了,不能到这里。我已经发布了对该主题的长篇介绍:robnapier.net/blog/understanding-systemprofiler-393
  • 另外,关于欺诈问题,您是否担心您的客户被欺骗,或者您是否担心您的客户是欺诈的原因?我怀疑是后一种情况。您解决该问题的方式是在服务器端,寻找表明欺诈的行为,因为您永远无法信任客户端应用程序。您还需要确定您愿意接受多少欺诈。任何系统都存在一些欺诈行为,摆脱它的成本呈指数级增长。研究 Visa 和银行如何处理这些问题。
【解决方案2】:

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

【讨论】:

  • 是的,我一直在试验。问题是我不知道 system_profiler 从哪里获取数据,所以我对依赖它犹豫不决——我担心它可能太脆弱了。
  • 但是如果你做一个散列,它不应该是一个真正的问题,因为给定一个散列,重新创建散列的对象在计算上​​是不可行的。
  • @samoz:我一定表达得很糟糕。想象一下这种情况:我的应用程序用于识别网站的客户(比如银行)。当用户第一次登录网站时,我在用户的计算机上安装我的应用程序,运行 system_profiler 并对输出进行哈希处理。假设他下次登录时,我想看看它是不是和以前一样的计算机,所以我再次运行 system_profiler。但是如果他欺骗了某些东西,比如他的磁盘序列号,system_profiler 的输出就会不同,他就会破坏我的系统。在这种情况下,加密无关紧要。
  • @Pedro:这如何让事情变得更加安全?如果用户拥有多台计算机怎么办?如果他或她升级硬件或购买新电脑怎么办?不要太努力地想比你的用户更聪明。或者,如果这是一种安全性特别高的用途,您可能需要查看诸如 RSA SecurID 令牌之类的东西以进行双重身份验证。
  • @Pedro:如果用户想欺骗你,并且技术上合理,那么这种方法注定是不安全的。例如,无法保证他们正在运行的应用程序是您安装(或要求他们安装)的应用程序,而不是始终返回他们想要的任何硬件信息的被黑变种。正如 Rob 所说,您需要在服务器端进行安全保护,因为这是您实际控制的唯一地方。您不能相信在客户端上运行或来自客户端的任何东西。
【解决方案3】:

使用ifconfig获取连接到计算机的网卡的MAC ID怎么样?

【讨论】:

  • @alan, samoz:不幸的是,是的。
  • @samoz:搜索了一下,看起来欺骗他们很容易。你是对的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-14
  • 2020-12-17
  • 1970-01-01
  • 2010-12-11
  • 2016-05-11
  • 1970-01-01
  • 2011-12-27
相关资源
最近更新 更多