【发布时间】:2011-09-17 10:38:22
【问题描述】:
让我们假设有一个大型商业项目(a.k.a Project),它在后台使用 Python 来管理插件,以配置可以由 Project 附加和使用的新控制界面。
有一个小的信息泄露,项目的 Python API 的某些部分泄露给了公共信息,人们能够编写 Python 脚本,这些脚本被底层 Python 实现调用作为项目插件加载机制的一部分。
进一步,使用inspect 模块和原始__dict__ 读数,人们能够找出 Project 底层 Python 实现的主要部分。
有没有办法让 Python 密码保密?
快速浏览 Python 的文档发现了一种以这种方式抑制 inspect 模块导入的方法:
import sys
sys.modules['inspect'] = None
是否彻底解决了问题?
【问题讨论】:
-
对于您的最后一个答案,我仍然可以:
del sys.modules['inspect']:) -
不可能。 但是——看看this answer,它建议使用 Cython。当然,任何东西都可以逆向工程,但是由于 Cython 生成的 c 代码编译成机器代码,因此逆向工程可能与用 c 编写的任何东西一样难。
-
而不是“保持[ing] Python 密码的秘密”,您应该这样做,以便 Python 代码一开始就不需要是秘密的。正如 Sven 链接的问题的答案中所建议的那样,将敏感代码放在扩展模块中并在 Python 脚本中使用它比试图隐藏用不是为隐藏而设计的语言编写的代码要好。
-
@mouad - 啊啊啊! :D 聪明! :D
标签: python decompiling inspect