3 QQ音乐mflac格式分析
jixunmoe edited this page 2023-05-18 21:25:16 +00:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

⚠️ 此处的信息已过时,且程序已提供支持;该页内容仅供参考。


QQ音乐mflac格式分析

最近发现QQ音乐使用了新的加密音乐格式于是尝试着手分析

从文件大小入手

  • 分别使用不同的客户端下载了同一首音乐的qmcflac格式和新的mflac格式
  • 将qmcflac转换回普通flac格式
  1. 对比发现mflac格式文件大小总是比flac大368bytes
  2. 使用WinHex查看文件发现mflac文件末端的368bytes中除了最后3bytes都是可打印字符
  3. 明显此段为base64编码的数据除去末端364bytes,初步猜测是加密密钥数据。 最后4Bytes为Little-Endian的364即前面密钥数据的长度。 并据此猜测mflac不再和qmcflac一样使用固定mask。
  • 由于decode后无法直接得到有意义数据估计使用了非对称加密。难以找到突破口于是暂时放弃。

参考qmcflac的加密方式

  • qmcflac使用一个128bytes的mask其实可以用64bytes的mask生成与flac进行xor运算并每0x8000bytes后mask向后偏移1byte
  • 参考破解qmcflac时选取文件中一长段根据经验普遍存在原数据为0x00的区域从而获得对应mask
    • 六号flac文件
    • 六号mflac文件
  1. 证实mflac不同文件使用不同mask但mask特征和qmcflac非常类似
    • 三号mflac文件
    • 四号mflac文件
    • qmcflac文件
  2. 尝试用mflac文件提取出来的mask根据qmcflac时的方法解密自身。
    • 代码
    • 源mflac
    • 输出flac
    • SHA256
  • 成功解密但是此方案不确定能对所有文件有效不能确保所有文件都有一长段0x00的区域 因此该方案只能适用于mflac无法使用于mgg

尝试实现自动检测和提取mask

简单验证

有空再补充

  • 将128bytes的mask转换成64bytes
  • 尝试分析其密钥数据