Python代码加密混淆
python作为一种解释型语言,源代码加密本身比较困难。但有时候我们在发布一款python产品时又必须考虑到代码的加密性,以避免源代码泄露。为此,我查阅了一些资料,研究了几种python代码加密的常见方式,在此记录一下。
源代码加密
(一)py脚本编译成pyc二进制文件
编译命令:
python -m py_compile file.py
pyc文件是一个二进制文件,但是可以被很轻松的被逆向,在线反编译工具:https://tool.lu/pyc/。当然也有针对这个问题的解决方案,解决方案是可以通过修改python源代码中的opcode,然后重新编译py代码,可以一定程度上防止被逆向,因为逆向者需要知道被修改的opcode才能还原出来。如果使用私有的Bytecode指令集,那么通常的Python反汇编器和反编译器无法工作在由你私有Python编译器产生的pyc文件上,也相当于保护了你的Python代码。但是这么做的代价是你的Python应用只能在你的私有Python解释器上运行。(实际在发布一款产品时,并不适用)
(二)py脚本打包成exe文件
exe文件针对windows平台使用,一般是使用打包程序(py2exe、PyInstaller等)打包成exe,这些工具用于将一个Python项目打包成单个可执行的文件,方便(在没有Python环境的机器上)使用。但通过压缩包可以方便地得到所有pyc文件或源文件,与C/C++编译生成的可执行文件有本质上的区别,基本上是零保护,所以需要将exe进行加壳操作。
(三)py脚本编译成c文件(cython)
用cython将核心代码py模块文件转化成.c文件,再用gcc编译成so(unix)文件,或者将其编译成pyd(windows)文件。
编译过程:
1、服务器安装依赖
pip install python
yum install python-devel gcc
2、编写setup.py文件,内容如下:
from distutils.core import setup
from Cython.Build import cythonize
setup(
ext_modules = cythonize("test.py",language_level=2)
)
# 批量编译
setup(
ext_modules = cythonize(["test.py","test2.py".......],language_level=2)
)
3、运行以下命令
python setup.py build_ext —inplace
会生成一个test.so,删除其余文件,直接引用test.so即可(跟引用py文件一样)
源代码混淆
除了加密以外,还可以对源代码进行混淆,增加源代码的阅读难度。这个有很多第三方库,我列举几个:
https://pypi.org/project/pyminifier/
https://github.com/astrand/pyobfuscate
http://pyob.oxyry.com/
pyminifier库用法:
-----------------------------------------------------
注:我这有个学习基地,里面有很多学习资料,感兴趣的+Q群:895817687
-----------------------------------------------------pyminifier -O test.py >> test_py.py
pyminifier --replacement-length=1 --obfuscate-builtins --obfuscate-import-methods --obfuscate-variables test.py
Python代码加密混淆相关推荐
- python代码加密 混淆_Python程序的混淆和加密
混淆 为了增加代码阅读的难度, 源代码的混淆非常必要, 一个在线的Python代码混淆网站. 如果你觉得有用, 可以购买离线版本. 同时需要注意的是, 这个混淆其实还是被很多人怀疑的, 因为即使混淆了 ...
- exe一机一码加密工具_Python代码加密混淆
我多想再见你 哪怕匆匆一眼就别离 python作为一种解释型语言,源代码加密本身比较困难.但有时候我们在发布一款python产品时又必须考虑到代码的加密性,以避免源代码泄露.为此,我查阅了一些资料,研 ...
- 如何防止你的代码被窃取?Python代码加密方案汇总(带实例验证)
Python代码加密方案汇总 文章目录 Python代码加密方案汇总 需求描述 基础:Python文件格式 `.py` python源代码 `.pyc` 编译得到的字节码文件 `.pyo` 编译优化后 ...
- VBA 工程代码加密混淆器,保护你的宏作品
个人制作的 VBA 代码加密混淆器,帮你加密你的宏代码,让它不再那么易读.因 VBA 的方便一直以来都喜欢用它写一些小工具,了解多了也就知道这种代码编写的工具完全没有安全性可言,工程密码形同虚设,很容 ...
- Java代码加密混淆工具有哪些?
在Java中,代码加密混淆工具可以帮助开发者将源代码进行加密和混淆处理,以增加代码的安全性和保护知识产权.以下是一些流行的Java代码加密混淆工具: 第一款:ProGuard:ProGuard Pro ...
- 【python】python代码加密与License控制
背景 在一些使用python的商业项目上,开发人员不想被用户看到源代码时,就需要对python代码进行加密:进一步地,如果想限制用户只能在获得授权的机器上运行你写的代码时(利益相关),就需要使用Lic ...
- Python代码加密:py文件转pyd文件
目前使用python语言比较多,尤其是深度学习项目,但是使用python加密比较麻烦,前期接触过几种加密的方案,但是效果都不理想,现在有一种思路比较靠谱:python原文件转pyd,然后用加密狗加密p ...
- python代码加密--pyinstaller
python代码加密需要安装pyinstaller 包 不同系统安装方法 一.windows环境下: 1.安装pyinstaller pip install pyinstaller==3.6.0 2. ...
- python 代码加密
Python代码加密步骤 1.准备文件 main.py为要加密的主脚本 import sys from PyQt5.QtWidgets import QApplication, QWidgetdef ...
最新文章
- Oracle中的MERGE语句
- 使用APIHOOK实现进程隐藏
- 百度认为什么样的网站更有抓取和收录价值
- stm32F042 (二) 按键触发中断
- Data Mining with Big Data--阅读笔记
- 初识MQ--异步通讯的优缺点
- 农民约翰是一个惊人的会计_我的朋友约翰在CSS Grid中犯了一个错误。 不要像约翰-这样做。
- 卡耐基梅隆大学CMU Brandon Amos博士论文《可微优化机器学习建模》
- android Frame-By-Frame Animations(一帧一帧地播放动画)的使用
- 跨进程的 键盘钩子_Delphi下深入Windows编程之钩子原理一
- Vue 中的列表渲染
- linuxliveu盘怎么用_linux mint 12 U盘(live usb)安装及体验
- Leetcode120.三角形的最小路径和 -- DP算法
- 比豆二机器人好的机器人_电话机器人:电话机器人哪家好?选择电话机器人的标准是什么?...
- 传奇私服网站php源码,传奇h5私服源码+教程
- android js 回调函数,Javascript回调函数传递给Android
- datamap excel插件_Excel地图插件 DataMap
- linux什么系统以dd镜像写入,linux下使用dd命令写入镜像文件到u盘
- offer?三方协议?两方协议?毁约?
- 计算机基本配置要求,BIM软件的电脑硬件配置要求