软件授权算法研究,兴趣入

2018-06-26 00:22:06 +08:00
 sinv

发到数学节点下,不知是否合适,请教大家集思广益,凭兴趣研究。

声明:兴趣所在,仅为算法研究,人格保证无作弊、无盗用。

项目中遇到供应商提供的产品需要授权,我方已支付款项购买永久授权,因供应商内部原因暂时无法提供永久授权,故请我帮忙定期更新授权。

至今进行了 4 次短期授权操作,每次都是根据软件操作界面提供的 8 个字符的编码作为输入、并指定授权时长,进而生成授权数据;成功导入授权数据后,产品软件界面显示新的 8 字符编码。下面给出 4 次授权相关的数据,格式为“编码|授权时长|授权数据”:

4f1f2368|1 个月|23265,61680,57795,50115,54000,53985,50115,50145,38640,42450,46290,57825,38565,57840,57810,61680

f92d534c|1 个月|19395,50115,50130,53985,54000,50160,57825,53955,46275,38625,46290,57825,38535,61680,57825,54000

4d4b9612|2 个月|30945,61680,50115,53985,61635,61680,57810,50055,57750,61575,61665,50100,46290,53955,54000,57840

fea364c2|2 个月|27075,57825,50115,57810,57810,57840,54000,50055,53925,57750,61635,53940,42465,61650,61680,50160

观察每次得到的授权数据的规律发现以下特征:

  1. 均由 16 组数字构成,每组包含 5 个阿拉伯数字;
  2. 这 16 组数字里,每组的末位数字只有 0 和 5 两种情况;
  3. 提列第 2 条中的 0 或 5 后可以组合成 16 个数字串,联想到二进制,且正好是 16bit、2 个字节(猜测)。

简单分析:

  1. 软件采用本地离线计算方式校验授权数据;
  2. 因为可以从授权数据中获取授权时长,所以授权数据中应该包括未加密的用以表示时长的数据;
  3. 因为是离线校验授权数据,所以授权数据必定包含对对应编码的散列或加密或其它变换。

以上,未琢磨明白,不甘心,求教大家指点迷津。

8623 次点击
所在节点    数学
10 条回复
zn
2018-06-26 00:57:05 +08:00
能简单从这些数据推导出算法的话,开发商的程序员可以杀了祭天了。

洗洗睡吧,除非你会逆向。
WildCat
2018-06-26 00:59:12 +08:00
信息论了解一下
巧妇难为无米之炊
fuchunliu
2018-06-26 01:01:32 +08:00
可以去外文网站找找注册机的资料,兴许有意外收获,比如:AutoCAD 的注册机就是离线注册的
geelaw
2018-06-26 01:07:47 +08:00
整个帖子没看懂目的是啥。

如果你想研究授权的运作机制,只要看软件的代码即可,从表面观察是没什么意义的。

如果你想知道为什么离线验证可以是安全的(假设你不尝试绕过软件的逻辑),这是因为存在着公钥密码学方案。一个简单的授权机制可以是这样:
软件作者生成一对密钥用于签名,公钥随着软件分发(比如写死到代码里),私钥用于产生授权数据。
软件根据运行环境(例如硬件配置等)生成一段文本(不考虑客户隐私的话比如系统状态的总结,考虑隐私的话用一个 hash 函数)。
用户把文本、想要得到的时长、费用交给作者,作者对 (文本, 时长) 签名(用私钥),交还给用户。
用户把签名输入软件,软件用公钥验证后发挥其功能。
crab
2018-06-26 01:12:29 +08:00
这样很难分析出算法,分析出也不能确定就对啊。逆向软件一步步跟出算法校验的流程。
shiji
2018-06-26 02:20:11 +08:00
@geelaw 这个方法也有缺陷,公钥容易被替换掉,比如说 Navicat 的离线激活就是通过替换掉软件自带的公钥实现的。
kokutou
2018-06-26 06:31:33 +08:00
软件发看雪论坛,找大神帮你逆向。
kokutou
2018-06-26 06:31:57 +08:00
不发软件,从注册码推出不出来的。
mamax
2018-06-26 07:37:50 +08:00
逆一下
ioc
2018-06-26 09:51:33 +08:00
说吧,什么软件

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

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

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

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

© 2021 V2EX