V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
oldgun
V2EX  ›  Python

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

  •  
  •   oldgun · 2011-12-23 23:28:50 +08:00 · 8916 次点击
    这是一个创建于 4724 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在google上搜了一圈暂时没发现靠谱成熟的方案,不知道这里有没有人有经验?
    28 条回复    1970-01-01 08:00:00 +08:00
    c
        1
    c  
       2011-12-23 23:33:03 +08:00
    我原来也想加密自己代码,后来想想自己写的乱代码有人看吗?所以就无所谓了
    vicalloy
        2
    vicalloy  
       2011-12-23 23:39:04 +08:00
    只发布pyc
    laihj
        3
    laihj  
       2011-12-23 23:40:45 +08:00
    别发布
    oldgun
        4
    oldgun  
    OP
       2011-12-24 01:17:44 +08:00
    @vicalloy pyc可以轻易被反编译的
    alsotang
        5
    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
        6
    windhunter  
       2011-12-24 01:35:44 +08:00
    我也有类似的苦恼。

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

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

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

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

    相比而言,只是php有zend这个公司支持,python没有。仅仅是这个区别就造成了python没有优秀混淆器的出现么?
    windhunter
        7
    windhunter  
       2011-12-24 01:38:17 +08:00
    @alsotang load c库的办法看来也不错。
    lijia18
        8
    lijia18  
       2011-12-24 04:38:01 +08:00
    混淆用处不大,别人想看照看。再者说网站逻辑需要很高的保密吗?大的网站给你代码你也看不懂,小的网站不用代码别人就能copy的一模一样。与其保护代码不如花心思在保护数据上吧。
    tioover
        9
    tioover  
       2011-12-24 15:16:49 +08:00
    我记得有本书叫python黑帽客讲的就是反编译python,应该有解决方法
    reducm
        10
    reducm  
       2011-12-24 15:36:21 +08:00 via Android
    用非脚本语言编译成二进制包装下行么
    oldgun
        11
    oldgun  
    OP
       2011-12-24 17:37:27 +08:00
    @alsotang 保护关键代码这个是常用办法,但正如你说的有时候需要保护的还有逻辑。
    @windhunter 你说的是修改字节码吧,但我想有你的解释器,一样可以看的。
    @lijia18 python不是只用来写网站的
    dndx
        12
    dndx  
       2011-12-24 18:13:23 +08:00
    纯Python没这潜力,最靠谱的还是C extension。
    skywinger
        13
    skywinger  
       2011-12-24 18:59:41 +08:00
    加壳吧,加一个bin可执行码的壳。
    bhuztez
        14
    bhuztez  
       2011-12-24 19:04:29 +08:00
    据说只要改用Perl写一遍就可以了
    skydark
        15
    skydark  
       2011-12-24 19:17:17 +08:00
    用cython快速改装成C模块?
    mywaiting
        16
    mywaiting  
       2011-12-24 20:24:19 +08:00
    @bhuztez 这是讽刺Perl的么.....完全亮了......
    alsotang
        17
    alsotang  
       2011-12-25 15:27:08 +08:00
    @mywaiting @bhuztez 确实亮。
    Hyperion
        18
    Hyperion  
       2011-12-25 15:42:54 +08:00
    @dndx +1 记得, 有篇文章里说过: python要保密, 就去写块c...
    ant_sz
        19
    ant_sz  
       2011-12-25 22:10:27 +08:00
    @skydark cython?还有这种神器?我去google下
    oldgun
        20
    oldgun  
    OP
       2011-12-26 23:52:09 +08:00
    小程序,桌面应用,决定换c#,实现起来应该不python容易。
    讨论到此结束,谢谢大家!
    oldgun
        21
    oldgun  
    OP
       2011-12-26 23:52:31 +08:00
    比python容易。
    likuku
        22
    likuku  
       2011-12-27 00:00:08 +08:00
    法制环境,用户习惯,固有文化。技术因素影响很少了。
    skywinger
        23
    skywinger  
       2011-12-27 00:01:24 +08:00
    楼主C#的也不安全,照样可以反编译出来,除非用c、c++、delphi这类的原生编译型语言。
    oldgun
        24
    oldgun  
    OP
       2011-12-27 00:10:52 +08:00
    @skywinger 至少比python好点,而且实现起来容易,并且用户比较固定,问题不大。
    python太裸奔了。
    oldgun
        25
    oldgun  
    OP
       2011-12-27 00:12:21 +08:00
    @skywinger 题外话,delphi现在状况如何?
    skywinger
        26
    skywinger  
       2011-12-27 00:45:07 +08:00
    @oldgun delphi据说目前可以跨平台可开发ios应用,具体的不大清楚。
    so898
        27
    so898  
       2011-12-27 00:47:25 +08:00
    JAVA也是面临一样的问题,好在JAVA这边的混淆器这么多年已经成熟了
    PYTHON的话,纯服务器端,只给交互接口的话是个比较好的保护方案,不过这个只能给服务器应用……
    jint
        28
    jint  
       2012-01-04 16:20:32 +08:00
    其实代码的价值没有想象的那么大,如果真是有广大市场的领域,再复杂的加密都有人能破解,
    你去卖盗版盘那里一看,什么软件都有。这是从你的客户层面说。
    从竞争者层面说,如果潜在利益够大,照着你的软件山寨一个都可以。
    真正的价值,在于你对相关业务逻辑或者商业模型的理解,以及融合到软件中的能力,这才是壁垒。
    我只是说说对大部分没太多技术含量的软件的看法,OS之类高难的不论。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2890 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:34 · PVG 21:34 · LAX 05:34 · JFK 08:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.