姐姐,你也不想让别人知道你的秘密吧? — 浅谈 Python 代码加密

像 python 这种非编译型的语言,在代码加密上有这先天性的弱势,虽然java 之类的编译成 jar 依然比较容易反编译回来,但是毕竟也算是提升了那么一点点门槛,再加上混淆神马的,基本就能避免一些入门级的破解了。

但是对于 python 这种,如果发布不想直接让别人看代码,最简单的办法就是打包成二进制。通常的做法就是 py2exe.

官网地址:https://www.py2exe.org

py2exe

py2exe is a Python Distutils extension which converts Python scripts into executable Windows programs, able to run without requiring a Python installation.Spice

Development is hosted on GitHub. You can find the mailing listsvn, and downloads for Python 2 there. Downloads for Python 3 are on PyPI.

py2exe was originally developed by Thomas Heller who still makes contributions. Jimmy Retzlaff, Mark Hammond, and Alberto Sottile have also made contributions. Code contributions are always welcome from the community and many people provide invaluable help on the mailing list and the Wiki.

py2exe is used by BitTorrentSpamBayes, and thousands more – py2exe averages over 5,000 downloads per month.

In an effort to limit Wiki spam, this front page is not editable. Feel free to edit other pages with content relevant to py2exe. You will need an account to edit (but not to read) and your account information will be used only for the purposes of administering this Wiki.

The old py2exe web site is still available until that information has found its way into this wiki.

之前发布的各种美女爬虫基本都是通过 py2exe 打包的,虽然体积比较大,但是整体来说效果还算不错。

但是对于 web 框架,例如 flask django 之类的该怎么打包?这个就稍显麻烦一些了。

搜索一下,也能找到一些工具,例如 https://github.com/amchii/encryptpy 这个东西底层还是通过 cython 来实现的,如果不想使用这个工具,那么直接使用 cython 也是可以的,至于原理,本质上是直接把 py代码编译成了二进制文件。

下面直接用 cython 来实现:

pip install cython

编写编译脚本,叫什么无所谓,这里我的名称是cython_build.py:

from distutils.core import setup
from Cython.Build import cythonize

setup(
    ext_modules=cythonize(["application/settings.py",
                           "PowerManagement/models.py",
                           "PowerManagement/views/meter.py",
                           "PowerManagement/views/meter_remote.py",
                           "PowerManagement/views/substation_picture.py",
                           "PowerManagement/views/circuit.py",
                           ])
)

建议将上面的代码放在项目的根目录下,要处理的 modules 使用相对路径来实现。

通过下面的命令编译 py 文件:

python3 cython_build.py build_ext --inplace

但是上面的代码有个问题,那就是–inplace 并没有吧所有的 so文件放到原来的目录下,编译之后,一些文件放到了项目根目录下:

扩展名为 so 的文件就是编译生成的二进制文件,此时如果直接运行项目会提示各种组件找不到,还需要将处理后的文件复制到原来的目录下:

mv *.so PowerManagement/views/

最后一步就是删除原来的 py 文件:

cd "PowerManagement/views/"
rm  *.py

到这里整个编译流程就算完成了,可以尝试重新启动服务了。

毕竟姐姐,你也不想你的代码被人随便给抄走吧?

☆版权☆

* 网站名称:obaby@mars
* 网址:https://oba.by/
* 个性:https://oba.by/
* 本文标题: 《姐姐,你也不想让别人知道你的秘密吧? — 浅谈 Python 代码加密》
* 本文链接:https://oba.by/2024/08/17891
* 短链接:https://oba.by/?p=17891
* 转载文章请标明文章来源,原文标题以及原文链接。请遵从 《署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5 CN) 》许可协议。


You may also like

35 comments

  1.  Level 5
    Microsoft Edge 126 Microsoft Edge 126 Windows 11 Windows 11 cn广东省珠海市 电信

    java的混淆我也有了解过,不过我没有程序想跟别人共享的hhhh,自己独一无二也挺好的

    1. 公主 Queen 
      Google Chrome 126 Google Chrome 126 Mac OS X 10.15 Mac OS X 10.15 cn山东省青岛市 联通

      现在是要部署一套代码到别人的服务器上,为了避免代码直接被拷贝,所以才需要加密

  2.   Level 6
    Google Chrome 127 Google Chrome 127 Mac OS X 10.15 Mac OS X 10.15 cn浙江省杭州市 联通

    我以前也折腾过 php2exe,然后只是玩具,后来也想不到使用场景。

    1. 公主 Queen 
      Google Chrome 126 Google Chrome 126 Mac OS X 10.15 Mac OS X 10.15 cn山东省青岛市 联通

      的确很多东西,用一次感觉还行,但是到了生产环境就有些力不从心了。

  3.  Level 4
    Google Chrome 127 Google Chrome 127 GNU/Linux GNU/Linux cn贵州省贵阳市 移动

    代码被抄袭 不存在的 我们这种低端技术 想抄袭的看不懂 有点技术的压根就瞧不上 哈哈 所以 根本不用担心😂

    1. 公主 Queen 
      Google Chrome 126 Google Chrome 126 Mac OS X 10.15 Mac OS X 10.15 cn山东省青岛市 联通

      在低端的技术,自己的代码也得看好不是,嘻嘻。
      不能让人给白嫖了啊。

      1.  Level 4
        Google Chrome 127 Google Chrome 127 GNU/Linux GNU/Linux cn贵州省贵阳市 移动

        虽说技术不行 但只要能让代码跑起来 不报错 那就挺不错了 至于别人白嫖嘛 喜欢就拿去吧(有点技术的) 毕竟自己加的bug都不知道如何修复😂

  4. Level 5
    Microsoft Edge 126 Microsoft Edge 126 Windows 10 Windows 10 us美国加利福尼亚州洛杉矶 南宁云计算数据中心机房

    灵妹妹有什么不可告人的秘密?

    1. 公主 Queen 
      Google Chrome 126 Google Chrome 126 Mac OS X 10.15 Mac OS X 10.15 cn山东省青岛市 联通

      不写代码就用不到啦,不写 python 也用不到,嘎嘎

  5. Level 4
    Microsoft Edge 128 Microsoft Edge 128 Windows 10 Windows 10 cn重庆市 移动

    真好,每次来都能学点新知识。程序媛每天都有新点子

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注