- sdk/qs 平台模块(安卓参数指纹匿名搜索)+ sdk/apis/qs 取流: 匿名 30s 试听,登录态走签名 track_v2 + spade key AES-CTR 解密 - /login/qs/qr 抖音扫码登录(授权后 sessionid 解锁完整曲目) - /stream/qs/:id 解密流代理,/url 返回的相对地址按请求 host 补全 - 回归测试覆盖 kw 双通道(VIP 真音频/降级链)与 qs 试听;start.bat 去掉 SOURCE_ENABLED 直启
19 lines
752 B
TypeScript
19 lines
752 B
TypeScript
import { b64encode, getCrypto } from "./index.ts";
|
|
import { generateLadonKey, speckEncrypt } from "./speck.ts";
|
|
import type { UnidbgConfig } from "./unidbgconfig.ts";
|
|
|
|
export async function getLadon(timestamp: number, config: UnidbgConfig): Promise<string> {
|
|
const randomBytes = getCrypto().getRandomValues(new Uint8Array(4));
|
|
|
|
const plaintext = new TextEncoder().encode(
|
|
`${timestamp}-${config.licenseId}-${config.aid}`,
|
|
);
|
|
const key = await generateLadonKey(randomBytes, config.aid);
|
|
const encrypted = speckEncrypt(key, plaintext);
|
|
|
|
const result = new Uint8Array(randomBytes.length + encrypted.length);
|
|
result.set(randomBytes);
|
|
result.set(encrypted, randomBytes.length);
|
|
return b64encode(result.buffer);
|
|
}
|