Python 代码的加密问题

2019-11-29 13:57:20 +08:00
 1419co1in

团队开发了一个 Web 系统,后端用的是 Python/Django,现在想把它卖给客户,但是领导要求代码加密(不能看见源码),不让直接把源码部署在阿里云上或者客户的主机上,怕源码泄漏被二次贩卖或者修改授权。

如何说服领导或者有什么办法加密代码?

7100 次点击
所在节点    Python
29 条回复
linlance
2019-11-29 13:59:03 +08:00
好像没啥办法吧。。。听听其他大牛怎么说。

这种按照法律,版权不是就是归甲方么?
你们是干活的。。。。干活的不是乙方么?
woshifyz
2019-11-29 14:01:01 +08:00
这个是个老问题了,没啥特别完美的办法,找些关键地方,用 cython 重写下吧
qile1
2019-11-29 14:02:51 +08:00
dack 那个直接做成那样的发布可以不,更新就更新容器
whoosy
2019-11-29 14:06:20 +08:00
google 去搜 Cpython 编译 python 代码
vakara
2019-11-29 14:06:56 +08:00
用 pyinstaller
1419co1in
2019-11-29 14:10:51 +08:00
@linlance 可能不想卖代码,想用定期授权的方式
catcalse
2019-11-29 14:13:33 +08:00
pyd
Hanggi
2019-11-29 14:13:33 +08:00
这个是这样,一种是你们提供后期的服务,这种情况下你们可以全权负责维护等工作,当然这样成本太高。
如果把程序卖给客户,而客户对代码不可见,且后期无法做任何修改,那么维护和更新谁来做呢?
1419co1in
2019-11-29 14:17:04 +08:00
@vakara 试过,可能对 Django 兼容性不行,各种 import 错误,后来放弃了
wangyzj
2019-11-29 14:22:01 +08:00
cython
pypy
pyinstaller
实际上原理都差不多
1419co1in
2019-11-29 14:22:17 +08:00
@qile1 你说的是 docker 吗,docker 镜像和容器里的东西可以直接拿到的
1419co1in
2019-11-29 14:25:07 +08:00
@woshifyz 看来这能用这种方法了
keakon
2019-11-29 14:26:59 +08:00
我是用 cython 编译所有模块,main.py 里只 import 和调用 run()。
wuwukai007
2019-11-29 14:34:08 +08:00
一个小 demo,转成 pyc,放在项目的相同目录下,
https://gist.github.com/tosmart01/a048fc56ff967f7e8a1f173a514f73b2
nyanyh
2019-11-29 14:40:45 +08:00
自己修改编译个 python 解释器,修改下字节码对应的指令
但想破解的话肯定是能弄出来的,关键代码用 C 写吧
CallMeReznov
2019-11-29 14:40:53 +08:00
@vakara #5 我昨天次啊把我不小心删掉的脚本用 exe 反编译回来


不过可以试试用 pyinstaller 编译后在加一层壳
如果不是专业队,应该是不会从网上随便找的教程里把你的东西反编译出来了
CallMeReznov
2019-11-29 14:41:35 +08:00
@1419co1in #9 把包直接复制到工程文件夹下面好像就可以了
agegcn
2019-11-29 14:44:27 +08:00
cython 编译几个核心模块,包括授权的
CEBBCAT
2019-11-29 16:02:59 +08:00
这个问题已经有人问过了呀
[Python 代码不能加密?]( https://www.v2ex.com/t/348602)
[一般 Python 服务部署在公有云服务器上,如何做代码保护?]( https://www.v2ex.com/t/403957)
提问前记得搜索喔
imn1
2019-11-29 16:10:07 +08:00
我给的建议是:
整体加密不实际
把一些核心算法、关键业务模块,转为 C/C++打包的 dll/so,由 python ctype 调用,这样可能更实际一些

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/624292

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX