像 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.
Development is hosted on GitHub. You can find the mailing list, svn, 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 BitTorrent, SpamBayes, 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
到这里整个编译流程就算完成了,可以尝试重新启动服务了。
毕竟姐姐,你也不想你的代码被人随便给抄走吧?
35 comments
java的混淆我也有了解过,不过我没有程序想跟别人共享的hhhh,自己独一无二也挺好的
现在是要部署一套代码到别人的服务器上,为了避免代码直接被拷贝,所以才需要加密
这标题,打开 feed 软件的第一眼就被吸引住了
老标题党了
夫人,你也不想……
我以前也折腾过 php2exe,然后只是玩具,后来也想不到使用场景。
的确很多东西,用一次感觉还行,但是到了生产环境就有些力不从心了。
代码被抄袭 不存在的 我们这种低端技术 想抄袭的看不懂 有点技术的压根就瞧不上 哈哈 所以 根本不用担心😂
在低端的技术,自己的代码也得看好不是,嘻嘻。
不能让人给白嫖了啊。
虽说技术不行 但只要能让代码跑起来 不报错 那就挺不错了 至于别人白嫖嘛 喜欢就拿去吧(有点技术的) 毕竟自己加的bug都不知道如何修复😂
灵妹妹有什么不可告人的秘密?
多了。哈哈哈
为啥你的班兔兔主机名可以这么长?
系统自动生成的,嘎嘎
你太懂了
这就叫专业
零代码路过。哈哈。
不写代码就用不到啦,不写 python 也用不到,嘎嘎
这个太太太实用了,吃饭的东西拿出来教,那必须学呀
也都是现成的工具
滴 高产博主~
滴 认证成功
你怎么也标题党了
老标题党了
额,看标题我以为是我以为的……内容有点跑题了
我第一眼应该是看错了
看成啥啦?
截图看起来很像Termius
Termius是一个很棒的软件
嗯嗯,是哒
真好,每次来都能学点新知识。程序媛每天都有新点子
嘻嘻
这个名字让我想起曾经的K盘
K 盘是啥?我咋不知道?求解惑
K盘>学习资料>日语学习
这个标题有东西