Python代码部署的三种加密方案

 更新时间:2023年02月06日 09:59:21   作者:木尧大兄弟  
本文主要介绍了Python代码部署的三种加密方案,主要介绍了代码混淆、代码编译、代码打包这三种,具有一定的参考价值,感兴趣的可以了解一下

前言

最近需要源码部署一个项目,因此探索一下保护源码的方式,由简单到复杂主要总结为以下三大类:

  • 代码混淆:主要是改变一些函数名、变量名
  • 代码打包:思路是把Python代码打包成 .exe 的可执行文件
  • 代码编译:思路是将Python代码编译成C,然后编译成动态链接库文件(linux的.so、windows的.dll)

一、代码混淆

代码混淆主要是改变一些函数名、变量名。可使用 Oxyry 对关键源码进行混淆,效果如下:

在这里插入图片描述

这种只是降低了代码可读性,严格意义上算不上是加密,不过针对足以应对一大半甲方了(哈哈哈)

二、代码打包

可以用 py2exe 或者 Nuitka 将代码打包成 exe 文件,不过只能从windows系统上运行,也可用 pyinstaller 打包,不过容易被攻破。不太符合我的需求,因此这种方式先立flag,等用到再说。

三、代码编译

这里使用 PyArmor 进行操作。这个工具能加密 Python 脚本,还能有效期限,绑定加密脚本到硬盘、网卡等硬件设备(试用版可以免费用)。

官方文档:https://pyarmor.readthedocs.io
安装:pip install pyarmor
升级:pip install --upgrade pyarmor
查看版本:pyarmor -v
基本语法:pyarmor [command] [options]

3.1 pyarmor快速使用

代码加密:执行 pyarmor obfuscate server.py,就会把 server.py 作为入口函数且将同目录下的 py 文件加密到 ./dist 文件夹中(如果递归加密子目录下py文件可执行 pyarmor obfuscate --recursive server.py )。加密后端的代码长这样:

在这里插入图片描述

对于不同操作系统,会编译生成不同格式的动态链接库文件:

在这里插入图片描述

生成的dist目录内容如下:

在这里插入图片描述

运行脚本:cd到 ./dist 文件夹正常执行 python server.py 即可(运行加密后的脚本用到 pytransform,但不用安装 pyarmor 了)。

3.2 pyarmor进阶使用

设置过期时间:执行代码 pyarmor licenses --expired 2022-01-01 r001,则在dist同级的当前目录生成 licenses 文件夹:

在这里插入图片描述

此外,如果要绑定mac地址或者硬盘,可以执行 pyarmor hdinfo 查看硬件信息,然后执行pyarmor licenses --bind-disk "xxxxxx" --bind-mac "xx:xx:xx:xx:xx:xx" r002 生成证书。

生成证书后,带上 licenses 执行加密命令:pyarmor obfuscate --with-license licenses/r001/license.lic server.py,生成 dist 后 cd 进去再执行,如果时间过期了(或硬件不对),就会报错(此时即使删掉 licenses 文件夹也没啥用)。

参考文献:
[1] 介绍几种 Python 加密源代码的方法
[2] 使用 PyArmor(官方文档)

到此这篇关于Python代码部署的三种加密方案的文章就介绍到这了,更多相关Python代码加密内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Python3 Boto3包删除AWS CloudFormation的栈(Stacks)

    使用Python3 Boto3包删除AWS CloudFormation的栈(Stacks)

    这篇文章主要介绍了如何使用Python3 Boto3删除AWS CloudFormation的栈(Stacks),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-01-01
  • Python从Excel读取数据并使用Matplotlib绘制成二维图像

    Python从Excel读取数据并使用Matplotlib绘制成二维图像

    本课程实现使用 Python 从 Excel 读取数据,并使用 Matplotlib 绘制成二维图像。这一过程中,将通过一系列操作来美化图像,最终得到一个可以出版级别的图像。本课程对于需要书写实验报告,学位论文,发表文章,做报告的学员具有较大价值
    2023-02-02
  • Python合并同一个文件夹下所有PDF文件的方法

    Python合并同一个文件夹下所有PDF文件的方法

    今天小编就为大家分享一篇关于Python合并同一个文件夹下所有PDF文件的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Django的models模型的具体使用

    Django的models模型的具体使用

    这篇文章主要介绍了Django的models模型的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • pyinstaller打包后,配置文件无法正常读取的解决

    pyinstaller打包后,配置文件无法正常读取的解决

    这篇文章主要介绍了pyinstaller打包后,配置文件无法正常读取的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • 基于打开pycharm有带图片md文件卡死问题的解决

    基于打开pycharm有带图片md文件卡死问题的解决

    这篇文章主要介绍了基于打开pycharm有带图片md文件卡死问题的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • python实现dbscan算法

    python实现dbscan算法

    DBSCAN 算法是一种基于密度的空间聚类算法,本文主要介绍了python实现dbscan算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • 使用Python对Dicom文件进行读取与写入的实现

    使用Python对Dicom文件进行读取与写入的实现

    这篇文章主要介绍了使用Python对Dicom文件进行读取与写入的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • 使用Keras实现Tensor的相乘和相加代码

    使用Keras实现Tensor的相乘和相加代码

    这篇文章主要介绍了使用Keras实现Tensor的相乘和相加代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python 迭代器介绍及作用详情

    Python 迭代器介绍及作用详情

    这篇文章主要介绍了Python 迭代器介绍及作用详情,Python 中的迭代器是一个对象,用于迭代列表、元组、字典和集合等可迭代对象,文章围绕主题展开详细的内容介绍,需要的朋友可以参考一下
    2022-07-07

最新评论