第一次使用 python ,使用 fastapi 开发了一个 web 项目,现在需要对项目进行限制,该如何实现呢? 源码也要部署到对方的机器上,如何防止它修改 license 的限制呢?
1
Ansen 2023-09-01 11:46:03 +08:00
混淆后打包成二进制?
|
2
yanjieee 2023-09-01 11:49:20 +08:00
之前用过 pyarmor 商业化,感觉还可以。
|
3
iorilu 2023-09-01 14:12:41 +08:00
你提供源码的话 ,没法限制啊
不管你怎么弄, 对方随便找个人改下代码就行 再说了,web 项目很难限制, 有这种需求应该用 go 之类的东西开发 |
4
elechi 2023-09-01 14:33:15 +08:00
源码都给了,没法限制了
|
5
Vegetable 2023-09-01 14:35:20 +08:00
写点 bug
|
6
jenlors 2023-09-01 14:37:00 +08:00 1
之前做过相关的方案,使用 [https://github.com/Falldog/pyconcrete]( https://github.com/Falldog/pyconcrete) 加密代码,然后代码里面导入 license ,license 里面写入过期时间、机器码之类的信息,license 使用对称加密之类的算法加密,然后在程序启动的时候解密并且检测 license 有效性。
|
7
Jirajine 2023-09-01 14:39:47 +08:00 via Android
用 nuitka 把业务库编译一下。
|
9
Abbeyok 2023-09-01 14:48:21 +08:00
在用 pyarmor ,可以试试
|
10
bianhui 2023-09-01 15:13:06 +08:00
给源码就没法限制住了。不用折腾了。
|
11
sunwei0325 2023-09-01 15:21:59 +08:00
事先将代码用密钥加密一下, 然后在 sys.meta_path 里面加载的时候解密一下, 关键词: importlib
|
12
Ackvincent 2023-09-01 15:57:05 +08:00
pyarmor +1
|
13
jjx 2023-09-01 16:00:49 +08:00
部分保护,部分开放
需要保护的部分用 cython 编译 |
15
Mars2333 2023-09-01 17:05:10 +08:00
t/969968
这答案不就来了嘛 |
16
flyqie 2023-09-01 17:18:36 +08:00
先 aes 再 rsa(私加公解), 理论上来说不可能存在伪授权.
至于能不能通过其他手段改密钥破...那就是 cython 的事情了. |
17
flyqie 2023-09-01 17:23:18 +08:00
|
18
iorilu 2023-09-01 17:29:04 +08:00
@sunwei0325 密钥写在哪里, 总是明文啊
|
19
lanwairen123 2023-09-02 09:05:53 +08:00
之前遇到一个加密,是直接修改 Python 主程序代码,植入 openssl 解密模块,解密公钥硬编码到 python 主程序,然后用私钥加密代码。程序运行直接用修改过的 python 程序执行,先解密代码再运行。
|
20
lanwairen123 2023-09-02 09:10:56 +08:00
只是为了防止修改 license 的限制的话,把授权信息用私钥加密,程序内置公钥解密,只要私钥不泄露,理论上就可以防止修改 license 限制,但有源码这些限制等于没有
|
23
buffzty 2023-09-02 10:28:55 +08:00
你随便限制 用不了算我输
|
24
SenLief 2023-09-02 14:47:06 +08:00
python 天生不适合,还是改用 go 。
要不就不给源码,编译成库,在外面套一层认证服务器。 |