Python 代码的加密问题 - V2EX
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
1419co1in

Python 代码的加密问题

  •  
  •   1419co1in Nov 29, 2019 8450 views
    This topic created in 2341 days ago, the information mentioned may be changed or developed.

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

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

    29 replies    2020-12-21 23:03:27 +08:00
    linlance
        1
    linlance  
       Nov 29, 2019
    好像没啥办法吧。。。听听其他大牛怎么说。

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


    不过可以试试用 pyinstaller 编译后在加一层壳
    如果不是专业队,应该是不会从网上随便找的教程里把你的东西反编译出来了
    CallMeReznov
        17
    CallMeReznov  
       Nov 29, 2019
    @1419co1in #9 把包直接复制到工程文件夹下面好像就可以了
    agegcn
        18
    agegcn  
       Nov 29, 2019
    cython 编译几个核心模块,包括授权的
    CEBBCAT
        19
    CEBBCAT  
       Nov 29, 2019   1
    这个问题已经有人问过了呀
    [Python 代码不能加密?]( t/348602)
    [一般 Python 服务部署在公有云服务器上,如何做代码保护?]( t/403957)
    提问前记得搜索喔
    imn1
        20
    imn1  
       Nov 29, 2019
    我给的建议是:
    整体加密不实际
    把一些核心算法、关键业务模块,转为 C/C++打包的 dll/so,由 python ctype 调用,这样可能更实际一些
    io123
        21
    io123  
       Nov 29, 2019 via Android
    用 cython 编译加密
    windows:编译成.pyd
    linux:编译成.so
    ungrown
        22
    ungrown  
       Nov 29, 2019 via Android
    @woshifyz 纯 python 代码可以直接用 cython 编译成二进制库,只不过无法享受到静态类型带来的速度优化罢了
    /td>
    crawl3r
        23
    crawl3r  
       Nov 29, 2019
    最简单的方法是卖服务器或者虚拟机镜像,设置脚本开机启动,然后不给登录账号密码。这样他们只能用但看不到源码。
    qile1
        24
    qile1  
       Nov 29, 2019 via Android
    要不你编译为 pyc,然后写个 py 代码,在 pyc 文件前面插入一些二进制文件,运行时跳过这些二进制字符运行?
    0x5f
        25
    0x5f  
       Nov 29, 2019
    上次好像看到一个老哥说的是代码跑起来之后把代码删了
    EurekaSeven
        26
    EurekaSeven  
       Nov 29, 2019
    @0x5f 这个挺狠。。。话说以前我做外包的时候老板就是让我们搞这种,我们顶多做个 pyc 罢了。。
    HuberyPang
        27
    HuberyPang  
       Nov 30, 2019
    https://github.com/ArvinMei/py2so github star 的一个项目 把 python 代码打包成.so 不过这个打包环境和部署环境要一样 。我们的项目也是 django 的 把核心代码加密 不影响项项目运行。这个是项目是之前作者 python2 版本写的,自己修改一下就能用。
    zepc007
        28
    zepc007  
       Dec 17, 2019
    @0x5f 这个牛逼,哈哈哈 xswl
    ruanimal
        29
    ruanimal  
       Dec 21, 2020
    @linlance 2000G
    About     Help     Advertise     Blog     API     FAQ     Solana     2737 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 81ms UTC 15:46 PVG 23:46 LAX 08:46 JFK 11:46
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86