Ubuntu下Python代码如何加密保护
导读:Ubuntu下保护Python代码的实用方案 在Ubuntu上保护Python代码通常采用混淆、编译为二进制扩展、打包为可执行文件以及许可绑定等手段。下面给出每种方案的操作步骤、适用场景与注意事项,便于按需求组合使用。 一、方案总览与选择建...
Ubuntu下保护Python代码的实用方案
在Ubuntu上保护Python代码通常采用混淆、编译为二进制扩展、打包为可执行文件以及许可绑定等手段。下面给出每种方案的操作步骤、适用场景与注意事项,便于按需求组合使用。
一、方案总览与选择建议
| 方案 | 核心做法 | 适用场景 | 主要优点 | 局限与注意 |
|---|---|---|---|---|
| PyArmor 混淆/加密 | 加密字节码并注入运行环境 | 商业脚本、需要许可控制 | 上手快、可绑定机器/期限 | 非绝对安全,需配合许可与运行环境管理 |
| Cython 编译为 .so | 转C并编译为Linux共享库 | 核心算法/性能敏感模块 | 逆向难度高、可性能提升 | 需处理依赖与ABI,分发为包体 |
| PyInstaller 打包 | 打包为单文件可执行程序 | 快速交付、隐藏源码 | 部署简单、分发方便 | 易被提取,仅增加逆向成本 |
| 自定义加密 + exec | 运行时解密并执行 | 特殊分发场景 | 实现灵活 | 密钥管理难,安全性依赖实现 |
二、PyArmor快速上手与许可控制
- 安装与基本加密
- 安装:pip3 install pyarmor
- 加密:在项目目录执行 pyarmor gen main.py(旧版本可用 pyarmor obfuscate main.py)
- 运行:cd dist & & python main.py(dist 下包含加密脚本与运行所需文件)
- 许可绑定与过期控制
- 生成许可:pyarmor licenses -e 2025-12-31 myapp
- 使用许可加密:pyarmor gen --with-license licenses/myapp/license.lic main.py
- 分发与跨平台
- 分发整个 dist 目录(包含运行时的平台相关扩展),仅复制单个脚本通常无法运行
- 跨平台构建:pyarmor gen --platform linux.x86_64 --platform windows.x86_64 foo.py
- 适用场景
- 需要有效期、机器绑定、按模块加密与相对便捷分发的项目。
三、Cython将关键模块编译为.so
- 安装依赖
- sudo apt-get install python3-dev gcc
- pip3 install cython
- 最小示例
- 源码 test.py
- class Today: def get_time(self): print(datetime.datetime.now()); def say(self): print(“hello”)
- 编译脚本 setup.py
- from distutils.core import setup from Cython.Build import cythonize setup(ext_modules=cythonize([“test.py”]))
- 构建与验证
- python3 setup.py build_ext --inplace
- 将生成的 .so(如 test.cpython-*.so)与调用方一起分发,调用方式不变:from test import Today
- 源码 test.py
- 适用场景
- 核心算法/商业逻辑希望以二进制形式分发、并兼顾性能与逆向难度的模块。
四、PyInstaller打包为可执行文件
- 安装与打包
- pip3 install pyinstaller
- 打包:pyinstaller --onefile your_script.py
- 运行与分发
- 生成的可执行文件位于 dist/,直接在目标机器运行:./dist/your_script
- 适用场景
- 快速交付、无需暴露源码、对终端用户友好的场景;注意其并非不可逆向,仅提高分析门槛。
五、自定义加密与运行时的注意事项
- 基本思路
- 使用如 AES 对源码加密,运行时在受控环境中解密并用 exec 执行;可用 pycryptodome 实现加解密流程。
- 重要限制
- 密钥必须随程序或派生,存在被提取风险;不适合高安全诉求
- 需处理异常、编码与平台差异,维护成本较高
- 适用场景
- 特殊分发与授权校验流程的辅助手段,不建议作为唯一保护方式。
六、实践建议与安全边界
- 组合增强
- 关键模块用 Cython 编译为 .so,入口脚本用 PyArmor 加密/许可,整体再用 PyInstaller 打包,多层防护显著提高逆向成本。
- 分发与兼容
- PyArmor 生成物包含平台相关运行库,分发时请复制整个输出目录;跨平台需在对应平台分别构建或使用其跨平台构建能力。
- 安全边界
- 任何方案都无法做到绝对防逆向。请结合许可控制、代码完整性校验、运行环境隔离与法律合规共同构建防护体系。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu下Python代码如何加密保护
本文地址: https://pptw.com/jishu/775591.html
