大家有好的Python代码保护方案吗,希望不要有人说我不支持开源。。。

2011-12-23 23:28:50 +08:00
 oldgun
在google上搜了一圈暂时没发现靠谱成熟的方案,不知道这里有没有人有经验?
8818 次点击
所在节点    Python
28 条回复
c
2011-12-23 23:33:03 +08:00
我原来也想加密自己代码,后来想想自己写的乱代码有人看吗?所以就无所谓了
vicalloy
2011-12-23 23:39:04 +08:00
只发布pyc
laihj
2011-12-23 23:40:45 +08:00
别发布
oldgun
2011-12-24 01:17:44 +08:00
@vicalloy pyc可以轻易被反编译的
alsotang
2011-12-24 01:35:23 +08:00
@vicalloy @oldgun pyc理论上很容易反编译。你看看能不能用ironpython或者jython来生成对应的.class文件?不过说起来.class文件也是可以反编译,比C++的二进制方便多了。
可能说起来这些解释型的语言都很难保密吧。
and,你可以把系统里面关键的部分用C++改写,然后python调用生成的二进制.so或.a,这样应该就跟C++写的程序一个保密级别了吧?毕竟要保密的部分不是整个代码啊。但这也只能保密关键算法部分,要是想保密逻辑...可能就真的要C++全部改写了。
不知我的回答有没有帮助。
windhunter
2011-12-24 01:35:44 +08:00
我也有类似的苦恼。

有时候不是不想开源,而是客观条件不允许。比如某些客户的某些内部数据规范无法公开。通常情况下,只好放弃使用python。选择其他的解决方案。

目前我所知道的比较靠谱的方法是:
修改python源码,改写生成pyc的部分,造成生成的pyc只能在自己的python解释器上使用。

而代价是:程序离开了定制的解释器就跑不了。(有源码还是可以的,pyc不行)

我理解社区对于python开源的心态。
不过,我想知道的是,同样php也是开源,但有不少混淆器出现。(商业的非商业的都有)
perl也是开源,貌似也有不错的混淆器(可惜perl不好读写)

相比而言,只是php有zend这个公司支持,python没有。仅仅是这个区别就造成了python没有优秀混淆器的出现么?
windhunter
2011-12-24 01:38:17 +08:00
@alsotang load c库的办法看来也不错。
lijia18
2011-12-24 04:38:01 +08:00
混淆用处不大,别人想看照看。再者说网站逻辑需要很高的保密吗?大的网站给你代码你也看不懂,小的网站不用代码别人就能copy的一模一样。与其保护代码不如花心思在保护数据上吧。
tioover
2011-12-24 15:16:49 +08:00
我记得有本书叫python黑帽客讲的就是反编译python,应该有解决方法
reducm
2011-12-24 15:36:21 +08:00
用非脚本语言编译成二进制包装下行么
oldgun
2011-12-24 17:37:27 +08:00
@alsotang 保护关键代码这个是常用办法,但正如你说的有时候需要保护的还有逻辑。
@windhunter 你说的是修改字节码吧,但我想有你的解释器,一样可以看的。
@lijia18 python不是只用来写网站的
dndx
2011-12-24 18:13:23 +08:00
纯Python没这潜力,最靠谱的还是C extension。
skywinger
2011-12-24 18:59:41 +08:00
加壳吧,加一个bin可执行码的壳。
bhuztez
2011-12-24 19:04:29 +08:00
据说只要改用Perl写一遍就可以了
skydark
2011-12-24 19:17:17 +08:00
用cython快速改装成C模块?
mywaiting
2011-12-24 20:24:19 +08:00
@bhuztez 这是讽刺Perl的么.....完全亮了......
alsotang
2011-12-25 15:27:08 +08:00
@mywaiting @bhuztez 确实亮。
Hyperion
2011-12-25 15:42:54 +08:00
@dndx +1 记得, 有篇文章里说过: python要保密, 就去写块c...
ant_sz
2011-12-25 22:10:27 +08:00
@skydark cython?还有这种神器?我去google下
oldgun
2011-12-26 23:52:09 +08:00
小程序,桌面应用,决定换c#,实现起来应该不python容易。
讨论到此结束,谢谢大家!

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

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

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

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

© 2021 V2EX