缩小/混淆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 recyclerview在上下滚动时工作不正常   java如何计算两个向量之间的角度?   Netbeans:java。lang.UnsatifiedLinkError:java中没有splashscreen。图书馆路径:   java我希望在一个方法中包含两个数组列表   linkedHashSet中的java重复项索引   java最有效的分句方法   java多个编写器一个读取器而不并发   java调用LockSupport时线程的状态。unpark()   带有开放JDK和Tomcat 9.0的Struts 2的java Servlet API转换问题   java如何将ArrayList分配给列表?   javasound java for loop的执行次数超过了metronome程序的执行次数   java OKTA在命中/groups端点时返回400错误   java IntelliJ IDEA添加库和maven依赖之间的区别   java将hashmap值交换为键   java将EBNF语法转换为上下文无关语法   适用于安卓的java Zxing条形码匹配应用程序   java kSoap2多部分/相关响应   安全java小程序socket连接问题   在线Java书籍   java使aspectj与scala模型一起工作