Runtime Module pytransform¶
If you have realized that the obfuscated scripts are black box for end
users, you can do more in your own Python scripts.In these cases,
pytransform
would be useful.
The pytransform
module is distributed with obfuscated scripts,
and must be imported before running any obfuscated scripts. It also
can be used in your python scripts.
Contents¶
-
exception
PytransformError
¶ It’s DEPRECATED.
This is raised when any pytransform api failed. The argument to the exception is a string indicating the cause of the error.
It’s not available in super mode.
-
get_expired_days
()¶ Return how many days left for time limitation license.
>0: valid in these days
-1: never expired
Note
If the obfuscated script has been expired, it will raise exception and quit directly. All the code in the obfuscated script will not run, so this function will never return 0.
-
get_license_info
()¶ Get license information of obfuscated scripts.
It returns a dict with keys:
- ISSUER: The issuer id
- EXPIRED: Expired date
- IFMAC: mac address bind to this license
- HARDDISK: serial number of harddisk bind to this license
- IPV4: ipv4 address bind to this license
- DATA: extra data stored in this licese, used by extending license type
- CODE: registration code of this license
The value None means no this key in the license.
The key ISSUER is introduced from v6.2.5. It will be trial if the license.lic is generated by trial pyarmor. For purchased pyarmor, it will be the purchased key like pyarmor-vax-NNNNNN. Note that if the license.lic is generated by pyarmor before v6.0.1, it will be None.
Raise
Exception
if license is invalid, for example, it has been expired.
-
get_license_code
()¶ Return a string, which is last argument as generating the licenses for obfucated scripts.
Raise
Exception
if license is invalid.
-
get_user_data
()¶ Return a string, which is specified by
-x
as generating the licenses for obfucated scripts.Return None if no specify
-x
.Raise
Exception
if license is invalid.
-
get_hd_info
(hdtype, name=None)¶ Get hardware information by hdtype, hdtype could one of
HT_HARDDISK return the serial number of first harddisk
HT_IFMAC return mac address of first network card
HT_IPV4 return ipv4 address of first network card
HT_DOMAIN return domain name of target machine
Raise
Exception
if something is wrong.In Linux, name is used to get named network card or named harddisk. For example:
get_hd_info(HT_IFMAC, name="eth2") get_hd_info(HT_HARDDISK, name="/dev/vda2")
In Windows, name is used to get all network cards and harddisks. For example:
get_hd_info(HT_IFMAC, name="*") get_hd_info(HT_HARDDISK, name="*") get_hd_info(HT_HARDDISK, name="/0") # First disk get_hd_info(HT_HARDDISK, name="/1") # Second disk
Note
Changed in v6.5.3
- Add new keyword parameter name
- Remove keyword parameter size
-
HT_HARDDISK, HT_IFMAC, HT_IPV4, HT_DOMAIN
Constant for hdtype when calling
get_hd_info()
-
assert_armored
(*args)¶ A decorator function used to check each function list in the args is obfuscated.
Raise
Exception
if any function is not obfuscated.
Examples¶
Copy those example code to any script, for example foo.py, obfuscate it, then run the obfuscated script.
Show left days of license
from pytransform import get_license_info, get_expired_days
try:
code = get_license_info()['CODE']
left_days = get_expired_days()
if left_days == -1:
print('This license for %s is never expired' % code)
else:
print('This license for %s will be expired in %d days' % (code, left_days))
except Exception as e:
print(e)
More usage refer to Using Plugin to Extend License Type
Note
Though pytransform.py is not obfuscated when running the obfuscated script, it’s also protected by PyArmor. If it’s changed, the obfuscated script will raise protection exception.
Refer to Special Handling of Entry Script