可塑型芋头 发表于 2023-1-23 00:27

[python]如何优雅的实现离线本地卡密验证,绑定机器并限制使用时间

对于机器绑定倒是可以参考这篇文章:【实践】python 机器码 实现一机一码_fivemm的博客-CSDN博客_python 机器码

对于时间限制:我在网上没找到相应的文章。
我自己有一些思路:PS. 不知道是否过于愚钝?大家还有好的想法吗?或者有源码能发一下就更好了哈哈哈哈
[*]在授权码中包含限制时间,限制时间部分不参与机器码的验证。对方输入授权码后,一是能够对应机器码验证,二是能够设置限制时间,让客户到期后需要重新获取授权码。
[*]为了第二次输入不一样的授权码,就需要在机器码中加入注册时间(获取的是使用者电脑时间),加入后还要加密,不然别人一看就明白是什么意思了。
[*]又为了防止客户调本地时间,从而跳过限制。我的想法是每隔一段时间,将使用者电脑时间保存下来,如果获取的当前时间比软件保存时间还早,说明使用者在作弊,就可以要求使用者改回来。



有这些想法感觉没问题了,虽然这样加密也有很多办法破解,但我写代码能力不行,都还没实现哈哈哈哈哈。
针对破解又有一些思路:
将需要保存的限制时间放到注册表里保存、将限制时间进行加密再保存。这样至少无法简单的修改限制时间达到破解的效果。

thepoy 发表于 2023-1-23 14:23

不要想太多,在线验证都能破解,何况本地验证。
将当前时间和证书加密保存到本地文件就行了,如果有人想要破解,你也没有办法。

YuanFang0w0 发表于 2023-1-23 20:39

把截止时间的时间戳保存到卡密中,每次运行首先获取当前时间戳,并对比卡密中的时间戳,如果大于卡密中的时间戳直接退出也可以吧 这种

paihan 发表于 2023-1-23 21:26

为何不做在线验证,并且某些数据是验证成功才返回的

哒哒鸡 发表于 2023-1-23 23:16

我最近也在想这个问题,启动时联网获取时间,然后通过机器码访问某个静态xxx.com/xxx的链接,链接里面包含一些加密的信息,然后这里做可以做一些剩余时间的校验?
主要自己再搭后端写管理很麻烦,java写太花时间了
这个"每隔一段时间,将使用者电脑时间保存下来,如果获取的当前时间比软件保存时间还早,说明使用者在作弊,就可以要求使用者改回来。"感觉也是挺好的思路

闲月疏云 发表于 2023-1-24 02:34

1. 离线本地卡密验证:JWT
2. 绑定机器:这个是和逆向的军备竞赛,没有固定解
3. 限制使用时间:离线状态下不可能实现,你做什么都阻止不了别人直接新开一个时间是1970-1-1的系统

bzjhss 发表于 2023-1-24 06:55

感谢分享

abcde1224 发表于 2023-1-24 11:10

1.本地机器生成专属的机器码
2.本地机器再根据一定算法生成注册信息,注册信息中最好带时间校验
3.将上述两个信息输入注册机,注册机生成的注册码含指定到期日期的信息
4.将注册码扔进机器注册,本地机器应具备时间校验功能
6.本地机器要解决防止用户更改时间后注册码依旧有效的功能
7.只提供思路,源码不提供

可塑型芋头 发表于 2023-1-24 18:19

YuanFang0w0 发表于 2023-1-23 20:39
把截止时间的时间戳保存到卡密中,每次运行首先获取当前时间戳,并对比卡密中的时间戳,如果大于卡密中的时 ...

这种方式如果对方修改本地时间,就可以绕过限制了。

可塑型芋头 发表于 2023-1-24 18:20

paihan 发表于 2023-1-23 21:26
为何不做在线验证,并且某些数据是验证成功才返回的

设计的程序是内网使用的,所以不好做在线验证。
页: [1] 2 3
查看完整版本: [python]如何优雅的实现离线本地卡密验证,绑定机器并限制使用时间