【QQ音乐】sign签名| data参数加密 | AES-GCM加密 | webpack实战 (下)

article/2025/8/27 4:40:52

1.目标

在这里插入图片描述

网址:https://y.qq.com/n/ryqq/toplist/26

在这里插入图片描述
在这里插入图片描述
我们知道了 sign= P(n.data),其中n.data明文的请求参数

2.webpack生成data加密参数

在这里插入图片描述
那么 L(n.data)就是密文的请求参数。返回一个Promise {<pending>},所以L(n.data) 是一个异步函数。

L(n.data).then(result => {console.log('结果是:', result);
}).catch(error => {console.error('发生错误:', error);
});

在这里插入图片描述

window.shark(0).cgiEncrypt(data).then(result => {console.log('结果是:', result);
}).catch(error => {console.error('发生错误:', error);
});

运行之后报错

p[r[++h]] = p[r[++h]].call(p[r[++h]], p[r[++h]]);
TypeError: Cannot read properties of undefined (reading 'call')

在这里插入图片描述

因为请求参数是用了AES-GCM加密,且使用了随机iv

AES-GCM 是一种高级加密标准(AES)与伽罗瓦 / 计数器模式(GCM)结合的加密方式

在这里插入图片描述
在浏览器环境中,window.crypto 对象是 Web Crypto API 的入口,用于实现加密相关的功能。window.crypto.subtleSubtleCrypto 接口的实例,它提供了更底层、更强大的加密功能。
SubtleCrypto 的所有方法均返回 Promise,需通过 then/catchasync/await 处理异步结果(例如密钥生成、加密解密等操作)。

所以我们只需要导入

window = globalThis;;
window.crypto = require('crypto');

在这里插入图片描述
就可以正常生成结果

3.逆向还原data加密参数

密钥就是vTBfEND/dLbvVNq4NbXhzw==
在这里插入图片描述
这样生成的结果长度为448,而网页长度是464,少了16位,而这16位正是iv
在这里插入图片描述

AES-GCM 通常需要将 IV 和密文一起传输,接收方才能正确解密
在这里插入图片描述
这样就没有问题

4.响应数据解密

在这里插入图片描述
返回的数据是二进制
在这里插入图片描述
数据解密是用j.__cgiDecrypt,当然也是AES-GCM解密

JSON.parse(N(可快速定位
在这里插入图片描述
在这里插入图片描述

5.绕过加密验证

在这里插入图片描述

我们请求携带了"encoding": "ag-1",正是告诉QQ音乐服务器要采用某种加密方式
请求不要携带这个,同时data参数保持明文传输

import requests
import jsonheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36","Accept": "application/octet-stream","accept-language": "zh-CN,zh;q=0.9","cache-control": "no-cache","content-type": "text/plain","origin": "https://y.qq.com","pragma": "no-cache","priority": "u=1, i","referer": "https://y.qq.com/","sec-ch-ua": "\"Chromium\";v=\"136\", \"Google Chrome\";v=\"136\", \"Not.A/Brand\";v=\"99\"","sec-ch-ua-mobile": "?0","sec-ch-ua-platform": "\"Windows\"","sec-fetch-dest": "empty","sec-fetch-mode": "cors","sec-fetch-site": "same-site"
}url = "https://u6.y.qq.com/cgi-bin/musics.fcg"
params = {"sign": "zzc308f0fefeuogbgecps0gpzosg6fnvxujyw0474ee6d"
}
data = {"comm": {"cv": 4747474,"ct": 24,"format": "json","inCharset": "utf-8","outCharset": "utf-8","notice": 0,"platform": "yqq.json","needNewCode": 1,"uin": 0,"g_tk_new_20200303": 5381,"g_tk": 5381},"req_1": {"module": "musicToplist.ToplistInfoServer","method": "GetDetail","param": {"topid": 27,"offset": 0,"num": 20,"period": "2025-05-29"}}
}
data = json.dumps(data, separators=(',', ':'))
response = requests.post(url, headers=headers, params=params, data=data)print(response)
print(response.text)

也就是说只需要分析sign即可
在这里插入图片描述


http://www.hkcw.cn/article/fQOOAptaAF.shtml

相关文章

2025年05月29日Github流行趋势

项目名称&#xff1a;agenticSeek 项目地址url&#xff1a;https://github.com/Fosowl/agenticSeek项目语言&#xff1a;Python历史star数&#xff1a;11898今日star数&#xff1a;2379项目维护者&#xff1a;Fosowl, steveh8758, klimentij, ganeshnikhil, apps/copilot-pull-…

Python自动化之selenium语句——打开、关闭浏览器和网页

目录 一、打开谷歌浏览器 1.双击桌面的Pycharm工具 2.新建Python文件&#xff0c;输入文件名 3.新建的Python文件如下 4.安装selenium库 5.导入包 二、打开网页、关闭网页、关闭浏览器 1.导入增加一个时间包 2.使用函数打包之前写的浏览器的配置 3.调用 4.打开百度网…

实时操作系统在脑机接口中的技术平衡:满足实时性与 AI 算力需求

在当今医疗科技蓬勃发展的时代&#xff0c;实时操作系统&#xff08;RTOS&#xff09;正逐渐成为医疗设备领域中不可或缺的关键技术。随着脑机接口等前沿技术的飞速发展&#xff0c;对实时性和算力的双重需求达到了前所未有的高度&#xff0c;而 RTOS 在其中扮演着至关重要的角…

循环神经网络(RNN)模型

一、概述 循环神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;是一种专门设计用于处理序列数据&#xff08;如文本、语音、时间序列等&#xff09;的神经网络模型。其核心思想是通过引入时间上的循环连接&#xff0c;使网络能够保留历史信息并影响当前输出。 …

【stm32开发板】原理图设计(电源部分)附:设计PCB流程

一、PCB设计流程 二、操作步骤 1.新建工程 文件→新建→工程 2.命名工程 保存后进入该页面 自生成了一个原理图和PCB 3.新建图页及重命名 右键第一个图页&#xff0c;选择新建图页 右键选择重命名可以为图页改名 4.取消设计规则的22项 5.原理图尺寸调整 如果觉得原理图框的…

MCP入门实战(极简案例)

MCP简介 MCP(Model Context Protocol,模型上下文协议)2024年11月底由 Antbropic 推出的一种开放标准,旨在统一大型语言模型(LLM)与外部数据源和工具之间的通信协议。 Function Calling是AI模型调用函数的机制,MCP是一个标准协议,使AI模型与API无缝交互,而Al Agent是一个…

SCL语言两台电机正反转控制程序从选型、安装到调试全过程的详细步骤指南(下)

阶段三&#xff1a;PLC 编程 (SCL 语言)&#xff08;为了学会结构体和I/O映射可能看着有点复杂&#xff0c;多电机控制及维护好修改&#xff09; 程序结构思路&#xff1a; 1. 定义清晰的数据结构 (STRUCT) 来管理每台电机的所有变量&#xff08;输入、输出、状态、互锁条件&…

apptrace 的优势以及对 App 的价值

官网地址&#xff1a;AppTrace - 专业的移动应用推广追踪平台 apptrace 的优势以及对 App 的价值​ App 拉起作为移动端深度链接技术的关键应用&#xff0c;能实现从 H5 网页到 App 的无缝跳转&#xff0c;并精准定位到 App 内指定页面。apptrace 凭借专业的技术与丰富的经验…

西门子嵌入式学习笔记---(1)裸机和调度器开发

&#x1f308;个人主页&#xff1a; 羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 裸机和调度器开发的对比 嵌入式开发是为了特定目的而设计的计算系统编写软件的过程&#xff0c;这些系统通常会具有受限的资源&#xff08;处理能力&#xff0c;、内存、能源等&…

Rust使用Cargo构建项目

文章目录 你好&#xff0c;Cargo&#xff01;验证Cargo安装使用Cargo创建项目新建项目配置文件解析默认代码结构 Cargo工作流常用命令速查表详细使用说明1. 编译项目2. 运行程序3.快速检查4. 发布版本构建 Cargo的设计哲学约定优于配置工程化优势 开发建议1. 新项目初始化​2. …

Python自动化之selenium语句——元素点击、输入、清空和八大元素定位方法

目录 一、元素定位配置 1.导包 2.查找元素 二、元素交互操作 1.点击 2.输入 3.清空 三、元素定位方法 1.ID 2.NAME 3.CLASS_NAME 4.TAG_NAME 5.LINK_TEXT 6.PARTIAL_LINK_TEXT 7.CSS_SELECTOR 8.XPATH 本节讲解元素定位相关知识 一、元素定位配置 1.导包 2.查…

C++并集查找

前言 C图论 C算法与数据结构 本博文代码打包下载 基本概念 并查集&#xff08;Union-Find&#xff09;是一种用于处理动态连通性&#xff08;直接或间接相连&#xff09;的数据结构&#xff0c;主要支持两种操作&#xff1a;union 和 find。通过这两个基本操作&#xff0c;可…

DeepSeek - 尝试一下GitHub Models中的DeepSeek

1.简单介绍 当前DeepSeek使用的人很多&#xff0c;各大AI平台中也快速引入了DeekSeek&#xff0c;比如Azure AI Foundary(以前名字是Azure AI Studio)中的Model Catalog, HuggingFace, GitHub Models等。同时也出现了一些支持DeepSeek的.NET类库。微软的Semantic Kernel也支持…

2025年人文发展与教育心理学国际会议(ICHDEP 2025)

2025年人文发展与教育心理学国际会议&#xff08;ICHDEP 2025&#xff09; 2025 International Conference on Humanistic Development and Educational Psychology 一、大会信息 会议简称&#xff1a;ICHDEP 2025 大会地点&#xff1a;中国广州 审稿通知&#xff1a;投稿后2…

实测,大模型谁更懂数据可视化?

大家好&#xff0c;我是 Ai 学习的老章 看论文时&#xff0c;经常看到漂亮的图表&#xff0c;很多不知道是用什么工具绘制的&#xff0c;或者很想复刻类似图表。 实测&#xff0c;大模型 LaTeX 公式识别&#xff0c;出乎预料 前文&#xff0c;我用 Kimi、Qwen-3-235B-A22B、…

MySQL高可用方案:Keepalived+双主库架构深度解析与实战指南

MySQL高可用方案:Keepalived+双主库架构深度解析与实战指南 一、方案概述 MySQL双主+Keepalived架构通过双节点互为主从模式结合VRRP协议,实现数据库服务的高可用与自动故障转移。该方案具备以下核心优势: 双活写入能力:两节点均可处理读写请求,通过双向复制保持数据强一…

【MySQL】联合查询(下)

目录 一. 子查询 单行子查询 多行子查询 多列子查询 在from子句中使用子查询 二. 合并查询 union all union 三.插入查询结果 上期我们讲了内连接、外连接、自连接查询&#xff0c;今天我们继续讲其他联合查询&#xff0c;没看过的之前的可以先去看看上期博客&#xff1…

unity—特效闪光衣服的设置

模型设置两个材质球&#xff0c;一个基础色&#xff0c;一个闪光色 闪光层设置 基础色设置

lvs-keepalived高可用群集

目录 1.Keepalived 概述及安装 1.1 Keepalived 的热备方式 1.2 keepalived的安装与服务控制 &#xff08;1&#xff09;安装keep alived (2)控制 Keepalived 服务DNF 安装 keepalived 后,执行以下命令将keepalived 服务设置为开机启动。 2.使用 Keepalived 实现双机热备 …

多端 API 兼容性设计:如何统一 iOS / Android / Web 接口规范?

在移动互联网时代&#xff0c;一个后台服务往往需要同时支撑 iOS、Android 和 Web 三端业务。当某电商App在Android端出现支付接口返回结构不一致导致崩溃&#xff0c;而iOS端却正常运行时&#xff1b;当某个Web端新功能因接口版本问题延期上线时——多端API的兼容性问题已成为…