essential c++源码_Goldenmask - 一键化保护你的 Python 源码
项目地址:
https://github.com/youngquan/goldenmaskgithub.com
Goldenmask 直译为金色的罩子,灵感来自“金钟罩”的“翻译”。因为 Goldenmask 是一个用来对 Python 源码进行加密保护的工具,有点像金钟罩这种防御性武功的意思,因此用了金钟罩这个名字。同时,还引入了一个选项叫做 layer,对应着武功的层数,实际上则代表了不同层级的 Python 源码保护方法。当前,Goldenmask 只有两层功力,一层用的是 Python 自带的 Compileall 这个库,一层用的是 Cython 这个库,还需要继续修炼。
目前,Goldenmask 支持对 Python 文件、Python Wheel 包、Python 源码包以及 Python 模块文件夹进行加密,你可以选择替换原始的文件,也可以将加密保护后的文件放到临时的编译文件夹 __goldenmask__
里去 。此外,每一次保护,还会生成一个叫做 .goldenmask
的文件,里面记录了编译 Python 文件使用的 Python 版本( sys.version
)和操作系统信息(platform.uname()
)。因为考虑到源代码一般会通过 git 或者 svn 进行源码管理,不适合直接替换,因此保护 Python 源码的默认方式是会生成 __goldenmask__
这个文件夹的。此外,默认的保护方法是 Compileall,Cython 因为自身的限制,以及其实际的用途,有时加密效果并不是很理想。
小试牛刀
$ pip install goldenmask# 默认方法是使用 Compileall 编译为 pyc
$ goldenmask yourpythonfile.py
All done! ✨ ✨$ tree -a .
.
├── __goldenmask__
│ ├── .goldenmask
│ └── yourpythonfile.pyc
└── yourpythonfile.py1 directory, 3 files# 用生成的 .so 文件替换原始的 py 文件
$ goldenmask -i -l 2 yourpythonfile.py
All done! ✨ ✨$ tree -a .
.
├── .goldenmask
└── yourpythonfile.so0 directories, 2 files
安装方法
可以直接使用 pip 进行安装:
$ pip install -U goldenmask
当然更推荐使用虚拟环境,可以使用 Python 自带的 vevn 模块或者第三方的 virtualenv:
$ python -m venv env
# On Windows:
$ .venvScriptsactivate
# On Linux:
$ source env/bin/activate
$ pip install goldenmask --upgrade
因为 Goldenmask 依赖了 Cython 这个项目,因此你还需要确保你的机子上安装了合适的 C 代码编译器。你可以查看 Cython 的 文档 获得详细的安装方法。总的来说,根据不同的操作系统有以下三种方法:
- 在 Linux 系统上,可以使用
sudo apt-get install build-essential
或者yum groupinstall "Development Tools"
完成 C 编译器及其依赖的安装。 - 在 Macosx 系统上,安装 XCode。
- 在 Windows操作系统上,安装 MinGW 或者 Microsoft’s Visual C。
使用说明
Goldenmask 的帮助文档有详细的说明,可以直接使用 help
选项查看。
$ goldenmask --help
Usage: goldenmask [OPTIONS] [FILES_OR_DIRS]...Goldenmask is a tool to protect your python source code easily.FILES_OR_DIRS can be python files, wheel packages,source packages or dirscontain python files.Options:-l, --layer <int> Level of protection: 1 - compileall; 2 - cython.-i, --inplace Whether compile python files in place.--no_smart This will copy and compile everything you specified.--help Show this message and exit.
对 wheel 包进行保护:
$ goldenmask goldenmask-0.2.1-py3-none-any.whl
All done! ✨ ✨
$ tree -a .
.
├── __goldenmask__
│ ├── .goldenmask
│ └── goldenmask-0.2.1-py3-none-any.whl
├── .goldenmask
└── goldenmask-0.2.1-py3-none-any.whl1 directory, 4 files
对源码包进行加密:
$ goldenmask -l 2 --inplace goldenmask-0.1.2.tar.gz
running build_ext
building 'goldenmask.cli' extension
...
All done! ✨ ✨
$ tree -a .
.
├── .goldenmask
└── goldenmask-0.1.2.tar.gz
对包含 Python 代码的模块文件夹进行保护:
$ goldenmask pip-download/
All done! ✨ ✨
滴水之恩
- 感谢知乎用户 prodesire 的分享:如何加密你的 Python 代码
- 黄玉郎创作武侠漫画《龙虎门》中武功
essential c++源码_Goldenmask - 一键化保护你的 Python 源码相关推荐
- Python 源码剖析(一)—— vs2013 编译 python 源码
参考 windows环境下编译python 准备 VS 2013(其实 vs 版本编译的差异不大,设置也基本相同) python 源码文件: Python-2.7.3.tgz 编译 (1)解压 Pyt ...
- python源码剖析读书笔记总结_《Python源码剖析》读书笔记:内存垃圾回收
Python内存回收的基石是引用计数,"当一个对象的引用被创建或复制时,对象的引用技术加1:当一个对象的引用被销毁时,对象的引用技术减1",如果对象的引用计数减少为0,将对象的所占 ...
- python源码加密实现
本文参考如何保护你的 Python 代码对其想法进行实现. 源码地址:spython@github RAYENCRY rayencry使用AES算法对指定目录中的Python源码加密. 内容 背景 安 ...
- python预测算整理集合 python根据历史数据,预测未来数据 神经网络时间序列预测python 销售收入分析与预测 神经网络预测控制 Python 源码 4个lstm做数据预测的案例源代码
python 预测未来/神经网络/负荷/飞机零件故障/链路预测程序源码 1.python实现TensorFlow2股票股价预测(源码) 2.负荷预测(py thon例子,实时负荷预测,15分钟到4小时 ...
- Python源码剖析[19] —— 执行引擎之一般表达式(2)
Python源码剖析 --Python执行引擎之一般表达式(2) 本文作者: Robert Chen(search.pythoner@gmail.com ) 3.2 Simple.py 前面我 ...
- python源码剖析笔记1——Python对象初见
本文简书地址:http://www.jianshu.com/p/763f6cec7a9b 工作整两年了,用python最多,然而对于python内部机制不一定都清楚,每天沉醉于增删改查的简单逻辑编写, ...
- 初探Python字节码和dis模块
本文主要介绍 Python 字节码.Python 虚拟机内幕以及 dis 模块的简单应用.阅读本文预计 10 min. 初探Python字节码和dis模块 1. 前言 2. Python 字节码 2. ...
- 【Android 插件化】VirtualApp 源码分析 ( 目前的 API 现状 | 安装应用源码分析 | 安装按钮执行的操作 | 返回到 HomeActivity 执行的操作 )
文章目录 一.目前的 API 现状 二.安装应用源码分析 1.安装按钮执行的操作 2.返回到 HomeActivity 执行的操作 一.目前的 API 现状 下图是 VirtualApp 官方给出的集 ...
- PHP在线自动发卡网源码 全新一键安装版
介绍: PHP在线自动发卡网源码 全新一键安装版 网盘下载地址: http://kekewl.net/CMywKhQztyW0 图片:
最新文章
- 三星android获取root权限,三星G9250(S6 Edge公开版全网通 Android 5.1)获取ROOT权限详解教程...
- Python技巧:不要在for与while循环后写else块
- Oracle EM 配置常用命令
- 使用gogit 设置 http 以及 ssh 协议
- [ZJOI2010]网络扩容[网络流24题]
- nikita popov php,PHP中对performance的考虑点
- 计组之数据运算:7、定点数原码除法运算(恢复余数法、加减交替法)
- antdesignpro 重定向到登录页面_URL重定向跳转绕过
- 许昌往事之压力无处不在
- 还在死磕 Ajax?那可就 out 了!
- 6421B Lab11 为分支机构优化数据访问
- L298N——真正的玄学驱动板
- 【转载】社会网络中心性度量
- 2020年度商业书单:高瓴创始人张磊《价值》等10本书入选
- clips与C++的交互
- 使用app inventor快速开发安卓app(第一课,点击计数游戏)
- 苏宁大数据部门前端面试
- 猝死(Sudden death,SD)是人类的最严重的疾病。
- 2022年湖北武汉安全员ABC证一年考几次?什么时候考试呢?
- som神经网络聚类简单例子_基因表达聚类分析之初探SOM - 自组织特征图
热门文章
- 数学建模-14.主成分分析PCA
- Mac搭建PHP+rabbitMQ环境
- @value 静态变量_C/C++语言中的变量的4种存储类型
- python实现计算最少完美平方数
- Web API 开发入门--基于Visual Studio
- debian dhcp服务启动不了_网刻批量装系统pxe启动教程全自动分区装系统
- mysql新浪微盘_Android62期视频教程全集下载
- Spring Cloud Stream与RabbitMQ 消费者 消息分组
- signature=efaf25d07c6ea03d7552906c0caee5a8,幼児の認知発達における関係把握の問題
- wget命令详解_嵌入式学习之 Wget 命令详解