【问题标题】:How to secure a python program (with serial keys)? [closed]如何保护 python 程序(使用串行密钥)? [关闭]
【发布时间】:2018-02-18 06:43:20
【问题描述】:

我正在使用 Tkinter 用 Python 开发一个付费程序。如何使程序特定于用户。我不希望人们共享他们的许可证。如果没有比串行密钥更好的选择。这样做的最佳方法是什么?不必是顶级安全性。只是不希望人们分享他们的许可证..

【问题讨论】:

  • 不知道用python是否可以,因为修改python代码很方便。
  • 它不必太安全。我最好的选择是什么?
  • >>>“不必太安全。”首先定义标准。
  • 双因素身份验证锁定到手机号码? USB硬件加密狗?面部识别?坦率地说,我认为这一切都更有可能伤害而不是帮助您的销售。
  • 您要求防止通用计算机的所有者能够将该通用计算机用于任意用途。简而言之,这是一个非常难的问题——在“计算机科学研究课题”中的难点。几十年来,我们在这方面做了很多工作,当然,但这些工作都不会让你现在的生活变得轻松。

标签: python python-2.7 security tkinter


【解决方案1】:

您可以在代码中嵌入机器 ID 和用户 ID,以便在启动时检查。

import getpass
userID = getpass.getuser()
import socket
machineID = socket.gethostname()

另请参阅(未验证,但在这里):Getting computer hardware information 同样在 Windows 命令提示符下,您可以使用systeminfo,它将为您提供整个计算机信息。在 Python 中,您可以运行 os.system('systeminfo > lolo.txt'),它将显示并通过管道传输到文本文件。 我正在寻找与您相同的问题。希望对你有帮助

【讨论】:

  • 什么可以阻止用户 NOP 执行该检查(也就是说,修改安装在他们系统上的字节码/可执行文件/&c 以不再执行它)?
  • @CharlesDuffy 是的,只是一种威慑。甚至编译的 C++ 程序也可以进行逆向工程。似乎软件分销商在启动时使用该程序在其网站上进行检查是现在最常见的,但我认为这也可以进行逆向工程。
  • 是的,它绝对可以(被逆向工程)。如果您想要可靠的东西,您需要的软件需要它没有并且无法以其他方式获取的数据。过去,我在视频流中存储了用户应该观看的广告的关键材料;或者(在具有不同商业模式的不同初创公司)在带有电池支持的内存的硬件中连接到篡改传感器。而这一切都不是完美的——所有一个合理的目标(没有索尼级别的研发预算)就是让业务类型感觉温暖和模糊,而不会给用户带来太昂贵或繁重的负担。
  • ...但是您在这里所做的甚至都没有实现;它是纯蛇油。 J. Random 高中生一个下午就能打败它。
【解决方案2】:

如果您想使用 python 编写代码,但要保留嵌入式机密,最好的办法是编译为二进制文件并仅将二进制文件发送给用户。 PyInstaller 是您开始研究的好地方。 PyInstaller 有多种替代方案。

【讨论】:

  • 这远远不够。 PyInstaller 打包并提供 Python 解释器 + 字节码。字节码与任何其他 Python 程序一样易于反编译。
  • 也就是说——即使是一个不称职的逆向工程师也不会受到这个或任何类似工具(cx_Freeze、py2exe等)的阻碍。
猜你喜欢
  • 2010-09-19
  • 1970-01-01
  • 2012-06-09
  • 2011-06-23
  • 1970-01-01
  • 1970-01-01
  • 2010-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多