lib_um_crypto_rust/um_crypto/mg3d
2024-09-20 23:11:51 +01:00
..
src [mg3d] feat #3: implement migu 3d decipher with improved key guessing 2024-09-20 23:11:51 +01:00
Cargo.toml [mg3d] feat #3: implement migu 3d decipher with improved key guessing 2024-09-20 23:11:51 +01:00
Readme.MD [mg3d] feat #3: implement migu 3d decipher with improved key guessing 2024-09-20 23:11:51 +01:00

咪咕 3D 音乐

整个文件加密,每个文件有独立的密钥。

mg3d_file_key <- md5(b"AC89EC47A70B76F307CB39A0D74BCCB0" + file_key).hex(upper=true)

生成最终的 mg3d_file_key 后,每个字节依序减少密钥的字节内容。

WAV 格式

几乎固定的文件头。

000:0000  52 49 46 46 ?? ?? ?? ?? 57 41 56 45 66 6D 74 20  RIFF....WAVEfmt 
000:0010  ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??  ................
000:0020  06 00 18 00 6A 75 6E 6B 34 00 00 00 00 00 00 00  ....junk4.......
000:0030  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000:0040  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000:0050  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000:0060  64 61 74 61 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??  data............

验证一下前四字节是否解密得到 RIFF、以及 0x60 处是否位 data 来确定。

M4A 格式

前 0x1C 字节固定 (其实前 4 字节有可能会变,但他们用的编码器好像不会变)