软件授权算法研究,兴趣入 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sinv
V2EX    数学

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

  •  1
     
  •   sinv 2018-06-26 00:22:06 +08:00 9087 次点击
    这是一个创建于 2670 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    如果你想知道为什么离线验证可以是安全的(假设你不尝试绕过软件的逻辑),这是因为存在着公钥密码学方案。一个简单的授权机制可以是这样:
    软件作者生成一对密钥用于签名,公钥随着软件分发(比如写死到代码里),私钥用于产生授权数据。
    软件根据运行环境(例如硬件配置等)生成一段文本(不考虑客户隐私的话比如系统状态的总结,考虑隐私的话用一个 hash 函数)。
    用户把文本、想要得到的时长、费用交给作者,作者对 (文本, 时长) 签名(用私钥),交还给用户。
    用户把签名输入软件,软件用公钥验证后发挥其功能。
    crab
        5
    crab  
       2018-06-26 01:12:29 +08:00
    这样很难分析出算法,分析出也不能确定就对啊。逆向软件一步步跟出算法校验的流程。
    shiji
        6
    shiji  
       2018-06-26 02:20:11 +08:00
    @geelaw 这个方法也有缺陷,公钥容易被替换掉,比如说 Navicat 的离线激活就是通过替换掉软件自带的公钥实现的。
    kokutou
        7
    kokutou  
       2018-06-26 06:31:33 +08:00 via Android
    软件发看雪论坛,找大神帮你逆向。
    kokutou
        8
    kokutou  
       2018-06-26 06:31:57 +08:00 via Android
    不发软件,从注册码推出不出来的。
    mamax
        9
    mamax  
       2018-06-26 07:37:50 +08:00 via Android
    逆一下
    ioc
        10
    ioc  
       2018-06-26 09:51:33 +08:00 via Android
    说吧,什么软件
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1481 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 16:41 PVG 00:41 LAX 09:41 JFK 12:41
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86