建议增加对efe格式的QQ音乐移动端缓存文件的支持 #192

Open
opened 2021-10-28 16:09:57 +00:00 by nukemiko · 16 comments
nukemiko commented 2021-10-28 16:09:57 +00:00 (Migrated from github.com)

背景和说明

QQ音乐移动端(版本9.13.0.4)的缓存文件(位于/sdcard/qqmusic/cache下),加密格式的缓存文件扩展名是.efe,和下载的文件大小不一致,最新版的Unlock Music无法解锁

源文件(已购单曲,没有qmc版本)
样本分卷1
样本分卷2

**背景和说明** QQ音乐移动端(版本9.13.0.4)的缓存文件(位于/sdcard/qqmusic/cache下),加密格式的缓存文件扩展名是.efe,和下载的文件大小不一致,最新版的Unlock Music无法解锁 [源文件](https://github.com/nukemiko/private-pictures-space/raw/1a5672c5280529e8d9abbdd5866fee2d9abfd00b/%E5%B7%9D%E5%B2%9B%E7%88%B1%20(%E5%B7%9D%E5%B6%8B%E3%81%82%E3%81%84)%20-%20%E6%99%82%E9%9B%A8%20%5Bmqms2%5D.flac)(已购单曲,没有qmc版本) [样本分卷1](https://github.com/nukemiko/private-pictures-space/raw/1a5672c5280529e8d9abbdd5866fee2d9abfd00b/01470199420-297328267.flac.efe.7z.001) [样本分卷2](https://github.com/nukemiko/private-pictures-space/raw/1a5672c5280529e8d9abbdd5866fee2d9abfd00b/01470199420-297328267.flac.efe.7z.002)
Akarinnnnn commented 2021-11-06 14:52:50 +00:00 (Migrated from github.com)

emmm,文件过期了

emmm,文件过期了
xhacker-zzz commented 2021-12-20 19:12:20 +00:00 (Migrated from github.com)

摸索了一晚上,发现凡是.flac.efe后缀的文件的大部分没有加密,因为改.flac后缀以后和原音频比会没有开头,所有个人猜测.flac.efe对.flac文件头做了修改,因为我不太懂音频编码,所有不知道对不对;但.efe文件还不知道是什么东西,因为改了很多文件后缀都匹配不上,不过从.flac.efe的情况看,.efe也可能是部分没加密

摸索了一晚上,发现凡是.flac.efe后缀的文件的大部分没有加密,因为改.flac后缀以后和原音频比会没有开头,所有个人猜测.flac.efe对.flac文件头做了修改,因为我不太懂音频编码,所有不知道对不对;但.efe文件还不知道是什么东西,因为改了很多文件后缀都匹配不上,不过从.flac.efe的情况看,.efe也可能是部分没加密
xhacker-zzz commented 2021-12-20 19:24:10 +00:00 (Migrated from github.com)

另外, @ix64 QQ音乐移动端还大量出现了.mggc1和.mflacc0类型的缓存文件,目前也解密不了,也建议研究一下(应该和mflac,mgg有区别,例如如图是mflacc0改成mflac0后的解密结果)
Screenshot_20211221_015949_com microsoft emmx
Screenshot_20211221_015536_com microsoft emmx

另外, @ix64 QQ音乐移动端还大量出现了.mggc1和.mflacc0类型的缓存文件,目前也解密不了,也建议研究一下(应该和mflac,mgg有区别,例如如图是mflacc0改成mflac0后的解密结果) ![Screenshot_20211221_015949_com microsoft emmx](https://user-images.githubusercontent.com/63585800/146836582-965d4206-c4a7-4e65-a7f9-22d987b75545.jpg) ![Screenshot_20211221_015536_com microsoft emmx](https://user-images.githubusercontent.com/63585800/146836609-b2319d13-4300-4f9a-b704-b41d1c2c8384.jpg)
xhacker-zzz commented 2021-12-20 21:06:35 +00:00 (Migrated from github.com)

最新发现:
1 .efe文件(不包括.flac.efe)前0x1A5位都一样,从0x1A6位开始有区别
2 .flac.efe和.efe文件头都由一段字符和一段数字组成(所以两者编码规则可能相似),其中.flac.efe在这段字符结尾附近会有“FLAC”“ARTIST=”等明文出现,.efe在这段字符开始处附近会有“INFO”字样出现,至于数字段,两者都是由按“8个0-8个数-8个0-8个数-32个0”排列的片段组成

最新发现: 1 .efe文件(不包括.flac.efe)前0x1A5位都一样,从0x1A6位开始有区别 2 .flac.efe和.efe文件头都由一段字符和一段数字组成(所以两者编码规则可能相似),其中.flac.efe在这段字符结尾附近会有“FLAC”“ARTIST=”等明文出现,.efe在这段字符开始处附近会有“INFO”字样出现,至于数字段,两者都是由按“8个0-8个数-8个0-8个数-32个0”排列的片段组成
ix64 commented 2021-12-22 14:07:44 +00:00 (Migrated from github.com)

根据你们提供的和我自己获取的样本来看,.efe .mggc1 .mflacc0 都是 不带密钥 版本的 .mgg .mflac
(密钥存放在App数据库之中,没有嵌入到文件尾部)

根据你们提供的和我自己获取的样本来看,`.efe` `.mggc1` `.mflacc0` 都是 **不带密钥** 版本的 `.mgg` `.mflac` (密钥存放在App数据库之中,没有嵌入到文件尾部)
ix64 commented 2021-12-22 14:16:38 +00:00 (Migrated from github.com)

根据你们提供的和我自己获取的样本来看,.efe .mggc1 .mflacc0 都是 不带密钥 版本的 .mgg .mflac
(密钥存放在App数据库之中,没有嵌入到文件尾部)

  • 新版能确保 .mflac .mgg 解锁成功的官方解法没法使用,毕竟key都没有
  • 反而旧版的探测法能够尝试解密(也仅限于256byte key的情况)
> 根据你们提供的和我自己获取的样本来看,`.efe` `.mggc1` `.mflacc0` 都是 **不带密钥** 版本的 `.mgg` `.mflac` >(密钥存放在App数据库之中,没有嵌入到文件尾部) - 新版能确保 `.mflac` `.mgg` 解锁成功的官方解法没法使用,毕竟key都没有 - 反而旧版的探测法能够尝试解密(也仅限于256byte key的情况)
xhacker-zzz commented 2021-12-22 16:41:46 +00:00 (Migrated from github.com)

根据你们提供的和我自己获取的样本来看,.efe .mggc1 .mflacc0 都是 不带密钥 版本的 .mgg .mflac
(密钥存放在App数据库之中,没有嵌入到文件尾部)

但.efe文件靠前部分有一些以'00000000'开头的块,这和目前来看部分明文的.flac.efe高度相似,而与无此结构的mgg系列应该有一定差异
另外:也许能反汇编找到app数据库?
Screenshot_20211223_003402

> 根据你们提供的和我自己获取的样本来看,`.efe` `.mggc1` `.mflacc0` 都是 **不带密钥** 版本的 `.mgg` `.mflac` > (密钥存放在App数据库之中,没有嵌入到文件尾部) 但.efe文件靠前部分有一些以'00000000'开头的块,这和目前来看部分明文的.flac.efe高度相似,而与无此结构的mgg系列应该有一定差异 另外:也许能反汇编找到app数据库? ![Screenshot_20211223_003402](https://user-images.githubusercontent.com/63585800/147126702-d9f4d24d-5b99-456f-ba5a-61e04433e35e.jpg)
ix64 commented 2021-12-22 17:12:17 +00:00 (Migrated from github.com)

但.efe文件靠前部分有一些以'00000000'开头的块

这个应该不是 .efe 加密的特点;
应该只是 .flac 格式的Metadata Block后面一般有一个较长的 Padding Block,且 key box 比较特殊导致的

另外:也许能反汇编找到app数据库?

这个没啥意义,每首歌都不一样,并不是一个固定的 key

但是初步尝试了一下 .efe 的加密方案似乎与 .mflac 有一些细节上的差异

> 但.efe文件靠前部分有一些以'00000000'开头的块 这个应该不是 `.efe` 加密的特点; 应该只是 `.flac` 格式的Metadata Block后面一般有一个较长的 Padding Block,且 key box 比较特殊导致的 > 另外:也许能反汇编找到app数据库? 这个没啥意义,每首歌都不一样,并不是一个固定的 key 但是初步尝试了一下 `.efe` 的加密方案似乎与 `.mflac` 有一些细节上的差异
Akarinnnnn commented 2021-12-23 09:13:02 +00:00 (Migrated from github.com)

.mqcc单纯改名

`.mqcc`单纯改名
Akarinnnnn commented 2021-12-23 09:20:12 +00:00 (Migrated from github.com)

'*.efe'的秘钥可能是固定的
image
观察发现,前32字节经过加密,但有一部分密文相同;第33字节开始出现明文bis

'*.efe'的秘钥可能是固定的 ![image](https://user-images.githubusercontent.com/43724908/147217898-8e450b32-a9e7-4421-8a1c-fc2fce8315d5.png) 观察发现,前32字节经过加密,但有一部分密文相同;第33字节开始出现明文`bis`等
Akarinnnnn commented 2021-12-23 12:35:36 +00:00 (Migrated from github.com)

'*.efe'的秘钥可能是固定的 image 观察发现,前32字节经过加密,但有一部分密文相同;第33字节开始出现明文bis

我总感觉这就是内容调了下位置

> '*.efe'的秘钥可能是固定的 ![image](https://user-images.githubusercontent.com/43724908/147217898-8e450b32-a9e7-4421-8a1c-fc2fce8315d5.png) 观察发现,前32字节经过加密,但有一部分密文相同;第33字节开始出现明文`bis`等 我总感觉这就是内容调了下位置
xhacker-zzz commented 2021-12-24 09:56:14 +00:00 (Migrated from github.com)

HTTP抓包能拿到key吗?
如果可以拿到,也许能弄清加密方式
Screenshot_20211224_175117
Screenshot_20211224_175247
Screenshot_20211224_175317_com guoshi httpcanary
Screenshot_20211224_175322_com guoshi httpcanary

HTTP抓包能拿到key吗? 如果可以拿到,也许能弄清加密方式 ![Screenshot_20211224_175117](https://user-images.githubusercontent.com/63585800/147342867-00c870f4-eb71-47a8-854b-89802c605297.jpg) ![Screenshot_20211224_175247](https://user-images.githubusercontent.com/63585800/147342875-de76eb61-f3bd-401d-9b1d-4fb14423125a.jpg) ![Screenshot_20211224_175317_com guoshi httpcanary](https://user-images.githubusercontent.com/63585800/147342907-85a6f332-679a-41e2-9592-ff434eac5190.jpg) ![Screenshot_20211224_175322_com guoshi httpcanary](https://user-images.githubusercontent.com/63585800/147342920-20a8806d-f0d0-4161-b242-65914a649d33.jpg)
xhacker-zzz commented 2021-12-24 10:15:14 +00:00 (Migrated from github.com)

这个应该不是 .efe 加密的特点; 应该只是 .flac 格式的Metadata Block后面一般有一个较长的 Padding Block,且 key box 比较特殊导致的

但是.efe对应的应该是ogg或mp3一类的有损格式,如果是flac的话应该对应的是.flac.efe

> 这个应该不是 `.efe` 加密的特点; 应该只是 `.flac` 格式的Metadata Block后面一般有一个较长的 Padding Block,且 key box 比较特殊导致的 但是.efe对应的应该是ogg或mp3一类的有损格式,如果是flac的话应该对应的是.flac.efe
ix64 commented 2021-12-25 04:26:14 +00:00 (Migrated from github.com)

但是.efe对应的应该是ogg或mp3一类的有损格式,如果是flac的话应该对应的是.flac.efe

嗯,我说 .efe 意思是泛指这一类加密

> 但是.efe对应的应该是ogg或mp3一类的有损格式,如果是flac的话应该对应的是.flac.efe 嗯,我说 `.efe` 意思是泛指这一类加密
ix64 commented 2021-12-25 04:28:36 +00:00 (Migrated from github.com)

@xhacker-zzz

HTTP抓包能拿到key吗?

好像不行,印象中加密 key 是放在另一个 https 请求中的

@xhacker-zzz > HTTP抓包能拿到key吗? 好像不行,印象中加密 key 是放在另一个 https 请求中的
mikoto11 commented 2021-12-29 14:27:15 +00:00 (Migrated from github.com)

请问有没有解码mgg0的

请问有没有解码mgg0的
This repo is archived. You cannot comment on issues.
No Milestone
No project
No Assignees
1 Participants
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: um/web-archived#192
No description provided.