From 574364ae413e881e51f9f10efb4378efb42e85e6 Mon Sep 17 00:00:00 2001 From: binaryify Date: Mon, 25 Dec 2023 09:46:53 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=87=8D=E6=9E=84=20register=5Fanonimo?= =?UTF-8?q?us=20=E6=A8=A1=E5=9D=97=20#1858?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- module/register_anonimous.js | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/module/register_anonimous.js b/module/register_anonimous.js index b735df3..ab91ff2 100644 --- a/module/register_anonimous.js +++ b/module/register_anonimous.js @@ -1,27 +1,29 @@ -// 游客登录 -const crypto = require('crypto') -const ID_XOR_KEY_1 = Buffer.from('3go8&$833h0k(2)2') +const CryptoJS = require('crypto-js') + +const ID_XOR_KEY_1 = '3go8&$833h0k(2)2' function cloudmusic_dll_encode_id(some_id) { - const xored = Buffer.from( - [...some_id].map( - (c, idx) => c.charCodeAt(0) ^ ID_XOR_KEY_1[idx % ID_XOR_KEY_1.length], - ), - ) - const digest = crypto.createHash('md5').update(xored).digest() - return digest.toString('base64') + let xoredString = '' + for (let i = 0; i < some_id.length; i++) { + const charCode = + some_id.charCodeAt(i) ^ ID_XOR_KEY_1.charCodeAt(i % ID_XOR_KEY_1.length) + xoredString += String.fromCharCode(charCode) + } + const wordArray = CryptoJS.enc.Utf8.parse(xoredString) + const digest = CryptoJS.MD5(wordArray) + return CryptoJS.enc.Base64.stringify(digest) } module.exports = async (query, request) => { query.cookie.os = 'iOS' const deviceId = `NMUSIC` - const encodedId = Buffer.from( - `${deviceId} ${cloudmusic_dll_encode_id(deviceId)}`, + const encodedId = CryptoJS.enc.Base64.stringify( + CryptoJS.enc.Utf8.parse( + `${deviceId} ${cloudmusic_dll_encode_id(deviceId)}`, + ), ) - const username = encodedId.toString('base64') const data = { - /* A base64 encoded string. */ - username: username, + username: encodedId, } let result = await request( 'POST',