没有互联网软件授权机制 [英] Software licensing mechanism without internet

查看:141
本文介绍了没有互联网软件授权机制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经开发了我要保护与授权的软件。到目前为止,我已经有了一个使用的硬件组件的详细信息,以产生对每一台机器的唯一ID code。那么我可以允许5台机器的激活对一个单一的串行键(每证5台机器是什么我卖)。

这一切工作正常,但显然只在具有互联网连接的机器。这是一种保障这只是一个限制,有什么我可以做些什么?或者是有什么办法可以解决这个问题?

注:在这一点上,在这个线程,我不开批判就在我已经生成的唯一的ID的方式,这是我所选择的方法,而不是无知,需要通过坚持有几个原因。

解决方案

我觉得你有几种选择:

  1. 如在注释中所描述,不要让您的授权浮动,但是具体通过将所有允许机器的唯一ID的关键设备。在启动时检查当前计算机的唯一ID对关键
  2. 使用您现有的做法,但与服务器不在你身边,但客户premise的区别,也就是客户需要的地方安装许可证服务器。
  3. 实施某种形式的自我检查:每一个运行实例发送其唯一ID到网络中,进而监听其他运行实例的唯一ID。即通过网络接收到四个以上的唯一ID的第一个实例自动关闭。我想这可以使用UDP广播来实现。这样做的实施不是简单:

    • 您需要确保在离开一个实例和启动一个新的右后不会导致停机别处。
    • 此外,你可能想实现一个检查机器确实联网

    如果我要实现类似的东西,我会介绍以下三种封装类型:

    • 开始:实例刚刚开始,广播其ID为第一次。所有其他情况下需要广播自己的ID作为一个答案。这样做的原因是双重的:
      1. 快速失败
      2. 理想情况下,已经开始最后的实例应该退出如果允许实例的最大数目已经被超过。它不会是理想的,如果已在运行的实例之一将关闭。
    • 周期性:所有实例都周期性地发送自己的唯一的ID,以防万一一个previous传输被错过
    • 退出:如果一个实例关闭它告诉这个事实的其他实例

在任何情况下,你应该考虑允许编码实例的数量成键,这样你就可以在以后伸手不同尺寸的按键。

I've developed software that I want to protect with licensing. So far I've got code that uses the details of hardware components to generate a unique ID for each machine. I can then permit the activation of 5 machines against one single serial key (5 machines per license is what I'm selling).

This all works fine, but obviously only on machines that have internet connection. Is this just a limitation of this sort of protection and there's nothing I can do about it? Or is there a way I can tackle this problem?

NB: At this point, in this thread, I'm not open to critique regarding the way in which I've generated the unique ID, this is the method I've chosen and, rather ignorantly, need to stick by for a few reasons.

解决方案

I think you have several options:

  1. As described in the comment, don't make your license floating but machine specific by incorporating the unique IDs of all allowed machines in the key. Upon startup check the unique ID of the current machine against the key
  2. Use your current approach but with the difference that the server is not on your side but on customers premise, i.e. a license server the customer needs to install somewhere.
  3. Implement some kind of self check: Each running instance sends its unique ID into the network and in turn listens for the unique IDs of other running instances. The first instance that receives more than four unique IDs via the network shuts itself down. I guess this could be implemented using UDP broadcasts. The implementation of this is not that trivial:

    • You need to make sure that exiting one instance and starting a new one right afterwards doesn't lead to a shutdown elsewhere.
    • Furthermore, you might want to implement a check that the machine is indeed networked

    If I were to implement something like that, I would introduce the following three package types:

    • Start: Instance just started and broadcasts its ID for the first time. All other instances need to broadcast their own ID as an answer. The reason for this is twofold:

      1. Fail fast
      2. Ideally, the instance that has been started last should exit if the maximum number of allowed instances has been exceeded. It would not be ideal if one of the already running instances would shut down.

    • Periodic: All instances periodically send their unique ID, just in case a previous transmission was missed
    • Exit: If one instance is closed it tells this fact the other instances

In all cases, you should think about encoding the number of allowed instances into the key, so you can later hand out differently sized keys.

这篇关于没有互联网软件授权机制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆