V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Xlegend
V2EX  ›  程序员

坦白说解密安卓版开源

  •  
  •   Xlegend · 2018-04-08 09:03:14 +08:00 · 3674 次点击
    这是一个创建于 2226 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一、开篇

    最近坦白说也是异常的火,作为开发者的我也去赶紧跑过去蹭了一下热度,写了个安卓的,加载了头像,点击后直接跳转到 QQ 资料卡页面,并且优化了已有的解密的算法(已有的大多数情况不能完全解密),目前还没发现解密出现问题的。 看看图 image.png

    二、分析

    首先,要拿到数据的接口,得先拿到对应的 token,而这个 token 就是使用 skey 进行一系列计算得出的,这个 skey 就是登录 QQ 空间后从返回的 cookie 中可以获取的。计算出 token 后,就可以放到这个接口,以获取好友的数据为例

    https://ti.qq.com/cgi-node/honest-say/receive/friends?_client_version=0.0.7&token=
    

    这样就可以拿到返回后的 Json 数据,然后就开始操作了

    {
    "code": 0,
    "data": {
    "confesses": [],
    "maxUnread": 0,
    "cookie": "CIsB",
    "finish": 0
    }
    }
    

    看看,这段数据就是返回后的 Json 数据,confesses 就是返回后的数据列表,注意这里面的 cookie,也就是进行分页加载需要传递的参数,如果没有数据了,这个 finish 就会变为 1,cookie 直接加到后面

    https://ti.qq.com/cgi-node/honest-say/receive/friends?_client_version=0.0.7&token=计算的 token&cookie=CIsB
    

    这样就能加载完整的数据了,然后关键是解密,这里的话已经有公开的,但是解密不完整,这里我花了一些时间,这个解密的规则是先 2 位加密的字符对应一位数,然后 2 位数字就是 1 位对应 1 位,3 个数字一组,下一组就又是 2 位对应 1 位,也就是对应 4 个加密后的字符,这样的规则,但是问题就出在了尾数,基本现在的这些就是尾数会解密出错,尾数又是使用的不同解密方式,经过多次测试,还是发现了规律,如图,这是尾数刚好对应 3 位一组的第前 2 位的。 image.png

    这就是经过多次的对比,总结出的,但这里又有一个问题,就是不知道 qq 的位数和尾数的加密有没有关联,目前解密已经没发现问题了,这些就不多说了,给出github地址,喜欢的欢迎给个 star。

    Sanko
        1
    Sanko  
       2018-04-08 09:36:46 +08:00 via Android
    没有编译好的安装包吗
    Shlimax
        2
    Shlimax  
       2018-04-08 10:12:12 +08:00 via Android
    Xposed 框架已经有了,看一下乐呵乐呵就好了
    Xlegend
        3
    Xlegend  
    OP
       2018-04-08 17:33:53 +08:00
    这是不需要 Xposed 框架的 解密过程也都在 安装包 github 主页有
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3053 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:08 · PVG 21:08 · LAX 06:08 · JFK 09:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.