脚本加密¶
通过本章节您可以了解到如何加密您开发的 FIRERPA 模块或者脚本,本章节不是介绍您在 PC 侧的脚本加密,而是在 FIRERPA 内置 Python 环境中运行的脚本或模块。如 /data/usr/module/task、/data/usr/module/extension 中的模块或是使用内置 Python 命令执行的脚本。我们提供了相关工具来帮助您快速进行,通过本章节您可以了解到如何保护您开发的脚本。
脚本加密采用 Cython 转 C 并编译为 so 的方法进行,不会对您的性能产生太大影响,但是我们只建议您加密核心的逻辑而不是加密所有脚本文件,同时请勿用来加密第三方库的文件,因为这些是徒劳的,应始终遵循 "只加密自己的逻辑"。
构建工具镜像¶
我们严重依赖 Docker,所以请继续开始前准备好 docker。现在请克隆 https://github.com/firerpa/compiler,并按照文档或者如下命令构建镜像。
docker build -t compiler .
加密脚本代码¶
使用如下命令将源代码映射到镜像内并编译,支持的 arch 包括 arm、arm64、x86、x86_64,对应 FIRERPA 服务端的不同架构,不同的架构不互相兼容。
docker run -it --rm -v /source/dir:/data compiler:latest compile.sh --arch arm64 /data/my_important_script.py
正常情况下,运行命令后,您将在脚本的同目录获得一个 my_important_script.cpython-39.so,请勿重命名此文件,如需使用其他名称您应该直接修改脚本名称。现在您可以在发布的脚本中,将相关的 py 源码文件删除并将 so 文件放入即可。
注意
如您的代码不是 FIRERPA 模块(extension,task),并且只有一个文件,python 无法直接运行 so 文件,您还需写一个入口 py 脚本来导入并启动加密的 so 文件。如果是模块则直接置入相关目录重启即可。