缩小/混淆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第三方库


热门话题
java将变量从一个类发送到另一个类   使用Java Kubernetes客户端Api部署pod   sql如何从oracle检索图像并在java框架中显示   java更改Clover检测类的位置   java安卓位置。getAccuracy()返回1   运行时。不支持Java ME 8上的exec()。还有别的选择吗?   bdd在Java中运行Cucumber时修改CucumberOptions标记   在java中将方法更改为运行时异常   构造函数类中的Java NullPointerException   java SetResizeable(false)不会阻止双击后的帧还原   java智能卡终端移除:SCARD_E_无服务卡例外   Java正则表达式和组   爪哇骑士巡回赛   端口8443上通过ssl的java Spring安全登录在使用http协议的端口8080上无法识别   java如何确定读取文件的哪一行特定行