0%

python项目加密与license授权

0. 安装加密库

1
pip install encryptKit -i https://pypi.org/simple

基于github源码安装

1
pip install git+https://github.com/fushengwuyu/pyencryption

1. 项目加密

使用Cython将python脚本加密为C语言的动态库,除了预留一个项目入口之外,其余统一将.py脚本转化为.so库,实现对整个python项目加密的任务。

执行命令:

1
2
3
4
5
6
7
8
9
10
11
python -m encryption.encrypt_code --help
usage: encrypt_code.py [-h] [--except_dirs EXCEPT_DIRS [EXCEPT_DIRS ...]] [--enc_dir ENC_DIR] [--build_dir BUILD_DIR] [--entrance ENTRANCE]

encrypt project

optional arguments:
-h, --help show this help message and exit
--except_dirs EXCEPT_DIRS [EXCEPT_DIRS ...] 需要屏蔽加密的路径
--enc_dir ENC_DIR 解密项目路径
--build_dir BUILD_DIR 加密后的路径
--entrance ENTRANCE 项目程序入口

可以看到相关参数的含义。

使用示例:

1
python -m encryption.encrypt_code --enc_dir npc_server --build_dir npc_server_enc

加密前项目目录如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
├── apps
│   ├── auth
│   │   ├── auth.py
│   │   ├── __init__.py
│   ├── extract
│   │   ├── chat.py
│   │   ├── __init__.py
│   │   ├── time_extract.py
│   │   └── view.py
│   ├── http_response.py
│   ├── __init__.py
│   ├── robot_notice
│   │   ├── info_gather.py
│   │   ├── __init__.py
│   │   └── view.py
│   └── utils.py
├── config.yaml
├── mq_mode
│   ├── __init__.py
│   ├── mqtt_plugins.py
│   └── utils.py
├── mq_run.py
├── readme.md
├── run.py
└── t.py

加密后为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
├── apps
│   ├── auth
│   │   ├── auth.cpython-38-x86_64-linux-gnu.so
│   │   ├── __init__.cpython-38-x86_64-linux-gnu.so
│   │   └── __init__.py
│   ├── extract
│   │   ├── chat.cpython-38-x86_64-linux-gnu.so
│   │   ├── __init__.cpython-38-x86_64-linux-gnu.so
│   │   ├── __init__.py
│   │   ├── time_extract.cpython-38-x86_64-linux-gnu.so
│   │   └── view.cpython-38-x86_64-linux-gnu.so
│   ├── http_response.cpython-38-x86_64-linux-gnu.so
│   ├── __init__.cpython-38-x86_64-linux-gnu.so
│   ├── __init__.py
│   ├── robot_notice
│   │   ├── info_gather.cpython-38-x86_64-linux-gnu.so
│   │   ├── __init__.cpython-38-x86_64-linux-gnu.so
│   │   ├── __init__.py
│   │   └── view.cpython-38-x86_64-linux-gnu.so
│   └── utils.cpython-38-x86_64-linux-gnu.so
├── config.yaml
├── mq_mode
│   ├── __init__.cpython-38-x86_64-linux-gnu.so
│   ├── __init__.py
│   ├── mqtt_plugins.cpython-38-x86_64-linux-gnu.so
│   └── utils.cpython-38-x86_64-linux-gnu.so
├── mq_run.cpython-38-x86_64-linux-gnu.so
├── readme.md
├── run.cpython-38-x86_64-linux-gnu.so
├── run.py
└── t.cpython-38-x86_64-linux-gnu.so

正常启动项目入口python run.py 即可启动项目。

2. license授权与认证

待续。。。