JS逆向 - 新版 QQ音乐逆向(sign、请求负载、响应解密)

文章目录

  • 概要
  • 分析加密流程
  • 扣代码补环境

概要

提示:仅供学习,不得用于商业,如有侵权请联系作者。

逆向 : JS逆向 - 新版QQ音乐(sign、请求负载、响应解密)

URL:aHR0cHM6Ly95LnFxLmNvbS9uL3J5cXEvc29uZ0RldGFpbC8wMDNETTlWQjRnVzBjRg==


在这里插入图片描述
在这里插入图片描述

接口 :aHR0cHM6Ly91Ni55LnFxLmNvbS9jZ2ktYmluL211c2ljcy5mY2c=

分析加密流程

1.分析sign 和请求负载加密 在哪里生成

在响应最后断点
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

跟进L函数进入发现是一个VMP 所以我们需要找到L在外部如何进行定义

在这里插入图片描述

在外部找到定义的位置发现 每个定义前都是有一个自执行函数, 并且调用的L() P()都是由一个定义window的对象下调用加密函数, 所以我们需要把这两个自执行函数 拿到js文件里面 进行调用加密

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以看到当前接口类型是octet-stream 这里判断如果是octet-stream 就调用N()进行解密获得原始数据的字符串,而且N()是由前两个函数块定义得来所以我们只要解决前文的两个函数即可

扣代码补环境

在这里插入图片描述

把定义和自执行函数扣下来

在这里插入图片描述

定义空对象 挂上代理

在这里插入图片描述

调用函数进行加密 发现 userAgent host没有补上

在这里插入图片描述

补上缺失的值 发现sign值已经生成

在这里插入图片描述

L(data).then(data=>{console.log(data);
})

在调用这个负载加密这个函数的时候发现 crypto 缺失

const crypto = require('crypto')
window.crypto = crypto

在这里插入图片描述

补上后发现 负载加密已经正常出值

接下来处理响应 对他进行解密

在这里插入图片描述

首先对请求后的响应进行Base64加密

在这里插入图片描述

然后对传过来的Base64 解密 之后转成ArrayBuffer 调用解密函数

在这里插入图片描述

最后正常获取到数据

Logo

为武汉地区的开发者提供学习、交流和合作的平台。社区聚集了众多技术爱好者和专业人士,涵盖了多个领域,包括人工智能、大数据、云计算、区块链等。社区定期举办技术分享、培训和活动,为开发者提供更多的学习和交流机会。

更多推荐