离线软件激活码生成方案?

2020-07-25 20:55:46 +08:00
 okface
用 python 的 wxpython 写了个小软件,这软件也值不了几个钱,用户也都是完全不懂注册机和破解的人,想问大家最简单实现的离线认证方案是什么呢
10577 次点击
所在节点    程序员
40 条回复
iamwho
2020-07-25 20:56:49 +08:00
打开程序弹窗提醒用户联网。
l549349545
2020-07-25 20:57:04 +08:00
离线就是机器码混淆呗
okface
2020-07-25 21:02:31 +08:00
@iamwho 用这个软件的电脑基本都只在内网环境下使用哈,不连外网
okface
2020-07-25 21:04:11 +08:00
还有就是想实现期限内激活码有效,比如使用个半年一年的自动失效,这个离线可以实现吗。。
ysc3839
2020-07-25 21:05:10 +08:00
非对称加密算法,可以参考一下 RSA 的原理,自己实现一个。注册码用私钥生成,软件里用公钥验证。
这么做能确保第三方很难实现生成注册码的工具,不过防不了一个注册码重复使用。
AX5N
2020-07-25 21:06:08 +08:00
没搞过,我猜就是设计一个可逆的算法,可以胡乱写一个?
时效这个应该也是可以实现的,保证激活码解码后带有日期信息就得了。
ysc3839
2020-07-25 21:06:40 +08:00
@okface 限制使用时间的话无法实现,因为你没有一个可信的方法获取当前时间。
chinvo
2020-07-25 21:10:20 +08:00
都 python 的了, 也没啥意义...

最简单用 序列号 + 机器序列号 算个校验码就完事儿了
tivizi
2020-07-25 21:11:11 +08:00
抛开软件破解不谈。

非对称加密是个好的解决办法。

CA 证书给客户签发的证书中包括有效期,机器识别码等信息,作为授权码。软件放 CA 公开证书,验证授权码的有效性,并检验授权码有效期,以及机器识别码是否一致等。
qile1
2020-07-25 21:12:48 +08:00
晚上有个开业的 python 实现注册码的项目

其实把 mac 或者硬盘 id 做个简单的 md5 验证,时间做 bas64 编码在做几个位运算就可以
AX5N
2020-07-25 21:15:44 +08:00
这个主要取决于你的对手是什么人,是老实的普通人,还是鸡贼的普通人。后者自己不会搞,但可以找朋友搞啊。又或者是肯花钱的鸡贼的普通人,愿意花大价钱找非常专业的人搞。又或者是懂点技术,但不会破解也不会拉下脸找人搞的技术员。

说真的,破解一个非专业方案的软件并不需要多少技术,就是时间多少而已。你可以算一下对方脱壳+解密+逆向你的算法需要的时间成本来决定。如果你只觉得你这个软件值 50 块,对方要花 100 个小时来破解,那就让他去破解吧。
mxT52CRuqR6o5
2020-07-25 21:15:47 +08:00
用户执行的是 exe 不,是的话可以直接用一些现成的方案(当然想破解也很好破解,毕竟代码都在 python 那边,保护不了代码)
loading
2020-07-25 21:30:01 +08:00
我上次因为特殊原因需要破 j 一个非常偏门的小型业内软件(属于个人软件),我从学习到成功,还没到半天,实际操作只用了 10 分钟。

楼主你随便选个方案就行了,不用太费神。
tanranran
2020-07-25 21:35:09 +08:00
加密狗
crab
2020-07-25 21:39:29 +08:00
@okface 离线下的限制时间或者使用次数可以用首次运行记录当前时间加密写到注册表。(前提注册表内容不被删除)
iamwho
2020-07-25 21:45:54 +08:00
@okface #3

那就把客户当成不会尝试去破解程序的人去做就好了。
kokutou
2020-07-25 21:46:21 +08:00
内置 rsa key 配合读取硬盘序列号(这个要注意固态硬盘序列号很长或者杂牌固态没有序列号。。。),读取网卡 mac 地址,Windows 系统 uuid 等等实现一机一码和防止简单算号。
然后还要注意留各种暗桩。
最后上个 tmd 壳 vmp 壳
时间可以在注册码里写进去。
时间验证防不了人家修改系统时间。。。
如果是有客户端的系统,可以通过客户端和服务的对时间的方式防一防。。。
WeaPoon
2020-07-25 21:50:06 +08:00
这类网上应该很多,不过 py 有没有就不清楚了。
使用授权文件验证方式,把时间信息等的写入文件里,加密方式用 RAS 。
机器码对比等,机器码可以用主板硬盘等等硬件信息组合。
这样对方给你提供个机器码,你自己用机器码+时间+其他信息生成个授权文件即可。
Coioidea
2020-07-25 22:14:10 +08:00
硬盘信息学到了!那么硬件指纹有伪造手段吗?
abersheeran
2020-07-25 22:18:24 +08:00
直接参考 JWT 的手段。你用 RSA 算法签发。然后程序内嵌公钥,使用公钥对 JWT 验证。JWT 再包含一下有效期,完事了。没必要自己造轮子。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/693099

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX