5. 许可模式和许可证

5.1. 简介

本文档仅适用于 Pyarmor 8.0 之后的版本。

下载和安装本软件表示自动接受试用许可协议,试用版本有如下的限制

  1. 加密功能对脚本大小有限制,不能加密超过限制的大脚本。

  2. 混淆字符串功能在试用版中无法使用。

  3. RFT 加密模式,BCC 加密模式在试用版无法使用。

  4. 不可以用于加密商用产品。特别的,如果商用产品的累计销售额小于基础版许可证费用乘以30,可以暂时使用;但是一旦累计销售额超过阀值,就不可以在继续使用。

  5. 运行辅助包的名称 "pyarmor_runtime_000000" 不可以被设置和修改

  6. 不可以使用本软件提供任何形式的加密服务,不管是通过应用程序还是网络服务。总之在任何情况下都不允许使用本软件加密其他人的脚本。

  7. 不支持 obf-code 大于 1 的任何加密模式

试用版本中功能限制,需要通过许可授权来解锁相关功能。

5.2. 许可模式

许可授权需要通过购买相应的许可证来获取,购买许可证可以通过指定的网站购买。

本软件提供三种许可证,分别解锁不同的功能

  • 基础版许可证

    基础版许可证解锁限制 (1) (2) (4) (5) (7).

    加密脚本的时候需要在线验证许可证

  • 专家版许可证

    专家版许可证解锁限制 (1) (2) (3) (4) (5) (7).

    加密脚本的时候需要在线验证许可证

  • 集团版许可证

    集团版许可证解锁限制 (1) (2) (3) (4) (5) (7).

    集团版许可证支持运行不受限制的 Docker,基础版和专家版许可证在一天之内最多运行 100 次 Docker 容器。

    加密脚本不需要在线验证许可证

基础版和专家版许可证需要收集设备信息并发送到服务器进行验证,除了许可证文件之外,不会上传任何用户脚本到服务器

集团版许可证会绑定到设备,在虚拟机上或者硬件经常发生变化的设备可能无法工作。特别的,只要 Docker 主机可以使用集团版许可证,那么Docker 容器也可以

不管哪一种许可证,运行加密脚本的时候都无需验证许可证,本软件对于加密脚本的运行没有任何控制和限制。所有的许可证约束和限制都只适用于生成加密脚本的机器,而不适用于运行加密脚本的机器

每一个许可证都有一个 18 位字符长度唯一的编号,并授权给有且只有一种产品使用。也就是说,任何一种使用本软件进行保护的产品都有自己唯一的许可证编号,不允许两种不同产品使用相同的许可证编号。

许可证编号和被授权的产品名称会嵌入到加密脚本中,除此之外,加密脚本中没有任何用户相关的注册信息,例如注册名称和邮箱等

如果用户有多种产品并且已经为第一种产品购买了许可证,那么当用户的第二种产品的销售收入小于当前许可证费用的30倍,那么第二种产品可以暂时使用第一种产品的许可证。一旦销售收入超过许可证费用的30倍,第二种产品就必须购买自己的许可证。这个原则也适用于用户的其他所有产品。

一种产品在本协议中指的是独立销售的软件所有组成部分,包括开发需要的各种设备,以及提供支持的服务器,云服务器等。一种产品也包括产品的当前版本,历史版本,以及将来的升级版本。一种产品也包括基础功能相同,组合不同特殊功能而形成的不同版本的产品,这种产品的特征是不同版本对外销售名称一样,只是通过辅助名称等来进行区分。

同一个基础版和专家版许可下面,同时使用本软件的设备数目不超过 100 个。同时使用本软件是指从现在开始在 24 小时内曾经运行 pyarmor 命令的设备。这里的设备是指安装 Pyarmor 并使用 Pyarmor 对脚本进行加密的设备,不是指运行加密脚本的客户机器。

同一个集团版许可证下面,最多只能有 100 台设备注册,编号从 1 到 100。一旦设备注册,将永久占用该设备号。如果已经注册的设备重装系统,或者更换硬件系统,那么需要为其重新分配新的设备号。

关于一种产品的示例说明

不用于销售的所有的 Python 脚本都属于一种特殊的产品 non-profits

Pyarmor 是一种产品,它所包含

  • Pyarmor 基础版,专家版和集团版 都属于 Pyarmor 这一种产品

  • pyarmor-webui,为 Pyarmor 提供图形界面的工具,也属于 Pyarmor 这一种产品

  • Pyarmor 的后台订单系统是用 django 开发的一个程序,这也属于 Pyarmor 这一种产品

  • 开发 Pyarmor 所使用的笔记本电脑,测试 Pyarmor 使用的台式机,以及运行后台订单系统的云服务器都属于 Pyarmor 这一种产品

  • Pyarmor 7.x 和 Pyarmor 8.x 也都属于 Pyarmor 一种产品。

Microsoft Office 产品系列不是一种产品,它包括的各个产品,例如 Microsoft Word 和 Microsoft Excel 是功能完全不同的两个产品,所以 Microsoft Office 不是一种产品。而 Microsoft Word 是一种产品,它的各个版本系列 Micorsoft Word 2003,Word 2007 等也都属于 Microsoft word 这一种产品。

5.2.1. 适用集团版许可证的设备

集团版许可证只能用于设备硬件信息保持不变的系统,使用下面的方法检查一个设备是否适用集团版许可证

  • 在设备上安装 Pyarmor 8.4.0+ 的试用版本

  • 运行下面的命令得到机器标识符:

    $ pyarmor reg -g 1
    ...
    INFO     current machine id is "mc92c9f22c732b482fb485aad31d789f1"
    INFO     device file has been generated successfully
    
  • 重新启动设备,重复上面的命令查看机器标示符

  • 如果每一次重启之后机器标识符都保持不变,那么该设备可以使用集团版许可证,否则无法使用基本版许可证

对于 Docker 容器来说,只需要按照上面的方法检查 Docker Host。如果 Docker Host 可以使用集团版许可证,那么就可以在其上运行不受限制的 Docker 容器,具体使用方法请参考 使用许可证 中的 运行不受限制的 Docker 容器

如果 Docker Host 的机器标识符每次重启都会发生变化,那么集团版许可证无法运行任何 Docker 容器

大多数的物理设备,云服务器以及使用相同磁盘映像的虚拟机(qemu,virtualbox,vmware)可以使用集团版许可证,如果是在 CI 服务器的工作流中使用,默认的 runner 可能无法工作,类似 Github 上面的 self-host runner 应该可以工作,请参阅相应的 CI 服务器文档,并使用上面的方法进行验证。

5.2.2. 不同许可证的功能列表

表-1. 许可证功能表

功能

试用版

基础版

专家版

集团版

备注说明

基本加密功能

1

脚本有效期

2

绑定到设备

3

JIT 保护

4

Themida 保护

5

Assert 保护

6

大脚本文件

7

混淆字符串

8

obf-code > 1

9

RFT加密模式

10

BCC加密模式

11

无限制 Docker

12

notes

1

基本加密功能,是指没有使用任何选项的加密功能。

2

脚本有效期,是指能够限制加密脚本运行有效期的功能。

3

绑定到设备,是指能够限制加密脚本运行在指定设备的功能。

4

JIT 保护,是指使用动态代码生成机制对加密脚本进行保护的功能。

5

Themida 保护,是指使用第三方工具 Themida 对 Widnows 动态库进行保护的功能。

6

Assert 保护,是指保护加密脚本不会被替换或者非法注入的保护功能。

7

大脚本文件,是指加密脚本的大小超过一定值,“无”表示不能加密大脚本,“有”表示可以加密大脚本。

8

混淆字符串,是指对脚本中的字符串常量进行混淆保护的功能。

9

从 Pyarmor 8.2 开始,obf-code 支持使用多种不同方式对函数进行加密

10

RFT 加密模式,是指通过重命名脚本中的函数,类,方法和变量的名称来保护脚本的功能。

11

BCC 加密模式,是指把 Python 脚本中部分函数转换成为对应的 C 函数,通过编译直接生成机器指令代码,从而对脚本进行保护的功能。

12

这个功能是从 Pyarmor 8.3 开始支持,集团版许可证可以运行不受限制的 Docker,基础版和专家版一天之内最多运行 Docker 容器 100 次。需要注意的是 Docker Host 的机器必须能够使用集团版许可证,具体可参阅上面的章节 适用集团版许可证的设备

5.3. 购买

在浏览器中打开 Pyarmor 官网的购物车,支持微信和支付宝

在购物车页面选择需要的许可证类型,填写注册名称,并完成支付。

支付成功之后,在一个工作日之内激活文件会发送到注册邮箱,请按照激活文件中的方法和步骤完成注册和激活,或者参考这里 使用许可证

购买软件许可的费用是一次性收费,可以永久在购买本软件时候的版本中使用,但是许可证可能在任何一个升级版本中失效,Pyarmor 不承诺许可证可以在今后所有的升级版本中使用。

表-2. 不同授权模式的价格列表(中国)

授权模式

不含税价格(人民币元)

含税价格(人民币元)

说明

基础版

298

359

专家版

512

562

集团版

868

918

如果需要使用信用卡或者 Paypal 进行支付,可以直接在 MyCommerce 官网进行购买,这里的价格单位是美元,并且不能开国内增值税发票,只提供国际通用的电子发票(订单,发票相关事宜全部由 MyCommerce 处理)

表-3. 不同授权模式的价格列表(国外)

授权模式

不含税价格(美元)

说明

基础版

52

专家版

89

集团版

158

重要

许可费用仅为解锁相应的功能,不包含技术支持。

关于技术支持,请查看 如何在 Github 上提问

重要

一旦许可证被激活之后,就不再接受退款请求。

仅当许可证没有被激活并且购买日期在三个月之内的订单,可以退款。

5.4. 升级老版本许可证

不是所有的老版本的许可证都可以升级为新的许可证。

符合下列条件的老版本许可证可以免费升级到 Pyarmor 基础版许可证:

  • 遵循新的 Pyarmor 最终用户许可协议

  • 原来的许可证编号是以 pyarmor-vax- 开头的

  • 原来许可证的注册文件 pyarmor-regcode-xxxx.txt 存在且不能被使用超过 100 次

  • 原来的许可证的购买日期在 2023年6月1日之前,原则上在 Pyarmor 8 发布之后依旧购买的老许可证不支持升级。

如果无法免费升级,请购买新的许可证。

老版本的许可证不支持升级到专家版和集团版。

5.4.1. 免费升级到基础版

首先找到原来的许可证激活文件 pyarmor-regcode-xxxx.txt

然后安装 Pyarmor 8.2+

按照新的 Pyarmor 最终用户许可协议 ,需要为每一个许可证指定产品名称。这也意味着,如果老的许可证是被用于多种产品的话,升级之后就只能用于其中的一个,其他产品还需要购买新的许可证。

假定使用许可证的产品名称是 XXX ,那么使用下面的命令进行升级:

$ pyarmor reg -u -p "XXX" pyarmor-regcode-xxxx.txt

升级成功之后会生成新的 注册文件

在其他设备直接使用新的 注册文件 进行注册:

$ pyarmor reg pyarmor-regfile-xxxx.zip

运行下面的命令检查升级后的许可证:

$ pyarmor -v

注册成功之后所有的加密操作自动应用当前许可证,每一次加密操作需要联网验证许可证。