团队开发了一个 Web 系统,后端用的是 Python/Django,现在想把它卖给客户,但是领导要求代码加密(不能看见源码),不让直接把源码部署在阿里云上或者客户的主机上,怕源码泄漏被二次贩卖或者修改授权。
如何说服领导或者有什么办法加密代码?
1
linlance 2019-11-29 13:59:03 +08:00
好像没啥办法吧。。。听听其他大牛怎么说。
这种按照法律,版权不是就是归甲方么? 你们是干活的。。。。干活的不是乙方么? |
2
woshifyz 2019-11-29 14:01:01 +08:00
这个是个老问题了,没啥特别完美的办法,找些关键地方,用 cython 重写下吧
|
3
qile1 2019-11-29 14:02:51 +08:00 via Android
dack 那个直接做成那样的发布可以不,更新就更新容器
|
4
whoosy 2019-11-29 14:06:20 +08:00
google 去搜 Cpython 编译 python 代码
|
5
vakara 2019-11-29 14:06:56 +08:00 via Android
用 pyinstaller
|
7
catcalse 2019-11-29 14:13:33 +08:00
pyd
|
8
Hanggi 2019-11-29 14:13:33 +08:00
这个是这样,一种是你们提供后期的服务,这种情况下你们可以全权负责维护等工作,当然这样成本太高。
如果把程序卖给客户,而客户对代码不可见,且后期无法做任何修改,那么维护和更新谁来做呢? |
10
wangyzj 2019-11-29 14:22:01 +08:00
cython
pypy pyinstaller 实际上原理都差不多 |
14
wuwukai007 2019-11-29 14:34:08 +08:00
一个小 demo,转成 pyc,放在项目的相同目录下,
https://gist.github.com/tosmart01/a048fc56ff967f7e8a1f173a514f73b2 |
15
nyanyh 2019-11-29 14:40:45 +08:00
自己修改编译个 python 解释器,修改下字节码对应的指令
但想破解的话肯定是能弄出来的,关键代码用 C 写吧 |
16
CallMeReznov 2019-11-29 14:40:53 +08:00
|
17
CallMeReznov 2019-11-29 14:41:35 +08:00
@1419co1in #9 把包直接复制到工程文件夹下面好像就可以了
|
18
agegcn 2019-11-29 14:44:27 +08:00
cython 编译几个核心模块,包括授权的
|
19
CEBBCAT 2019-11-29 16:02:59 +08:00 1
这个问题已经有人问过了呀
[Python 代码不能加密?]( https://www.v2ex.com/t/348602) [一般 Python 服务部署在公有云服务器上,如何做代码保护?]( https://www.v2ex.com/t/403957) 提问前记得搜索喔 |
20
imn1 2019-11-29 16:10:07 +08:00
我给的建议是:
整体加密不实际 把一些核心算法、关键业务模块,转为 C/C++打包的 dll/so,由 python ctype 调用,这样可能更实际一些 |
22
ungrown 2019-11-29 16:11:25 +08:00 via Android
@woshifyz 纯 python 代码可以直接用 cython 编译成二进制库,只不过无法享受到静态类型带来的速度优化罢了
|
23
crawl3r 2019-11-29 16:30:25 +08:00
最简单的方法是卖服务器或者虚拟机镜像,设置脚本开机启动,然后不给登录账号密码。这样他们只能用但看不到源码。
|
24
qile1 2019-11-29 19:53:31 +08:00 via Android
要不你编译为 pyc,然后写个 py 代码,在 pyc 文件前面插入一些二进制文件,运行时跳过这些二进制字符运行?
|
25
0x5f 2019-11-29 20:27:54 +08:00
上次好像看到一个老哥说的是代码跑起来之后把代码删了
|
26
EurekaSeven 2019-11-29 21:11:51 +08:00
@0x5f 这个挺狠。。。话说以前我做外包的时候老板就是让我们搞这种,我们顶多做个 pyc 罢了。。
|
27
HuberyPang 2019-11-30 09:32:14 +08:00
https://github.com/ArvinMei/py2so github star 的一个项目 把 python 代码打包成.so 不过这个打包环境和部署环境要一样 。我们的项目也是 django 的 把核心代码加密 不影响项项目运行。这个是项目是之前作者 python2 版本写的,自己修改一下就能用。
|