【问题标题】:Managing features on a license basis for a C++ application [closed]基于许可证管理 C++ 应用程序的功能 [关闭]
【发布时间】:2010-10-12 21:17:49
【问题描述】:

我们正在尝试为我们的 Linux 应用程序正在运行的每个功能提供许可机制,并且我们正在考虑使用许可服务器以集中方式控制它:

我们的许可目标是:

  1. 拒绝运营商未购买的功能。
  2. 提供试用(如果未购买,功能将过期)。
  3. 在一段时间内激活功能,并使其仅在一段时间内可用。

是否有任何服务器许可证允许我们这样做(基本上,我们会使用套接字与我们的应用程序通信)?我们还能做些什么(例如,使用一些开源软件、阅读等)来入门?

【问题讨论】:

  • 为什么有人会记下这个问题?这是一个完全有效的问题,需要编程解决方案。不要仅仅因为您不同意软件许可而将其标记
  • 好问题。我会很高兴知道任何开源 DRM 工具:)

标签: c++ networking licensing trialware


【解决方案1】:

有时软件确实需要保护 - 看看这些人 here - 他们提供硬件和软件解决方案。

【讨论】:

    【解决方案2】:

    如果您确实打算自己编写代码,我见过的一种常见机制是将许可证绑定到 MAC address

    【讨论】:

      【解决方案3】:

      如果您真的想使用许可证服务器,请确保您的应用程序不必一直联系它来授权使用 - 当人们失去 Internet 连接或您的服务器出现故障时,这将导致无穷无尽的问题或崩溃。

      我建议将密钥下载并存储在本地,从而减少到服务器的往返次数。可以根据用户的机器详细信息对密钥进行加密,使密钥无法共享。

      我们过去曾使用过HASP 硬件密钥,虽然它们确实可以工作并提供解决方案,但我认为它们不是您想要的,因为它们被编程一次,仅此而已。例如,您将无法更新 HASP 密钥以结束试用期。

      【讨论】:

      • 您可以对 HASP 钥匙进行编程,使其在 30 天试用期后失效。这通常适用于在任何时间段内获得许可的软件。我已经使用许多不同的硬件按键完成了这项工作,包括 HASP 系列按键。然而,在试用期内使用 HASP 密钥是一种昂贵的方式。此外,可以使用软件程序在现场轻松更改存储在硬件密钥上的任何信息。只需重新编译控制您的密钥的例程并重新打包到新的更新程序中即可。
      【解决方案4】:

      这就是Dilbert-esque 的做事方式。直接说不吧。

      虽然令人讨厌,但这是高端专业软件的标准功能,需要花费数万美元。想想 3D 扫描仪和 CNC 的东西。

      【讨论】:

        【解决方案5】:

        FLEXnet(以前称为 FLEXlm)是一种许可包,通常用于高端或专用软件包,例如电子设计自动化市场。您可以将许可证锁定到单台机器(通过 hostid,通常是以太网 MAC 地址)或便携式硬件加密狗,或者让网络服务器处理与运行您的软件的客户端共享有限的并发许可证池。许可证可以在有限的时间内或永久地授予,也可以受版本号的限制。许可文件描述了许可的功能。

        FLEXnet 包含多个用于与您的应用程序集成的 API,包括一个用于 C++ 的 API。我想它使用某种公钥密码术。通常,使用 FLEXnet 的应用程序仅在您通过使用 API 要求它时“打电话回家”。许多应用程序在启动时检查许可证一次,或在应用程序运行期间从池中保留许可证。

        您当然需要支付年度许可费才能在您的产品中使用 FLEXnet,起价超过 1000 美元。费用因贵公司的收入以及您希望许可方案能够在其上运行的平台数量(操作系统/CPU 组合)而异。

        如果您的产品每个座位的售价低于几千美元,我会说使用 FLEXnet 之类的东西是不值得的。使用起来很麻烦(我们公司很大一部分支持电话的来源),但企业客户可能已经熟悉使用它,具体取决于市场。

        FLEXnet,就像我听说过的所有 DRM 方案一样,很容易被破解。至少我认为是这样,因为我们的产品的解锁版本经常在warez 网站上找到。

        【讨论】:

          【解决方案6】:

          常见的许可软件是flexlm。但是,如果我将这些限制强加给我的用户,我会三思而后行。许多用户不喜欢它们;尤其是来自 FOSS/Linux 环境。

          【讨论】:

            【解决方案7】:

            你真的需要“打电话回家”吗?

            我见过一个相对简单的许可系统,通过它向用户提供了一个 XML 文件,该文件描述了许可的有效期、一个可选的 IP 地址以及“解锁”功能的列表。使用供应商的私钥生成了一个数字签名,该私钥被重新插入到许可证文件中。启动时,应用程序正在读取许可证、验证许可证、检查 IP 并相应地解锁功能。

            供应商可以在需要时向客户提供更新的许可证。

            虽然理论上您可以通过更改机器的本地时间和伪造 IP 地址来欺骗许可证,但在这种情况下,这会使应用程序使用起来非常麻烦,所以这不是问题。

            【讨论】:

              【解决方案8】:

              使用过各种使用此类许可证服务器的软件包后,我可以告诉您,这是让您的软件受到用户普遍憎恨的一种可靠方法。

              【讨论】:

              • 嗨,尼尔,你能举一些这样的包的例子吗?
              猜你喜欢
              • 2013-03-19
              • 2015-12-02
              • 2023-03-06
              • 1970-01-01
              • 1970-01-01
              • 2012-01-07
              • 1970-01-01
              • 1970-01-01
              • 2012-10-09
              相关资源
              最近更新 更多