1
0
forked from um/web
qqmusicunlock/src/decrypt/qmc_key.test.ts

31 lines
768 B
TypeScript
Raw Normal View History

import {QmcDeriveKey, simpleMakeKey} from "@/decrypt/qmc_key";
import fs from "fs";
test("key dec: make simple key", () => {
expect(
simpleMakeKey(106, 8)
).toStrictEqual(
[0x69, 0x56, 0x46, 0x38, 0x2b, 0x20, 0x15, 0x0b]
)
})
function loadTestDataKeyDecrypt(name: string): {
cipherText: Uint8Array,
clearText: Uint8Array
} {
return {
cipherText: fs.readFileSync(`testdata/${name}_key_raw.bin`),
clearText: fs.readFileSync(`testdata/${name}_key.bin`)
}
}
test("key dec: real file", async () => {
const cases = ["mflac_map", "mgg_map", "mflac0_rc4"]
for (const name of cases) {
const {clearText, cipherText} = loadTestDataKeyDecrypt(name)
const buf = QmcDeriveKey(cipherText)
expect(buf).toStrictEqual(clearText)
}
})