【发布时间】:2014-04-14 23:09:57
【问题描述】:
我创建了一个 AIR 应用程序,它将一个 ID 发送到我的服务器以验证用户的许可证。
我使用创建它 NetworkInfo.networkInfo.findInterfaces() 并且我将第一个“name”值用于包含“LAN”的“displayName”(或者如果用户在 MAC 上,则我获得的第一个 mac 地址)。
但我遇到了一个问题: 有时用户使用 U 盘(由移动电话公司提供)连接到互联网,它会更改我得到的序列号;可能 U 盘成为 findInterfaces() 向量中的第一个值。 我可以取最后一个值,但我想我也会遇到类似的问题。
那么有没有更好的方法来识别计算机,即使是在硬件上进行了这么小的改动? 获得主板或CPU串行会很好,但似乎不可能。我找到了一些解决方法来获得它,但在 WIN 上而不是在 MAC 上工作。
我不想将数据存储在用户计算机上进行身份验证,以设置“有点”更难破解软件。
有什么想法吗?
谢谢
娜迪亚
【问题讨论】:
-
我认为你的方法是错误的。如果用户更换网卡或从 Wifi 切换到 LAN 怎么办?您可以使用加密的 sqlite 数据库来存储您的序列号。我还建议您在 Google 上搜索用于存储凭据或序列号的已知安全方法...祝您好运!
-
我必须同意阿德里安的观点,
Digital Rights Management这种类型将许可证的Ownership授予卡或芯片而不是所有者。重要的是要记住任何关于计算机的东西都可能改变 CPU 或主板。如果您不想将许可证存储为文件(可以理解),下一个最佳方法是让用户登录,让您的代码从中生成哈希(包括盐)或加密字符串,将其传输到用于验证的服务器。服务器只需将其与使用类似方法生成的密钥进行比较。 -
感谢两位的评论。回答各种问题: - 从 lan 切换到 Wifi 不是问题,因为这两个时间表都在机器上,并且 AIR 获取找到的第一个“LAN”的序列号,即使用户通过 wifi 连接,问题是“ USB key”,因为它是一个新硬件,改变了空中脚本的第一个结果。
-
关于主板或CPU;它们可以更改,但更罕见的情况。关于加密,对不起,如果我问一些愚蠢的事情,但我从未处理过它们:如果用户在另一台 PC 上复制加密文件并启动 AIR 应用程序,他会得到有效的序列号吗?
-
关于用户登录,我想在一台计算机上获得一个许可证,通过登录,用户可以从多台计算机上启动应用程序......我搜索了很多以找到一个好的解决方案,但没有没有找到任何对非专业程序员来说很容易但也有效的东西。
标签: actionscript-3 air adobe serial-number