sinv
V2EX  ›  数学

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

  •  1
     
  •   sinv · Jun 26, 2018 · 9868 views
    This topic created in 3056 days ago, the information mentioned may be changed or developed.

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

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

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

    至今进行了 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. 因为是离线校验授权数据,所以授权数据必定包含对对应编码的散列或加密或其它变换。

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

    10 replies  •  2018-06-26 09:51:33 +08:00
    zn
    zn
    Jun 26, 2018
    1
    能简单从这些数据推导出算法的话,开发商的程序员可以杀了祭天了。

    洗洗睡吧,除非你会逆向。
    WildCat
    WildCat
    Jun 26, 2018 via iPhone
    2
    信息论了解一下
    巧妇难为无米之炊
    fuchunliu
    fuchunliu
    Jun 26, 2018 via Android
    3
    可以去外文网站找找注册机的资料,兴许有意外收获,比如:AutoCAD 的注册机就是离线注册的
    geelaw
    geelaw
    Jun 26, 2018 via iPhone❤️1
    4
    整个帖子没看懂目的是啥。

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

    如果你想知道为什么离线验证可以是安全的(假设你不尝试绕过软件的逻辑),这是因为存在着公钥密码学方案。一个简单的授权机制可以是这样:
    软件作者生成一对密钥用于签名,公钥随着软件分发(比如写死到代码里),私钥用于产生授权数据。
    软件根据运行环境(例如硬件配置等)生成一段文本(不考虑客户隐私的话比如系统状态的总结,考虑隐私的话用一个 hash 函数)。
    用户把文本、想要得到的时长、费用交给作者,作者对 (文本, 时长) 签名(用私钥),交还给用户。
    用户把签名输入软件,软件用公钥验证后发挥其功能。
    crab
    crab
    Jun 26, 2018
    5
    这样很难分析出算法,分析出也不能确定就对啊。逆向软件一步步跟出算法校验的流程。
    shiji
    shiji
    Jun 26, 2018
    6
    @geelaw 这个方法也有缺陷,公钥容易被替换掉,比如说 Navicat 的离线激活就是通过替换掉软件自带的公钥实现的。
    kokutou
    kokutou
    Jun 26, 2018 via Android
    7
    软件发看雪论坛,找大神帮你逆向。
    kokutou
    kokutou
    Jun 26, 2018 via Android
    8
    不发软件,从注册码推出不出来的。
    mamax
    mamax
    Jun 26, 2018 via Android
    9
    逆一下
    ioc
    ioc
    Jun 26, 2018 via Android
    10
    说吧,什么软件
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1653 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 11:55 · PVG 19:55 · LAX 03:55 · JFK 06:55
    ♥ Do have faith in what you're doing.