基于Java的唯一计算机ID硬件

13

我需要从单个计算机生成一个唯一的代码,我的软件将通过许可证进行分发,并且在本地我需要识别环境并将此代码发送到服务器。 我不想在服务器上维护一个顺序号,并且每个客户端接收一个序列号。我尝试从NetworkInterfaces读取MAC地址,但这不安全,用户可以轻松更改MAC地址。 我认为最好的方法是如果可以读取主板序列号,但是直到现在我还没有找到方法。 有什么建议吗?


1
请注意,计算机可能有许多网络接口(因此有许多MAC地址),也可能没有。 - Michael Petrotta
在安装时创建一个长的随机字符串并将其存储在本地机器上? - Carsten
@Rigoni:我可能有点老了,但是你可以研究一下PPP协议以及MAC地址的奇怪性。你可以在没有物理网络适配器的情况下拥有互联网连接。 - Michael Petrotta
请参见相关内容https://dev59.com/EHI-5IYBdhLWcg3wKVE9。 - gawi
请注意,如果用户更换或禁用NIC,则MAC地址可能会更改。 - Steve Kuo
显示剩余2条评论
2个回答

9

你的软件价值多少钱?

目标市场是否经常盗版软件?

在Windows系统上,可以使用WMI读取主板序列号。

使用WMI读取序列号:http://www.c-sharpcorner.com/UploadFile/GemingLeader/mb-sn-wmi08242009101325AM/mb-sn-wmi.aspx

使用Java调用WMI:http://henryranch.net/software/jwmi-query-windows-wmi-from-java/

如果XP域成员使用组策略,则WMI在Windows XP上可能存在问题。

(这只影响大多数企业用户的XP,所以不是很重要)

希望这有点帮助(MAC地址更简单...但很容易更改)


是的,这是一种类似于赌场计算器策略的策略软件。 它是多平台的,对于Windows系统,这个解决方案会很有用,但对于其他平台则不适用。我将尝试这个解决方案,并为其他操作系统寻找其他解决方案。 非常感谢。 - Rigoni
1
你能详细说明一下WMI是/曾经出现了什么问题吗?我找不到与这个漏洞有关的参考资料。 - MZB
WMI有许多领域无法提供您所期望的信息。更糟糕的是,每个服务包(以及不幸的常规更新)都会更改WMI报告的内容。除非您对客户端安装有非常严格的控制,否则使用WMI可能会令人抓狂。 - NotMe
据我所知,将XP机器加入AD域并应用一些组策略后,WMI就会出现问题(尤其是对于许多应用程序安装程序而言)。 - Tim Williscroft

0

MAC地址不可靠。您应该瞄准一些无法更改的东西,例如CPU ID或HDD IDE ID。

这就是我的意思:http://www.soft.tahionic.com/download-hdd_id/index.html

不幸的是,我认为该DLL文件不能与Java一起使用,但至少它会向您显示一些关于什么是可靠和什么不可靠的信息。


CPU ID并不会给你唯一的序列号。该ID纯粹用于识别正在使用的处理器类型。 - NotMe
1
此外,硬盘可能不可靠,因为使用RAID控制器可能会导致其不可用。 - NotMe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接