- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想出售一些我用 Python 编写的软件。我的界面允许用户提交他们的许可证 key 并将其保存在本地。该程序围绕运行程序的界面中的一个按钮。我的想法是在 AWS EC2 服务器上创建一个 HTTPS API(可能使用 Flask,因为我知道如何使用它)。然后,只要用户单击按钮运行服务器,程序就会检索他们本地存储的许可证 key 并向服务器发出 GET 请求。服务器然后检查数据库中是否存在该键,如果存在则返回 True,否则返回 False。如果返回True,则本地程序将运行该程序,否则会告诉用户他们的 key 无效。
我知道这不是特别安全。我看到的主要原因是使用 Python,用户可以进入我的 .py 文件并将 bool 值设置为始终为 True,或者完全删除检查。所以,我想我可以通过使用 py2exe 来解决这个问题。 , 尽管 unpy2exe存在。 pyarmor似乎也是一种选择,但我认为可能存在一些工具来破解它,例如 this one .
即使我能够阻止用户访问代码,他们也不能更改服务器的响应并将其更改为 True 吗?即使是HTTPS?
我还有一个问题,我希望用户一次只能在一台计算机上使用我的程序。我想存储他们的 MAC 地址,但我知道这很容易被欺骗,所以我不太确定如何实现它。
有人可能会说这太过分了,如果有人想破解我的软件,他们就会这样做。然而,该程序将相当昂贵,并且将在破解非常普遍的市场上销售。因此,我真的很想尽我所能让它变得尽可能困难。
那么,有谁知道我可以如何为我的程序创建一个安全的许可系统?至少只是一个大纲会非常有帮助。
谢谢。
编辑:关于安全生成许可证 key ,如果我确定它不存在的话,这样的东西怎么样?
from base64 import b64encode
from os import urandom
random_bytes = urandom(32)
license = b64encode(random_bytes).decode('utf-8')
EDIT2:当然必须有某种许可软件的行业标准,不管它是否用 Python 编码?他们是怎么做到的?
最佳答案
如果我正确理解了您的问题陈述,那么一切都可以归结为:
在阅读了您的初步尝试后,我可以评论说您能够挥动球棒,但最终这些方法都变得无能为力。
虽然我可以分享一些技巧来解决上述问题,但我更愿意建议您使用第三方供应商,他们已经从事许可业务并在游戏中享有盛誉。
NetLicensing恰好是一种符合成本效益的解决方案。
对于目标 #1,他们提供了一种反射(reflect)典型订阅场景的订阅许可模型,在该模型中,允许在特定日历时间内使用并且可以按需延长,并且他们最先进的安全性有助于您可以避免所有此类破解和黑客攻击(如帖子中所述)。
他们还提供了一种称为“节点锁定”的解决方案,可用于实现目标 #2,其中使用 CPU 序列号验证来强制执行此类许可。
总而言之,我想说您总是可以使用家庭自制的补救措施来实现软件许可,但是如果您的产品确实物有所值并且您打算避免盗版并限制未经授权的使用,请让专业人员来处理您的问题业务,而您则专注于产品开发及其分销。
关于python - 使用 Python 保护软件许可,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56360588/
前言 在进行Maven开发时,往往需要下载大量jar包,而由于网络不稳定等其他因素可能导致jar未下载完毕,然后保留了lastUpdated文件,导致无法更新失效的jar包。 本文分享 bat脚本,自
按字母顺序排序并不是我们花太多时间担心的事情。我们在很小的时候就学习了字母表,现在我们知道它(拉丁文)以 A 开头,然后是 B,然后是 C 等等,一直到 Z。 但是这个订单究竟存储在计算机系统中的什么
我尝试使用可分离为 2 个一维向量的二维矩阵来证明二维傅里叶变换的信号属性的可分离性。地点: f(x,y) = f(x)*f(y) 那么 F(u,v) = F(u)*F(v) 使用以下代码: % Se
我需要为几个小型sqlite数据库编写文档。想描述数据的使用方式,包括表和行说明以及示例数据。 是否可以使用MySQL Workbench?如果没有其他选择,或者我可以使用任何模板? TIA! 最佳答
我正在尝试使用旧版本(例如:1.4.5)安装 memcached,但我不知道该怎么做。 brew install memcached安装最新的。 我也试过 brew install memecache
背景 多年来,我一直使用自己的类似贝叶斯方法,根据大型且不断更新的训练数据集对来自外部来源的新项目进行分类。 每个项目都有三种类型的分类: 30 个类别,其中每个项目必须属于一个类别,且最多属于两个类
嗨,我需要确定 4 个数字是否相等。数字是 size(A,1)、size(B,1)、size(C,1) 和 size(D,1),其中,例如A = [1 2; 3 4], B=[1 2 3, 4 5 6
Wikipedia 中的文章似乎太冗长了。 我将框架理解为一组精心设计的库和工具。 Qt 框架为跨平台 GUI 提供了一组库/工具。 cocoa 框架为 Mac 做了同样的事情。 软件框架的实际定义是
我们的客户最近发现了这个网站: http://mydeco.com/3d-planner/ 它有一个非常非常奇特且组合良好的 3d CAD Web 应用程序,似乎是使用 jQuery 编写的,而不是
我们正在寻找一种独立的(非 cms)日历解决方案来显示在网络上。它可以是开源的或付费服务。 我们主要是在寻找一种在 Web 上显示日历的方法,其中包含事件发生的时间和事件的名称。如果它可以按周、月、年
我想知道与软件相关的“质量保证”和“质量科学”之间的区别。 我在Google上进行了研究,但未找到有关“质量科学”的任何信息。 最佳答案 Based on the link you have prov
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
我有一个由 2 个方程和 2 个未知数组成的系统,我想使用 MATLAB 求解,但不知道如何编程。我得到了一些有关 Gamma 分布的信息(平均值为 1.86,90% 的间隔介于 1.61 和 2.1
给定一个矩阵,其中 1 是当前子集 test = 0 0 0 0 0 0 0 0 0 0 0 0
我在组合 Matlab“数据”变量的重复元素时遇到问题。我可以使用 unique 和 sort 轻松组合这些值。 [sorted,idx] = sort(data); [~,ij] = unique(
我在做的问题中有这么一段代码,如下图。定义部分只是为了向您展示数组的大小。下面我粘贴了矢量化版本 - 它慢了 2 倍以上。为什么会这样?我知道如果矢量化需要大的临时变量,我就会发生,但(看起来)这里不
我有一个 3D 矩阵,我想将它的每个 2D 分量存储在另一个 2D 矩阵的行中,该 2D 矩阵有许多行作为 3D 矩阵的第 3 维。 我该怎么做? 最佳答案 与 permute & reshape -
如果计算机能够使用纯 JavaScript(Google V8)、C++(Windows、Mac OS 和 Linux)运行程序/软件而没有任何性能问题,是否有任何好的方法可以通过要求尽可能少尽可能从
我的团队的任务是将用于播放媒体文件的全屏、信息亭式应用程序从 Windows 迁移到嵌入式 ARM Linux(瘦客户端)。我们需要在 sd/1080p 中支持 mpeg-2 播放以及 HTML、SW
我们有数以千计的具有白色或黑色或渐变背景的产品图片。我们正在寻找可以去除图片背景的软件或服务。我们需要一款能够很好地完成这项工作的智能软件。 最佳答案 在 photoshop 中,您可以记录 Acti
我是一名优秀的程序员,十分优秀!