qq音乐sign逆向

2024-05-29 12:44
文章标签 音乐 qq 逆向 sign

本文主要是介绍qq音乐sign逆向,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

qq音乐sign参数逆向


1.概览

image-20240529110411618

参数sign长度40

多次调试发现,前缀zzb不变

2.打日志

跟站发现是vpm,在apply调用打上日志断点:

image-20240529110644850

连蒙带猜知道,最终字符串四部分构成,zzb 24DC2798 HI0TvE4tOMqzN4w88oZCjQ EE0A88FE

1.把请求的body参数直接MD5得到c8a043f88d8e9b012eeb72673ec92a8b
2.利用固定数组[21, 4, 9, 26, 16, 20, 27, 30]和上面结果,使用charat得到字符串:24DC2798EE0A88FE
3.中间的HI0TvE4tOMqzN4w88oZCjQ,我们分析这个

HI0TvE4tOMqzN4w88oZCjQ来源:

把vmp的栈打印,在位运算的地方打上日志点:

发现两个固定东西:

    let fmap = {"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9,"A":10,"B":11,"C":12,"D":13,"E":14,"F":15}let arr  = [212,45,80,68,195,163,163,203,157,220,254,91,204,79,104,6];

需要参与运算,运算日志如下:

E1EFCB705902FAD5BFD7F8C3CA904EF0   ->data的md5值
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:54 '-' 38 '=>' 16
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 14 '*' 16 '=>' 224
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 0 '*' 2 '=>' 0
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 0 '+' 1 '=>' 1
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 224 '+' 1 '=>' 225
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 225 '^' 212 '=>' 53
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 this-> [] args-> [53]vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 0 '+' 1 '=>' 1
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 0 '|' 0 '=>' 0
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 19 '-' 3 '=>' 16
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 1 '*' 2 '=>' 2vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 54 '-' 38 '=>' 16
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 14 '*' 16 '=>' 224
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 1 '*' 2 '=>' 2
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 2 '+' 1 '=>' 3
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 224 '+' 15 '=>' 239
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 239 '^' 45 '=>' 194
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 this-> [53] args-> [194]vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 1 '+' 1 '=>' 2
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 0 '|' 1 '=>' 1
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 19 '-' 3 '=>' 16
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 2 '*' 2 '=>' 4vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 54 '-' 38 '=>' 16
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 12 '*' 16 '=>' 192
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 2 '*' 2 '=>' 4
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 4 '+' 1 '=>' 5
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 192 '+' 11 '=>' 203
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 203 '^' 80 '=>' 155
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 this-> (2) [53, 194] args-> [155]
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 2 '+' 1 '=>' 3
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 0 '|' 2 '=>' 2
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 19 '-' 3 '=>' 16
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 3 '*' 2 '=>' 6vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 54 '-' 38 '=>' 16
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 7 '*' 16 '=>' 112
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 3 '*' 2 '=>' 6
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 6 '+' 1 '=>' 7
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 112 '+' 0 '=>' 112
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 112 '^' 68 '=>' 52
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 this-> (3) [53, 194, 155] args-> [52]

可以发现,

第0组:

vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:14 '*' 16 '=>' 224
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 0 '*' 2 '=>' 0
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 0 '+' 1 '=>' 1
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 224 '+' 1 '=>' 225
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 225 '^' 212 '=>' 53

我们记let md5v = E1EFCB705902FAD5BFD7F8C3CA904EF0

16是每组都一样的固定值:

14是fmap[md5v[0]]

1是fmap[md5v[0+1]]

212是arr[0]


第1组:

vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 54 '-' 38 '=>' 16
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 14 '*' 16 '=>' 224
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 1 '*' 2 '=>' 2
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 2 '+' 1 '=>' 3
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 224 '+' 15 '=>' 239
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 239 '^' 45 '=>' 194
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 this-> [53] args-> [194]

我们记let md5v = E1EFCB705902FAD5BFD7F8C3CA904EF0

16是每组都一样的固定值:

14是fmap[md5v[2]]

15是fmap[md5v[2+1]]

45是arr[1]


第2组:

vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 54 '-' 38 '=>' 16
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 12 '*' 16 '=>' 192
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 2 '*' 2 '=>' 4
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 4 '+' 1 '=>' 5
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 192 '+' 11 '=>' 203
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 203 '^' 80 '=>' 155
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 this-> (2) [53, 194] args-> [155]

我们记let md5v = E1EFCB705902FAD5BFD7F8C3CA904EF0

16是每组都一样的固定值:

12是fmap[md5v[4]]

11是fmap[md5v[4+1]]

80是arr[2]


第3组:

vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 7 '*' 16 '=>' 112
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 3 '*' 2 '=>' 6
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 6 '+' 1 '=>' 7
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 112 '+' 0 '=>' 112
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 112 '^' 68 '=>' 52
vendor.chunk.b71d8ba4d37617cb2e8d.js?max_age=2592000:1 this-> (3) [53, 194, 155] args-> [52]

我们记let md5v = E1EFCB705902FAD5BFD7F8C3CA904EF0

16是每组都一样的固定值:

7是fmap[md5v[6]]

0是fmap[md5v[6+1]]

68是arr[3]


那么,第i组:

(fmap[md5v[i*2]] * 16 + fmap[md5v[i*2+1]]) ^ arr[i]

js代码为:

function get_arr_16(str32){let ans = [];let fmap = {"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9,"A":10,"B":11,"C":12,"D":13,"E":14,"F":15}let arr  = [212,45,80,68,195,163,163,203,157,220,254,91,204,79,104,6];for (let i = 0; i < 16; i++) {ans.push((fmap[str32[i*2]]*16 + fmap[str32[i*2+1]])^arr[i])}console.log(ans)return ans;
}

综上所有逻辑结束。

3.验证:

image-20240529114622246

这篇关于qq音乐sign逆向的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1013680

相关文章

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

Android逆向(反调,脱壳,过ssl证书脚本)

文章目录 总结 基础Android基础工具 定位关键代码页面activity定位数据包参数定位堆栈追踪 编写反调脱壳好用的脚本过ssl证书校验抓包反调的脚本打印堆栈bilibili反调的脚本 总结 暑假做了两个月的Android逆向,记录一下自己学到的东西。对于app渗透有了一些思路。 这两个月主要做的是代码分析,对于分析完后的持久化等没有学习。主要是如何反编译源码,如何找到

转:android ro.debuggable属性调试修改(mprop逆向)

android ro属性调试修改(mprop逆向)      大家都知道如果需要调试android 的程序,以下两个条件满足一个就行。第一是apk的配置文件内的AndroidManifest.xml的 android:debuggable=”true”,第二就是/default.prop中ro.debuggable=1。两种方式第一种通常是解包添加属性再打包,随着加壳软件以及apk校验等,容易出

UniApp实现漂亮的音乐歌词滚动播放效果

在现代的音乐播放应用中,歌词的展示和滚动播放已经成为了一个非常常见的功能。今天,我们将通过UniApp来实现一个漂亮的歌词滚动播放功能。我们将使用UniApp提供的组件和API来完成这个任务。 页面结构 在页面的模板部分,我们需要创建一个音频播放器和歌词展示区域。使用<scroll-view>组件来实现歌词的滚动效果。 <template><view class="audio-co

某里227逆向分析

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关。 本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除! 前言 这次会简单的讲解阿里227版本滑块参数n的逆向分析流程以及简单的补环境,如果有疑问可以在评论区交流讨论,我看到会及时回复的,另外,有需要可联系我。 一

P11019 「LAOI-6」[太阳]] 请使用最新版手机 QQ 体验新功能

English statement. You must submit your code at the Chinese version of the statement. 题目描述 你的 QQ 收到了一条新消息!但是你很生气,因为你看不到别人在手机 QQ 上发送的超级表情。 消息形如一个字符串 S,包含且仅包含一个超级表情。具体地,我们将 S 的拼音采用驼峰命名法,可以化为如下形

QT项目实战之音乐播放器2.0版本

该版本相较于1.0版本最主要的不同在于连接数据库实现类似于歌曲收藏和取消收藏的功能。 详细情况看我的这篇文章http://t.csdnimg.cn/WS5s8。 效果展示 VSMyMusicShow2.0 define.h UseMySQL.h   musicInfo.h   VSMyMusicPlayer.h

【MyBatis学习14】MyBatis的逆向工程生成代码

1. 什么是逆向工程 mybatis的一个主要的特点就是需要程序员自己编写sql,那么如果表太多的话,难免会很麻烦,所以mybatis官方提供了一个逆向工程,可以针对单表自动生成mybatis执行所需要的代码(包括mapper.xml、mapper.java、po..)。一般在开发中,常用的逆向工程方式是通过数据库的表生成代码。 2. 使用逆向工程 使用mybatis的逆向工程,需要导入逆向

js逆向--cai招网

js逆向--cai招网 一、寻找加密入口1、抓包2、关键字搜索寻找加密入口 二、调试js三、python代码实现 一、寻找加密入口 1、抓包 目标数据来源网址为:https://search.bidcenter.com.cn/search?keywords=%E5%85%AC%E5%85%B1%E4%BD%8F%E5%AE%85,打开开发者工具进行抓包。 目标响应数据被加密。

《黑神话:悟空》专题合集MOD/修改器/壁纸/音乐/CG剧情

《黑神话:悟空》专题合集」 链接:https://pan.quark.cn/s/d67857f4e308 包含内容: 《黑神话:悟空》MOD合集 《黑神话:悟空》修改器(风灵月影) 《黑神话:悟空》壁纸合集 《黑神话:悟空》3小时CG完整剧情合集 4K120帧最高画质!国语 简中字幕 附:4K 结尾动画合集 ​​​国语 简中字幕 《黑神话:悟空》主题曲 《黑神话