我正在用Python构建一个相当复杂的解释程序。几个月以来,我一直在为大多数其他目的使用此代码,因此,我不希望我的客户能够简单地复制并尝试出售它,因为我认为这是值得的。
问题是我需要脚本在客户端付费的服务器上运行,因此有什么方法可以保护我机器上的特定文件夹免受root用户访问,或者使之只能使某个特定用途可以访问目录?操作系统是Ubuntu。
root
可以对某事进行反编译/反混淆,并且可以执行所有操作。
我正在用Python构建一个相当复杂的解释程序。几个月以来,我一直在为大多数其他目的使用此代码,因此,我不希望我的客户能够简单地复制并尝试出售它,因为我认为这是值得的。
问题是我需要脚本在客户端付费的服务器上运行,因此有什么方法可以保护我机器上的特定文件夹免受root用户访问,或者使之只能使某个特定用途可以访问目录?操作系统是Ubuntu。
root
可以对某事进行反编译/反混淆,并且可以执行所有操作。
Answers:
许可。
真的,仅此而已!
使用Cython。这将使您可以将程序编译为本机可执行文件。然后,它应该更难偷了。
至于目录,我能给您的唯一建议是确保您正确设置了权限。ACL可能是您的朋友,尽管我不是100%地确定ACL可以限制root用户访问文件。即使可以,root仍然可以更改权限。他是根,他是上帝-这就是这些事情的运作方式。
如上面的用户所示,反汇编程序可以取回代码,但到目前为止仍不太可读(至少对于开源反汇编程序而言)。
我正在考虑这个问题,我认为可以解决此问题的一种方法(如果您称强制打开代码为问题)是编写一个自动重构脚本。实际上,这将相当简单。您只需将脚本输入模块,它将重命名所有模块特定的变量。这与仅释放已编译的文件一起,会使代码变得很模糊。
在PyPI上进行搜索时,我发现了这一点:http : //pypi.python.org/pypi/pyfuscate/0.1。您应该检查它和其他类似的东西并报告:D
另外:当然,您也应该获得许可。
我也建议许可。除了许可之外,让我们使用非对称密钥算法对主例程的源代码进行加密,以便仅客户端计算机可以运行它。配对中的关键之一是从客户端计算机的硬件(例如:网卡的序列号)获得的东西。运行程序时,使用一对中的另一个密钥解密源代码。请注意,纯文本形式的唯一可交付内容将是解密例程,其余的将以密文形式交付。
这样,您的客户可以复制并粘贴您看似乱码的代码,但无法在其他地方运行它。但是我的建议并不是完全防弹的:解释器可以将解密的程序存储在内存中的某个位置。我猜可能是某些黑客在执行过程中以明文形式检索了您的程序。
至于阻止文件夹从根目录访问,我同意不能阻止root用户访问任何文件/文件夹。
ruby
/ python
/ node
使用自定义程序镜子执行API和输出的代码。