缩小/混淆Python3源代码

mnf的Python项目详细描述


^{tt1}$ — minify/obfuscate Python 3 source code

What the heck is mnfy for?

创建mnfy项目有两个原因:

  • 为了显示在没有源代码的情况下传送字节码文件,作为一种混淆的形式, 不是最好的选择
  • 当源代码的总字节大小为 代码至上

当人们只将python代码作为字节码文件(即仅.pyo文件)发布时 而且没有.py文件),有两个缺点。首先,也是最重要的 防止用户将您的代码与所有可用的python解释器一起使用,例如 作为JythonIronPython。另一个缺点是它是 像Meta这样的模糊处理项目允许您获取字节码和 对原始源代码进行反向工程,因为保留了足够多的细节, 唯一缺少的细节是单行注释。

当用于传送python代码的总字节数至关重要时,则 你想缩小源代码。字节码文件实际上包含这么多 节省空间的细节可以很小(例如decimal模块 python的标准libary是stdlib中最大的单个文件,它有一个 字节码文件,仅比原始源代码小5%)。

Usage

A note about version numbers and Python version compatibility

mnfy的版本号是PEP 386兼容的,形式为 PPP.FFF.BBBFFF.BBB表示功能和错误修复版本 mnfy本身的数量。版本号的PPP部分表示 mnfy兼容的python版本: '{}{}'.format(*sys.version_info[:2])

mnfy兼容的python版本直接嵌入到版本中 作为python的ast的数字不能保证向后兼容。这意味着 您应该将mnfy的每个版本与特定版本的python一起使用。 由于mnfy使用源代码而不是字节码,因此可以安全地使用 mnfy的代码必须向后兼容旧版本的python, 只需确保与mnfy一起使用的解释器是正确的,并且可以解析 源代码(例如,仅仅因为 最新版本的mnfy只适用于python 3.3并不意味着您不能 对必须与Python3.2一起工作的源代码使用该版本,只需使 确保在mnfy中使用python 3.3解释器,并且源代码可以是 由python 3.3解释器读取)。

Command-line Usage

tl;dr:将要作为参数缩小的文件传递给mnfy,它将 打印到stdout缩小的源代码,以便ast正好是。 与原始源代码相同。获取将更改 ast在不同程度上,您需要指定各种标志。

有关用法的完整说明,请参见项目的帮助消息:

python3 -m mnfy -h
python3 mnfy.py -h

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Cassandra DB的javascript查询结果   java定时器任务调度   java在TLS上实现LDAP   为什么在浏览器中滚动会使java小程序闪烁?   未使用轮询器和serviceactivator提取java pubsub消息   java风暴多线程问题   java计算平均成绩   java将字符串添加到另一个类的数组列表中   文件Java路径如何转换为例如InputStream   java更改JComboBox的字体颜色   java inthttp:具有可轮询请求通道的inboundgateway   使用继承在Java中运行swing Base和扩展windows   java ivysettings。xml:添加本地maven路径   java如何将参数自定义视图传递给activity类   java延迟加载无法在Hibernate中使用一对一映射   当文件以“file:/”开头时,Java无法识别该文件   需要java正则表达式帮助,使用反斜杠   片段中的java GWT参数