V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
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 · Dec 23, 2011 · 9527 views
    This topic created in 5251 days ago, the information mentioned may be changed or developed.
    在google上搜了一圈暂时没发现靠谱成熟的方案,不知道这里有没有人有经验?
    28 replies    1970-01-01 08:00:00 +08:00
    c
        1
    c  
       Dec 23, 2011
    我原来也想加密自己代码,后来想想自己写的乱代码有人看吗?所以就无所谓了
    vicalloy
        2
    vicalloy  
       Dec 23, 2011
    只发布pyc
    laihj
        3
    laihj  
       Dec 23, 2011
    别发布
    oldgun
        4
    oldgun  
    OP
       Dec 24, 2011
    @vicalloy pyc可以轻易被反编译的
    alsotang
        5
    alsotang  
       Dec 24, 2011
    @vicalloy @oldgun pyc理论上很容易反编译。你看看能不能用ironpython或者jython来生成对应的.class文件?不过说起来.class文件也是可以反编译,比C++的二进制方便多了。
    可能说起来这些解释型的语言都很难保密吧。
    and,你可以把系统里面关键的部分用C++改写,然后python调用生成的二进制.so或.a,这样应该就跟C++写的程序一个保密级别了吧?毕竟要保密的部分不是整个代码啊。但这也只能保密关键算法部分,要是想保密逻辑...可能就真的要C++全部改写了。
    不知我的回答有没有帮助。
    windhunter
        6
    windhunter  
       Dec 24, 2011
    我也有类似的苦恼。

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

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

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

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

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