30 lines
1.0 KiB
Plaintext
30 lines
1.0 KiB
Plaintext
|
# 咪咕 3D 音乐
|
||
|
|
||
|
整个文件加密,每个文件有独立的密钥。
|
||
|
|
||
|
```py
|
||
|
mg3d_file_key <- md5(b"AC89EC47A70B76F307CB39A0D74BCCB0" + file_key).hex(upper=true)
|
||
|
```
|
||
|
|
||
|
生成最终的 `mg3d_file_key` 后,每个字节依序减少密钥的字节内容。
|
||
|
|
||
|
## WAV 格式
|
||
|
|
||
|
几乎固定的文件头。
|
||
|
|
||
|
```text
|
||
|
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 字节有可能会变,但他们用的编码器好像不会变)
|