【QQ音樂】sign簽名| data參數加密 | AES-GCM加密 | webpack (下)

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.pswp.cn/news/907908.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/907908.shtml
英文地址,請注明出處:http://en.pswp.cn/news/907908.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Codeforces Round 1028 (Div. 2)(A-D)

題面鏈接&#xff1a;Dashboard - Codeforces Round 1028 (Div. 2) - Codeforces A. Gellyfish and Tricolor Pansy 思路 要知道騎士如果沒了那么這個人就失去了攻擊手段&#xff0c;貪心的來說我們只需要攻擊血量少的即可&#xff0c;那么取min比較一下即可 代碼 void so…

【存儲基礎】存儲設備和服務器的關系和區別

文章目錄 1. 存儲設備和服務器的區別2. 客戶端訪問數據路徑場景1&#xff1a;經過服務器處理場景2&#xff1a;客戶端直連 3. 服務器作為"中轉站"的作用 剛開始接觸存儲的時候&#xff0c;以為數據都是存放在服務器上的&#xff0c;服務器和存儲設備是一個東西&#…

macOS 安裝 Grafana + Prometheus + Node Exporter

macOS 安裝指南&#xff1a;Grafana Prometheus Node Exporter 目錄簡介&#x1f680; 快速開始 安裝 Homebrew1. 安裝 Homebrew2. 更新 Homebrew 安裝 Node Exporter使用 Homebrew 安裝驗證 Node Exporter 安裝 Prometheus使用 Homebrew 安裝驗證安裝 安裝 Grafana使用 Home…

不可變集合類型轉換異常

記錄一個異常&#xff1a;class java.util.ImmutableCollections$ListN cannot be cast to class java.util.ArrayList (java.util.ImmutableCollections$ListN and java.util.ArrayList 文章目錄 1、原因2、解決方式一3、解決方式二4、關于不可變集合的補充4.1 JDK8和9的對比4…

【DAY37】早停策略和模型權重的保存

內容來自浙大疏錦行python打卡訓練營 浙大疏錦行 知識點&#xff1a; 過擬合的判斷&#xff1a;測試集和訓練集同步打印指標模型的保存和加載 僅保存權重保存權重和模型保存全部信息checkpoint&#xff0c;還包含訓練狀態 早停策略 作業&#xff1a; 對信貸數據集訓練后保存權…

【Zephyr 系列 3】多線程與調度機制:讓你的 MCU 同時干多件事

好的,下面是Zephyr 系列第 3 篇:聚焦 多線程與調度機制的實踐應用,繼續面向你這樣的 Ubuntu + 真板實戰開發者,代碼清晰、講解通俗、結構規范,符合 CSDN 高質量博客標準。 ??關鍵詞:Zephyr、線程調度、k_thread、k_sleep、RTOS、BluePill ??適合人群:想從裸機開發進…

實現RabbitMQ多節點集群搭建

目錄 引言 一、環境準備 二、利用虛擬機搭建 ? 三、鏡像集群配置 四、HAProxy實現負載均衡(主用虛擬機操作) 五、測試RabbitMQ集群搭建情況 引言 在現代分布式系統中&#xff0c;消息隊列&#xff08;Message Queue&#xff09;扮演著至關重要的角色,而 RabbitMQ 作為…

異步上傳石墨文件進度條前端展示記錄(采用Redis中String數據結構實現-蘇東坡版本)

昔者&#xff0c;有客臨門&#xff0c;亟需自石墨文庫中擷取卷帙若干。此等文冊&#xff0c;非止一卷&#xff0c;乃累牘連篇&#xff0c;亟需批量轉置。然吾輩慮及用戶體驗&#xff0c;當效東坡"腹有詩書氣自華"之雅意&#xff0c;使操作如行云流水&#xff0c;遂定…

Axure 基礎入門

目錄 認識產品經理 項目團隊* 基本概述 認識產品經理 A公司產品經理 B公司產品經理 C公司產品經理 D公司產品經理 產品經理工作范圍 產品經理工作流程* 產品經理的職責 產品經理的分類 產品經理能力要求 產品工具 產品體驗報告 原型設計介紹 原型設計概述 為…

零基礎學習計算機網絡編程----socket實現UDP協議

本章將會詳細的介紹如何使用 socket 實現 UDP 協議的傳送數據。有了前面基礎知識的鋪墊。對于本章的理解將會變得簡單。將會從基礎的 Serve 的初始化&#xff0c;進階到 Client 的初始化&#xff0c;以及 run。最后實現一個簡陋的小型的網絡聊天室。 目錄 1.UdpSever.h 1.1 構造…

普中STM32F103ZET6開發攻略(二)

接上文&#xff1a;普中STM32F103ZET6開發攻略&#xff08;一&#xff09;-CSDN博客 各位看官老爺們&#xff0c;點擊關注不迷路喲。你的點贊、收藏&#xff0c;一鍵三連&#xff0c;是我持續更新的動力喲&#xff01;&#xff01;&#xff01; 目錄 接上文&#xff1a;普中…

用提示詞寫程序(3),VSCODE+Claude3.5+deepseek開發edge擴展插件V2

edge擴展插件;篩選書簽,跳轉搜索,設置背景 鏈接: https://pan.baidu.com/s/1nfnwQXCkePRnRh5ltFyfag?pwd86se 提取碼: 86se 導入解壓的擴展文件夾: 導入擴展成功: edge擴展插件;篩選書簽,跳轉搜索,設置背景

電腦桌面便簽軟件哪個好?桌面好用便簽備忘錄推薦

在日常辦公中&#xff0c;一款優秀的桌面便簽工具能顯著提升工作效率。面對市面上琳瑯滿目的選擇&#xff0c;不少用戶都難以抉擇。如果你正在尋找一款兼具輕量化與多功能性的便簽軟件&#xff0c;那么集實用性與便捷性于一身的"好用便簽"&#xff0c;或許就是你的理…

性能優化 - 工具篇:基準測試 JMH

文章目錄 Pre引言1. JMH 簡介2. JMH 執行流程詳解3. 關鍵注解詳解3.1 Warmup3.2 Measurement3.3 BenchmarkMode3.4 OutputTimeUnit3.5 Fork3.6 Threads3.7 Group 與 GroupThreads3.8 State3.9 Setup 與 TearDown3.10 Param3.11 CompilerControl 4. 示例代碼與分析4.1 關鍵點解讀…

2025年十大AI幻燈片工具深度評測與推薦

我來告訴你一個好消息。 我們已經親自測試和對比了市面上最優秀的AI幻燈片工具&#xff0c;讓你無需再為選擇而煩惱。 得益于AI技術的飛速發展&#xff0c;如今你可以快速制作出美觀、專業的幻燈片。 這些智能平臺的功能遠不止于配色美化——它們能幫你頭腦風暴、梳理思路、…

雪花算法:分布式ID生成的優雅解決方案

一、雪花算法的核心機制與設計思想 雪花算法&#xff08;Snowflake&#xff09;是由Twitter開源的分布式ID生成算法&#xff0c;它通過巧妙的位運算設計&#xff0c;能夠在分布式系統中快速生成全局唯一且趨勢遞增的ID。 1. 基本結構 雪花算法生成的是一個64位&#xff08;lo…

第1章:走進Golang

第1章&#xff1a;走進Golang 一、Golang簡介 Go語言&#xff08;又稱Golang&#xff09;是由Google的Robert Griesemer、Rob Pike及Ken Thompson開發的一種開源編程語言。它誕生于2007年&#xff0c;2009年11月正式開源。Go語言的設計初衷是為了在不損失應用程序性能的情況下…

Higress項目解析(二):Proxy-Wasm Go SDK

3、Proxy-Wasm Go SDK Proxy-Wasm Go SDK 依賴于 tinygo&#xff0c;同時 Proxy - Wasm Go SDK 是基于 Proxy-Wasm ABI 規范使用 Go 編程語言擴展網絡代理&#xff08;例如 Envoy&#xff09;的 SDK&#xff0c;而 Proxy-Wasm ABI 定義了網絡代理和在網絡代理內部運行的 Wasm …

NVMe IP現狀掃盲

SSD優勢 與機械硬盤&#xff08;Hard Disk Driver, HDD&#xff09;相比&#xff0c;基于Flash的SSD具有更快的數據隨機訪問速度、更快的傳輸速率和更低的功耗優勢&#xff0c;已經被廣泛應用于各種計算領域和存儲系統。SSD最初遵循為HDD設計的現有主機接口協議&#xff0c;例…

`docker commit` 和 `docker save`區別

理解 docker commit 和 docker save 之間的區別對于正確管理 Docker 鏡像非常重要。讓我們詳細解釋一下這兩個命令的作用及其區別。 1. docker commit 作用&#xff1a; docker commit roop-builder roop:v1 命令的作用是基于一個正在運行的容器 roop-builder 創建一個新的鏡…