如何加密python源代码?

时间:2011-07-05 05:59:58

标签: python obfuscation

我们有一个用Python实现的业务关键程序。我们的老板不希望别人,特别是我们的竞争对手知道它是如何设计和实施的。所以我必须找到一种方法来加密它。我首先想到了pyc和pyo,但很快我发现它们很可能被拆解了。我想加密我们的源代码,但我不知道该怎么做?你能帮帮我吗?任何指导都将受到高度赞赏。

3 个答案:

答案 0 :(得分:14)

我建议你重新思考一下,考虑一下:

  • 使用合适的工具
  • 混淆很难
  • 实现目标的其他方法

首先,Python并未设计为混淆。语言的每个方面都是免费的,任何想要检查或修改它的人都可以访问。作为字节码语言使得锁定变得困难,并且Python字节码易于理解。如果你想要构建一些你无法看到内部的东西,你将不得不使用另一种工具。

其次,一切(字面上)最终都可以进行逆向工程,因此不要假设您能够完全保护任何代码。甚至Skype最终也被分解和分析。 您必须能够理解隐藏一段代码(对于估计的资源量X)的重要性与实际隐藏它的有效性(也就是努力方面)之间的权衡。尝试并切实评估“设计和实施”的重要性,以证明这一切。

考虑有法律要求。如果您希望人们滥用您的代码,那么如果您能够轻松发现那些代码并将其转化为法律问题,那么它可能会更有用。

答案 1 :(得分:5)

分离C函数中的机密功能并开发SWIG包装器。如果您使用的是C ++,可以考虑使用boost python。

答案 2 :(得分:4)

任何东西都可以逆向工程。提供用户的机器信息不可能,用户无法检查该信息。你所能做的就是花更多的精力。

如果你有这个要求,Python尤其糟糕,因为Python字节码比完全组装的机器代码更容易阅读。最终,无论你采取什么措施使其更加模糊,用户的计算机必须能够对其进行反模糊处理才能将其转换为普通的Python字节码,以便Python解释器能够将其解析出来。因此,一个有动力的用户也可以将你提供给它们的任何内容解组成Python字节码。

如果您确实有竞争对手可能想要弄清楚您的计划是如何运作的,那么您必须假设您以任何形式向最终用户发布的任何代码都将被您的竞争对手完全理解。 没有可能的方式来绝对防范这一点。

解决这个问题的唯一方法就是不向用户提供此代码,如果您可以在您控制的服务器上运行代码,并且只为您的用户提供一个愚蠢的程序,向您的服务器发出请求真实的工作。