跳转到主要内容

压缩/混淆Python 3源代码

项目描述

mnfy — 压缩/混淆Python 3源代码

网页

mnfy究竟有什么用?

mnfy项目创建的两个原因

  • 为了证明在作为混淆形式分发字节码文件而不包含源代码并不是最佳选择

  • 当源代码的总字节大小至关重要时,提供Python源代码的压缩版本

当人们仅以字节码文件的形式分发Python代码(即仅.pyo文件而没有.py文件)时,有几个缺点。首先,它阻止用户使用所有可用的Python解释器,例如JythonIronPython。另一个缺点是,它是一种很差的混淆形式,因为像Meta这样的项目允许您将字节码反向工程为原始源代码,因为保留了足够的信息,唯一缺失的是单行注释。

当使用字节码传输Python代码的字节数至关重要时,您需要压缩源代码。字节码文件包含大量细节,因此节省的空间可能微乎其微(例如,Python标准库中的decimal模块,它是stdlib中最大的单个文件,其字节码文件比原始源代码仅小5%)。

用法

关于版本号和Python版本兼容性的注意事项

mnfy的版本号遵循PEP 386规范,格式为PPP.FFF.BBB。其中FFF.BBB代表mnfy本身的特性和错误修复版本号。版本号中的PPP部分代表mnfy兼容的Python版本:'{}{}'.format(*sys.version_info[:2])

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

命令行用法

TL;DR:将您想要压缩的文件作为参数传递给mnfy,它将打印到stdout,以使AST与原始源代码完全相同的方式压缩源代码。要获取将AST以不同程度更改的转换,您需要指定各种标志。

有关使用说明,请参阅项目的帮助信息

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

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

此版本没有可用的源代码分发文件。有关生成分发存档的教程,请参阅此处

构建分发

mnfy-34.0.0-py3-none-any.whl (13.4 kB 查看散列值)

上传时间: Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面