python3源码保护_Python源代码保护,源码

由于Python开源的特性,在一些商业场景下,若不想将源码暴露,可通过

混淆

、编译为

pyc

so

(Windows下为

pyd

)文件等方法起到保护源码的效果。其中,将源码编译为

so

文件是常用且较好的一种保护方法。

1 混淆

代码混淆是将函数、类名和变量名等替换为其他符号,提高了阅读的难度。

Oxyry网站

提供的在线代码混淆(或使用

pyminifier

),如下图所示:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA2NTQyOTk=,size_16,color_FFFFFF,t_70#pic_center

代码混淆简单且成本代价低,但由于未改变程序的主体结构,仅降低代码的可读性,实际对源码的保护并不是很好。

2 pyc

pyc是Python脚本编译后形成的字节文件。生成后的pyc文件可以直接

替换

对应的py文件。但需注意Python编译版本与运行版本需要一致。pyc生成并使用流程如下:

1)通过Python标准库中

py_compile

(或

compileall

)或被调用的脚本(如A.py被调用),都将在__pycache__文件夹中生成pyc文件,py_compile使用代码如下:

import py_compile

py_compile.compile(file="xxx.py") # 需转换为pyc文件在——__pycache__中

2)将pyc文件直接替换对应py文件

与其他语言相同,pyc也可以通过反编译获取源码。pyc反编译反编译通过

uncompyle6

,使用如下所示:

# 安装

pip install uncompyle6

# 使用

uncompyle6 xxx.pyc

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA2NTQyOTk=,size_16,color_FFFFFF,t_70#pic_center

3 so或pyd

so(pyd是windows平台)文件是通过cython转换为c后,再进行编译形成的文件。生成so并使用流程如下:

1)安装cython,Linux平台需安装gcc,Windows平台需安装对应版本的Visual Studio

pip install cython

2)新建一个build.py文件,内容如下

from distutils.core import setup

from Cython.Build import cythonize

setup(ext_modules = cythonize("xxx.py")) # xxxe.py是需要转换pyd的py文件

3)在终端下,输入如下命令:

python build.py build_ext

so文件在目录下的build->lib命名开头文件夹中,如下图so文件在build/lib.macosx-10.7-x86_64-3.6中:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA2NTQyOTk=,size_16,color_FFFFFF,t_70#pic_center

4)将so(或pyd)文件直接替换对应的py文件

相对混淆和pyc,so(或pyd)对保护效果最好的一种方案。但在使用时,需注意

Python版本

gcc版本

,不一致可能会发生错误。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值