腳本加密¶
透過本章節,您可以瞭解如何加密您開發的 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 檔案。如果是模組,則直接放入相關目錄並重新啟動即可。