首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  数学

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

  •  1
     
  •   sinv · 242 天前 · 2002 次点击
    这是一个创建于 242 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    至今进行了 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 回复  |  直到 2018-06-26 09:51:33 +08:00
        1
    zn   242 天前
    能简单从这些数据推导出算法的话,开发商的程序员可以杀了祭天了。

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

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

    如果你想知道为什么离线验证可以是安全的(假设你不尝试绕过软件的逻辑),这是因为存在着公钥密码学方案。一个简单的授权机制可以是这样:
    软件作者生成一对密钥用于签名,公钥随着软件分发(比如写死到代码里),私钥用于产生授权数据。
    软件根据运行环境(例如硬件配置等)生成一段文本(不考虑客户隐私的话比如系统状态的总结,考虑隐私的话用一个 hash 函数)。
    用户把文本、想要得到的时长、费用交给作者,作者对 (文本, 时长) 签名(用私钥),交还给用户。
    用户把签名输入软件,软件用公钥验证后发挥其功能。
        5
    crab   242 天前
    这样很难分析出算法,分析出也不能确定就对啊。逆向软件一步步跟出算法校验的流程。
        6
    shiji   242 天前
    @geelaw 这个方法也有缺陷,公钥容易被替换掉,比如说 Navicat 的离线激活就是通过替换掉软件自带的公钥实现的。
        7
    kokutou   242 天前 via Android
    软件发看雪论坛,找大神帮你逆向。
        8
    kokutou   242 天前 via Android
    不发软件,从注册码推出不出来的。
        9
    mamax   242 天前 via Android
    逆一下
        10
    ioc   242 天前 via Android
    说吧,什么软件
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2303 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 16ms · UTC 07:19 · PVG 15:19 · LAX 23:19 · JFK 02:19
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1