5. License Types
Contents
5.1. Introduction
This documentation is only apply to Pyarmor 8.0 plus.
Pyarmor is published as shareware, free trial version never expires, but there are some limitations:
Can not obfuscate big scripts
Can not use feature mix-str to obfuscate string constant in scripts
Can not use RFT Mode, BCC Mode
Can not be used for any commercial product. If the total sale income of this product is less than 30x license fees, this software could be used temporarily.
Can not change runtime package name “pyarmor_runtime_000000”
Can not be used to provide obfuscation service in any form, in short this software can’t be used to obfuscate the scripts of others
Can not use obf-code > 1
These limitations can be unlocked by different License Types except (6). All Pyarmor Licenses are only used to obfuscate the scripts written by licensee, in any case they couldn’t be used to obfuscate the scripts not written by licensee.
5.2. License types
Pyarmor has 3 kind of licenses:
- Pyarmor Basic
Basic license could unlock limitations (1) (2) (4) (5) (7).
Each obfuscation need online verify license.
- Pyarmor Pro
Pro license could unlock limitations (1) (2) (3) (4) (5) (7).
Each obfuscation need online verify license.
- Pyarmor Group
Group license could unlock limitations (1) (2) (3) (4) (5) (7).
Group license supports unlimited dockers which use default bridge network and not highly customized, for Pyarmor Basic or Pyarmor Pro, up to 100 docker runs in 24 hours.
Offline obfuscation, it need not internet connection when obfuscating the scripts.
For Pyarmor Basic and Pro License, only Pyarmor License file, serial number of hard disk, Ethernet address, IPv4/IPv6 address, and hostname will be sent to remote server for verification. No any user script will be uploaded to remote server
Group license is bind to device hardwares, it may not work in any device which hardwares are volatile (docker container is OK only if group license works in docker host)
Pyarmor License is only allowed to be installed in the build environments to generate the obfuscated scripts, it need not Pyarmor to run the obfuscated scripts, and it’s not allowed to install Pyarmor License with the obfuscated scripts in your customer devices
Each license has an unique number, the format is pyarmor-vax-xxxxxx
, which x stands for a digital.
Each product requires one License No. So any product in global also has an unique number in Pyarmor world.
License No. and product name will be embedded into obfuscated scripts, all the other user’s information, for example, regname, email are not
If user has many products, and has purchased one license for the first product. The second product could use first product license only if sale income of the second product less than 30x license fees. Once greater than 30x license fees, the second product need purchase its own license. It’s same to user’s other products.
One product in Pyarmor world means a product name and everything that makes up this name.
It includes all the devices to develop, build, debug, test product.
It also includes product current version, history versions and all the future versions.
One product may has several variants, each variant name is composed of product name plus feature name. As long as the proportion of the variable part is far less than that of the common part, they’re considered as “one product”.
Pyarmor License could be installed in many machines and devices which belong to licensed product. But there is limitation to be used at the same time.
In 24 hours only less than 100 devices can use one same Pyarmor Basic or Pro License. Pyarmor License be used means use any feature of Pyarmor in one machine. Running obfuscated scripts generated by Pyarmor is not considered as Pyarmor License be used.
For Pyarmor Group License, one license allows 100 offline devices to be registered. The allocated device No. is never free, if a device is reinstalled, it need allocate new one.
See also
What’s one product
First of all, if not for sale, all the Python scripts are belong to one product “non-profits”.
Pyarmor is one product, it includes:
Pyarmor basic, Pyarmor pro, and Pyarmor group
pyarmor-webui which provides graphics interface for pyarmor.
the order system of Pyarmor is a Django’s app running in cloud-server. This Django’s app also belongs to one product Pyarmor.
the laptop used to develop Pyarmor, the PCs used to test Pyarmor, the cloud-server to serve order system of Pyarmor, all of them belong to one product Pyarmor.
Pyarmor 7.x, Pyarmor 8.x and Pyarmor 9.x
Microsoft Office is not one product, because each product in Microsoft Office is functional independence. For example, Microsoft Word and Microsoft Excel belong to Microsoft Office, but they’re totally different.
Microsoft Word is one product, and Microsoft Word 2003,Word 2007 etc. are belong to one product Microsoft word.
Hints for Pyarmor licenses
Basic, Pro and Group license Only work for Python 3.7+ in supported platforms. If using Python 2.7 or prior to 3.7, only Pyarmor old license works.
If need generate obfuscated scripts offline, only Pyarmor Group or Pyarmor old license works
Pyarmor Basic and Pro license need internet connection to verify license when obfuscating the scripts, and in 24 hours only 100 different devices are allowed to obfuscate the scripts for each license.
In 24 hours, if need more than 100 docker containers to obfuscate your scripts, only Pyarmor Group or Pyarmor old license works.
Pyarmor Basic, Pro and Group licenses don’t work for Pyarmor 7.
5.2.1. Check device for group license
Check one device works for group license by this way:
First install Pyarmor 8.4.0+ trial version in this device
Got machine id by the following command:
$ pyarmor reg -g 1 ... INFO current machine id is "mc92c9f22c732b482fb485aad31d789f1" INFO device file has been generated successfully
Reboot this device, check machine id is same or not
If machine id is same after each reboot, group license works in this device. Otherwise group license doesn’t work in this device.
For docker container, please check docker host as above. Only if docker host could work with group license, unlimited docker containers could be run in this docker host, refer to Using Pyarmor License section run unlimited dockers in offline device
If machine id of docker host is changed after reboot, group license doesn’t work in any docker container
Most of physics machine, cloud server or VM like qemu, virtual box, vmware with same disk image work with Group license. If using group in CI pipeline, the default runner doesn’t work, but something like self-host runner may work.
5.2.2. License features
Features |
Trial |
Basic |
Pro |
Group |
Remark |
---|---|---|---|---|---|
Basic Obfuscation |
Y |
Y |
Y |
Y |
|
Expired Script |
Y |
Y |
Y |
Y |
|
Bind Device |
Y |
Y |
Y |
Y |
|
JIT Protection |
Y |
Y |
Y |
Y |
|
Assert Protection |
Y |
Y |
Y |
Y |
|
Themida Protection |
Y |
Y |
Y |
Y |
|
Big Script |
No |
Y |
Y |
Y |
|
Mix Str |
No |
Y |
Y |
Y |
|
obf-code > 1 |
No |
Y |
Y |
Y |
|
RFT MODE |
No |
No |
Y |
Y |
|
BCC MODE |
No |
No |
Y |
Y |
|
Unlimited dockers |
Y |
No |
No |
Y |
notes
- 1
Big Script means file size exceeds a certain value.
- 2
Mix Str: obfuscating string constant in script
- 3
RFT Mode: renaming function/class/method/variable in Python scripts
- 4
BCC Mode: Transforming some Python functions in scripts to c functions, compile them to machine instructions directly
- 5
Basic Obfuscation: obfuscating the scripts by default options
- 6
Expired Script: obfuscated scripts has expired date
- 7
Bind Device: obfuscated scripts only run in specified devices
- 8
JIT Protection: processing some sensitive data by runtime generated binary code
- 9
Assert Protection: preventing others from hacking obfuscated scripts
- 10
Themida Protection: using Themida to protect Windows dlls
- 11
--obf-code=2
is new in Pyarmor 8.2- 12
This feature is introduced in Pyarmor 8.3, group license supports unlimited dockers, basic and pro licenses only allow 100 runs one day. Also check above section
Check device for group license
5.3. Purchasing license
Open shopping cart in any web browser:
If you have Pyarmor 8.0+ installed, this command also could open shopping cart:
$ pyarmor reg --buy
In the shopping cart, select License Type and complete the payment online.
Please fill reg-name with personal or company name when placing order.
License Type |
Net Price($) |
Remark |
---|---|---|
Basic |
52 |
|
Pro |
89 |
|
Group |
158 |
An activation file named pyarmor-regcode-xxxx.txt
will be sent by email immediately after payment is completed successfully.
Following the guide in activation file to take the purchased license effects, or check Using Pyarmor License
There are no additional license fees, apart from the cost of the license. And it only needs to be paid once, not periodically
The license is valid forever in Pyarmor version when purchasing it, but may not work in Pyarmor future versions
Important
License fee is only for unlocking features, not for technical support.
Refer to Asking questions in GitHub for technical support.
5.3.1. Refund policy
If activation file isn’t used, and purchasing date is in 30 days, refund is acceptable. Please
Email to Ordersupport@mycommerce.com with order information and ask for refund.
Or click FindMyOrder page to submit refund request
Out of 30 days, or activation file has been used, refund request will be rejected.
5.4. Upgrading old license
Not all the old license could be upgraded to latest version.
The old license could be upgraded to Pyarmor Basic freely only if it matches these conditions:
Following new Pyarmor EULA
The license no. starts with
pyarmor-vax-
The original activation file
pyarmor-regcode-xxxx.txt
exists and isn’t used more than 100 timesThe old license is purchased before June 1, 2023. In principle, the old license purchased after Pyarmor 8 is available could not be upgraded to new license.
If failed to upgrade the old license, please purchase new license to use Pyarmor latest version.
The old license can’t be upgraded to Pyarmor Pro and Group.
5.4.1. Upgrading old license to Pyarmor Basic
First find the activation file pyarmor-regcode-xxxx.txt
, which is sent to registration email when purchasing the license.
Next install Pyarmor 8.2+, according to new `EULA of Pyarmor`_, each license is only for one product.
Assume this license will be used to obfuscate product XXX
, run this command:
$ pyarmor reg -u -p "XXX" pyarmor-regcode-xxxx.txt
Check the upgraded license information:
$ pyarmor -v
After upgrade successfully, do not use activation file pyarmor-regcode-xxxx.txt
again, it’s invalid now. A new registration file like pyarmor-regfile-xxxx.zip
will be generated at the same time.
In other devices using this new registration file to register Pyarmor by this command:
$ pyarmor reg pyarmor-regfile-xxxx.zip
After successful registration, all obfuscations will automatically apply this license, and each obfuscation requires online license verification.
If old license is used by many products (mainly old personal license), only one product could be used after upgrading. For the others, it need purchase new license.