如何使用 license 限制 Python web 运行

2023-09-01 11:24:19 +08:00
 sky857412

第一次使用 python ,使用 fastapi 开发了一个 web 项目,现在需要对项目进行限制,该如何实现呢? 源码也要部署到对方的机器上,如何防止它修改 license 的限制呢?

2490 次点击
所在节点    Python
24 条回复
Ansen
2023-09-01 11:46:03 +08:00
混淆后打包成二进制?
yanjieee
2023-09-01 11:49:20 +08:00
之前用过 pyarmor 商业化,感觉还可以。
iorilu
2023-09-01 14:12:41 +08:00
你提供源码的话 ,没法限制啊

不管你怎么弄, 对方随便找个人改下代码就行

再说了,web 项目很难限制, 有这种需求应该用 go 之类的东西开发
elechi
2023-09-01 14:33:15 +08:00
源码都给了,没法限制了
Vegetable
2023-09-01 14:35:20 +08:00
写点 bug
jenlors
2023-09-01 14:37:00 +08:00
之前做过相关的方案,使用 [https://github.com/Falldog/pyconcrete]( https://github.com/Falldog/pyconcrete) 加密代码,然后代码里面导入 license ,license 里面写入过期时间、机器码之类的信息,license 使用对称加密之类的算法加密,然后在程序启动的时候解密并且检测 license 有效性。
Jirajine
2023-09-01 14:39:47 +08:00
用 nuitka 把业务库编译一下。
coolair
2023-09-01 14:47:26 +08:00
@yanjieee #2 这个软件有开源版?我看有个 GitHub 。这个软件可以整个项目加密吗?还是只能单文件加密?
Abbeyok
2023-09-01 14:48:21 +08:00
在用 pyarmor ,可以试试
bianhui
2023-09-01 15:13:06 +08:00
给源码就没法限制住了。不用折腾了。
sunwei0325
2023-09-01 15:21:59 +08:00
事先将代码用密钥加密一下, 然后在 sys.meta_path 里面加载的时候解密一下, 关键词: importlib
Ackvincent
2023-09-01 15:57:05 +08:00
pyarmor +1
jjx
2023-09-01 16:00:49 +08:00
部分保护,部分开放

需要保护的部分用 cython 编译
fcfangcc
2023-09-01 16:47:40 +08:00
不要给源码, 用 cython 把.py 编译成 .so 然后打包部署
Mars2333
2023-09-01 17:05:10 +08:00
t/969968
这答案不就来了嘛
flyqie
2023-09-01 17:18:36 +08:00
先 aes 再 rsa(私加公解), 理论上来说不可能存在伪授权.

至于能不能通过其他手段改密钥破...那就是 cython 的事情了.
flyqie
2023-09-01 17:23:18 +08:00
@flyqie #16

没记错的话 rsa 比较特殊, 目前的主流实现是用私钥文件可以拿到公钥文件, 但用公钥文件基本不可能拿到私钥文件(或者说极其困难).
iorilu
2023-09-01 17:29:04 +08:00
@sunwei0325 密钥写在哪里, 总是明文啊
lanwairen123
2023-09-02 09:05:53 +08:00
之前遇到一个加密,是直接修改 Python 主程序代码,植入 openssl 解密模块,解密公钥硬编码到 python 主程序,然后用私钥加密代码。程序运行直接用修改过的 python 程序执行,先解密代码再运行。
lanwairen123
2023-09-02 09:10:56 +08:00
只是为了防止修改 license 的限制的话,把授权信息用私钥加密,程序内置公钥解密,只要私钥不泄露,理论上就可以防止修改 license 限制,但有源码这些限制等于没有

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

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

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

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

© 2021 V2EX