本文参考如何保护你的 Python 代码对其想法进行实现。
源码地址:spython@github

RAYENCRY

rayencry使用AES算法对指定目录中的Python源码加密。

内容

  • 背景
  • 安装
  • 使用说明
  • 修改Python源码(仅针对Python-2.7.15
  • Contributor
  • Reference

背景

由于Python为解释形语言,源码直接暴漏在生产环境中,为了防止Python源码泄露造成不必要安全问题,可以改造Python解释器用于执行加密后的python代码。

安装

1. 目录结构

目录 描述
doc 文档
src 源码
configure.json 配置文件例子
install.sh 安装脚本
uninstall.sh 卸载脚本
Makefile Makefile

2. 编译依赖

rayencry依赖libssl库,使用如下两种方法安装libssl均可:

  • apt install libssl-dev
  • 源码编译安装libssl

3. 编译安装

  • 修改decrypt_file.c中的AES密匙和AES的cbc向量。注意:均为128位。
  • 使用sudo make编译
  • 使用sudo make install或者运行脚本install.sh安装
  • 使用sudo make uninstall或者运行脚本uninstall.sh卸载
  • 使用sudo make clean清除编译结果

使用说明

1. 配置configure.json文件:

{"select":"/home/src","except":["except_file.py","except_directory"],"archive":"/home/src_en"
}
属性 必要性 类型 描述
select 必选 string 需要加密的源码目录(只能是目录)。请使用绝对地址。
except 可选 array 需要在加密文件中排除的目录或者路径。请使用相对地址。
archive 必选 string 加密目录名字(不用提前创建)。请使用绝对地址。

2. 使用rayencry加密源码目录

rayencry <config file>

修改Python源码(仅针对Python-2.7.15

下载Python-2.7.15解释器的源码并对其进行如下的修改以运行加密的Python源码:

推荐使用aliyun镜像下载python源码

1. 添加文件

复制文件./src/Python/decrypt_file_acs.cPython-2.7.15/Python
复制文件./src/Include/decrypt——fileacs.hPython-2.7.15/Python

2. 添加解密函数到Python源码中


Module/main.c
------------...
- 609            if ((fp = fopen(filename, "r")) == NULL) {
+ 609            if ((fp = d_open(filename, "r")) == NULL) {
...Python/import.c
------------...
-1579            fp = fopen(buf, filemode);
+1579            fp = d_open(buf, filemode);
...

3. 禁止生成.pyc文件

由于开发者可以通过.pyc反编译出python源代码,所以需要禁用生成.pyc文件

Module/main.c
------------...
+ 445 Py_DontWriteBytecodeFlag++;
...Python/pythonrun.c
------------...
- 194 if ((p = Py_GETENV("PYTHONDONTWRITEBYTECODE")) && *p != '\0')
- 195     Py_DontWriteBytecodeFlag = add_flag(Py_DontWriteBytecodeFlag, p);
...

4. 禁止访问字节码

./Objects/codeobject.c
------------...
- 205     {"co_code",         T_OBJECT,       OFF(co_code),           READONLY},
...

5. 修改Makefile.in.pre

Makefile需要链接libssl库,生成decrypt_source_file.o

./Makefile.pre.in
------------...
- 188 SYSLIBS= $(LIBM) $(LIBC)
+ 188 SYSLIBS=    $(LIBM) $(LIBC) -lcrypto -lssl
...
295 ##########################################################################
296 PYTHON_OBJS=   \
+ 297  Python/decrypt_source_file.o \
298     Python/_warnings.o \
299     Python/Python-ast.o \
...
752 ############################################################################
753 # Header files
754
755 PYTHON_HEADERS= \
+ 756      Include/decrypt_source_file.h \
757         Include/Python-ast.h \
758         Include/Python.h \
759         Include/abstract.h \
...

6. 编译安装Python

sudo ./configure --prefix=$PREFIX
sudo make
sudo make install

Contributor

echoechoin@github.com

QQ: 614699596

Reference

[1] 如何保护你的 Python 代码
[2] Python 2.7.18 documentation

python源码加密实现相关推荐

  1. python程序加密_项目源代码被好朋友“盗用”!让我痛心疾首!给Python源码加密!...

    在加速发展的今天,互联网是一把双刃剑,既可以让软件行业高速发展,也能让它变成到处可见的免费资源.一个软件企业想要高速发展,技术很重要,安全也相当重要,它们同时存在才能保证软件的知识产权不受侵害,实现商 ...

  2. python代码封装加密_对Python源码加密及反编译前后对比

    关于python的加密 目前软件开发商对 Python 加密时可能会有两种形式,一种是对python转成的exe进行 保护,另一种是直接对.py或者.pyc文件进行保护,下面将列举两种形式的保护流程. ...

  3. Python源码加密与Pytorch模型加密

    0.前言 深度学习领域,常常用python写代码,而且是建立在一些开源框架之上,如pytorch.在实际的项目部署中,也有用conda环境和python代码去部署服务器,在这个时候,又分为两种情况. ...

  4. python源码加密打包成pyd,编译生成pyd,加密生成pyd

    关于toollib 当我们交付python代码时,存在源码安全的问题,为了确保源码安全目前最有效的方式就是打包成pyd,为此toollib给力完美的封装. 1)安装toollib 执行命令:pip i ...

  5. 实现对python源码加密的方法

    文章目录 前言 一.将py文件编译成pyc 二.将py转化成so文件 2.1准备工作 2.2新建py2so.py文件 2.3编译项目文件夹 总结 前言 由于项目的保密性需求,对已开发完成的项目需要进行 ...

  6. 【Python基础】加密你的Python源码顺便再打个包如何?

    本篇为专属于"交通科研Lab"志愿者系列推文活动,为大家带来交通高校硕博们原创推文.为作者点赞,欢迎大家关注交流!!! 点击蓝字 关注我们 成为一个智慧.快乐和富有的人. --王宇 ...

  7. python加密反编译_对Python源码进行加密及反编译前后对比

    关于python的加密 目前软件开发商对 Python 加密时可能会有两种形式,一种是对python转成的exe进行 保护,另一种是直接对.py或者.pyc文件进行保护,下面将列举两种形式的保护流程. ...

  8. 对python源码进行编译,加密python脚本

    对python源码进行编译 1.生成.pyc文件 import py_compile py_compile.compile('hello.py') 2.优化源码文件 python -O -m py_c ...

  9. essential c++源码_Goldenmask - 一键化保护你的 Python 源码

    项目地址: https://github.com/youngquan/goldenmask​github.com Goldenmask 直译为金色的罩子,灵感来自"金钟罩"的&qu ...

最新文章

  1. java编译器 Javac 编译原理
  2. php 配置 关闭警告,php warning 关闭的方法
  3. 保护ASP.NET 应用免受 CSRF 攻击
  4. 选数游戏(ybtoj-二叉堆)
  5. C++ 读取结束的判断
  6. 适合初学者的安卓开源项目_开源系列的初学者将从下周开始
  7. 小米金融:与涉案的“山东小米金融服务外包有限公司”无关系
  8. HTML解析没有详情页url,爬虫找不到详情页URL的参数
  9. oc 协议 回调 静态成员_OC问题
  10. 扫地机器人单扫和双扫_618买扫地机器人前必看 别图便宜 小心入坑!
  11. android:一个容易被遗忘的强大工具
  12. ftp linux 开启验证_Linux认证系统管理:linux下搭建ftp
  13. LaTex - PPT 模板-3 (亲测可用)
  14. 营业执照15位注册号码含义和查询规则
  15. idea 配置svn插件
  16. 计算机网络路由交换技术运用,计算机网络路由交换的技术应用与发展趋势研究...
  17. VS安装包下载和环境配置
  18. Selenium 爬虫应用的学习
  19. 计算机设备的快捷命令,快速打开设备管理器的快捷键教程
  20. libzip解压缩方法分析

热门文章

  1. 水彩画工具JixiPix Aquarella for Mac
  2. 【随堂习题1】用Python编写猜拳游戏
  3. 苹果cmsv10仿韩剧网好看的高端简约免费自适应模板
  4. 飞机电子式模拟空速表的设计与制作
  5. [转载]好莱坞故事创意手册!
  6. 苹果无线显示与电视连接电脑连接电脑连接服务器,平板电脑怎样连接电视机?...
  7. 让别人快乐地捐钱:英国人的慈善教育
  8. bom翻译中文_电器BOM表中英文对照
  9. 双正电气变频器说明书_【132G-A3 通用型变频器 高品质变频器】_浙江双正电气有限公司...
  10. 软考高级 真题 2013年上半年 信息系统项目管理师 论文