脚本加密

通过本章节您可以了解到如何加密您开发的 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 文件。如果是模块则直接置入相关目录重启即可。