ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

QMCDecode深度解析:17种QQ音乐加密音频格式一键转FLAC/MP3完整指南

QMCDecode深度解析:17种QQ音乐加密音频格式一键转FLAC/MP3完整指南 QMCDecode深度解析17种QQ音乐加密音频格式一键转FLAC/MP3完整指南【免费下载链接】QMCDecodeQQ音乐QMC格式转换为普通格式(qmcflac转flacqmc0,qmc3转mp3, mflac,mflac0等转flac)仅支持macOS可自动识别到QQ音乐下载目录默认转换结果存储到~/Music/QMCConvertOutput,可自定义需要转换的文件和输出路径项目地址: https://gitcode.com/gh_mirrors/qm/QMCDecodeQMCDecode是macOS原生的开源工具用于将QQ音乐的QMC加密音频qmcflac、qmc0、mflac等批量转换为标准FLAC、MP3、OGG格式覆盖17种加密扩展名与3套解密算法适合做本地音乐库迁移的收藏者。一、它能帮你解决什么QMC格式转换的痛点本节回答为什么QQ音乐下载的文件在别的播放器里打不开QQ音乐Mac客户端下载的文件是加密容器尾部密钥结构音频主体经过扰乱密钥附在文件末尾直接播放只会得到噪音。QMCDecode解决三件事把密钥找出来、把数据解开、写成标准容器。能力矩阵来自源码格式表 QMCDecode/Constants.swift加密扩展名目标格式典型场景qmcflac / mflac / mflac0 / bkcflacFLAC桌面端无损下载保留音质qmc0 / qmc3 / bkcmp3MP3桌面端有损下载跨设备播放qmc2 / qmcogg / mgg / mgg1OGGOgg系有损文件666c6163 / 6d7033 / 6f6767 / 6d3461 / 776176 / tkmFLAC/MP3/OGG/M4A/WAV十六进制命名或被改名的文件另有两项开箱能力启动时自动识别QQ音乐Mac客户端的下载目录默认输出到~/Music/QMCConvertOutput两者都可在界面里自定义。二、先跑起来QMCDecode快速上手四步本节回答从零到第一次成功转换要多久拉取源码git clone https://gitcode.com/gh_mirrors/qm/QMCDecode—— 官方仓库地址。打开工程open QMCDecode.xcodeproj—— 标准Xcode应用工程无第三方依赖。编译运行Xcode中按⌘B等待窗口弹出 —— 应用会自动扫描QQ音乐Mac的下载目录~/Library/Containers/com.tencent.QQMusicMac/Data/Library/Application Support/QQMusicMac/iQmc/把识别到的加密文件填入表格。开始转换点击右下角Start结果落在~/Music/QMCConvertOutput结束时弹窗给出成功/失败统计。图中左侧为QQ音乐下载目录的文件列表右侧为输出路径列表填充后点击Start即开始批量转换。三、拆开来看解密原理五步链路与关键代码摘录本节回答QMCDecode是怎么打开这把锁的完整处理链路分五步格式识别按扩展名查encryptExtDictionary确定目标格式与加密版本v1/v2。定位密钥读文件末尾4字节区分来源——以QTag结尾是移动端下载密钥长度在尾部前4字节否则为PC下载末尾4字节本身就是密钥长度小端序。派生密钥对原始密钥做Base64解码用TEATiny Encryption Algorithm——一种轻量对称加密好比给数据上的小锁跑32轮解密还原出真实密钥。选择密码器密钥长度超过300字节走分段处理的RC4类密码器否则走映射类密码器密钥长度≥0x300时直接使用内置256字节固定密钥。解密写盘逐字节过密码引擎以原子写入方式输出到目标目录。定位密钥这一步的摘录来自 QMCDecode/QMDecoder.swifttry fileHandle.seek(toOffset: UInt64(self.originFileLength - 4)) let lastFourBytes try fileHandle.readToEnd() if String(bytes: lastFourBytes, encoding: .utf8) QTag { // 移动端下载尾部前4字节是密钥长度 self.realAudioSize self.originFileLength - Int(keySize) - 8 } else { // PC/macOS下载末尾4字节即密钥长度小端序 let keySize lastFourBytes.withUnsafeBytes { $0.load(as: UInt32.self).littleEndian } // keySize 0x300改用内置固定256字节密钥 }这段代码先用文件尾判断这份文件是谁加密的再决定密钥在哪个位置、音频主体有多长。密钥派生的摘录来自 QMCDecode/QMCKeyDecoder.swiftguard let decoded Data(base64Encoded: rawKey) else { throw QMCKeyDecoderError.canNotConstructBase64Key } let simpleKey simpleMakeKey(seed: 106, length: 8) var teaKey UInt8 for index in 0..8 { teaKey[index 1] simpleKey[index] teaKey[(index 1) 1] decoded[index] } let inBuffer UInt8 return try decryptTencentTea(inBuffer: inBuffer, key: teaKey)它用固定种子106生成8字节辅助密钥与解码结果的前8字节逐字节交错拼成16字节TEA密钥再解开剩余部分。TEA算法本体在 QMCDecode/TeaCipher.swift8字节分组、16字节密钥、默认64轮常量delta 0x9e3779b9黄金比例常数全程以32位大端整数运算保证不同机器上结果一致。四、三个真实场景个人迁移、标签修复、批量脚本本节回答个人、团队、自动化三类用法分别怎么做4.1 个人使用整库迁移打开应用列表自动填充后点Start。完成后用ls ~/Music/QMCConvertOutput检查——同名文件换了后缀即转换成功拖进Music.app即可播放。4.2 团队使用批量修复标签QMC文件本身不带完整标准标签转换后艺术家/专辑信息可能不对。用开源标签编辑器kid3批量处理kid3 ~/Music/QMCConvertOutput导入目录后按列匹配艺术家与专辑名批量保存。4.3 自动化集成QMC文件预检脚本应用本身是GUI自动化第一步可以用脚本清点下载目录里有哪些待转换文件find ~/Library/Containers/com.tencent.QQMusicMac \ \( -name *.qmcflac -o -name *.qmc0 -o -name *.qmc3 \ -o -name *.mgg -o -name *.mflac \) -type f把结果目录整体拖进应用列表即可完成批量处理脚本输出也可以用来核对转换数量。五、工程细节与性能账本本节回答批量转换又快又稳背后做了哪些事项目资料未公布基准数据以下均为源码可验证的实现与定性效果工程细节具体实现效果每核并发队列按CPU核心数各建一个队列文件按index % coreCount轮转派发QoS为utility多文件并行解密批处理时间取决于最长文件而非总和原子写盘输出使用Data.WritingOptions.atomic中途失败不会留下半截文件分段密码处理RC4类密码器按128字节首段5120字节分段处理长文件分段运算内存占用可控密钥自检派生密钥后校验7字节零填充区zeroLength 7不符即抛错坏密钥当场报错不产出损坏音频固定密钥分支密钥长度≥0x300时直接用内置256字节密钥跳过尾部取钥适配新格式文件不依赖尾部密钥区六、踩坑记录与参与项目本节回答常见翻车点在哪、怎么修以及贡献流程。症状1列表为空点Start提示没有可供转换的数据原因默认扫描的是QQ音乐Mac客户端的下载目录~/Library/Containers/com.tencent.QQMusicMac/Data/Library/Application Support/QQMusicMac/iQmc/未安装该客户端或文件被移动时列表为空。 解决ls上述路径确认内容或点Choose File手动选择文件/目录支持多选。症状2转换成功但艺术家/专辑信息错误原因QQ音乐加密文件未携带完整标准标签本项目只做解密不做标签改写。 解决用kid3批量修正支持导入目录、批量保存。症状3个别文件报 zeroCheckFailed 或 canNotReadRawKeyBuffer原因文件不完整或扩展名与实际加密版本不符常见于手动改名。 解决file 你的文件.qmcflac核对实际类型失败项从QQ音乐重新下载源文件。贡献流程四步fork仓库 →git checkout -b feature/xxx建分支 → 本地xcodebuild test -scheme QMCDecode跑测试 → 提交PR等待评审。结语QMCDecode把QMC格式转换里找钥、开锁、换壳三步压缩成一次点击核心算法实现全部开源可查。它的演进方向也很明确跟进QQ音乐的新加密版本持续扩充格式覆盖表。对开发者而言它同时是逆向专有加密格式并工具化的一份完整参考样本。【免费下载链接】QMCDecodeQQ音乐QMC格式转换为普通格式(qmcflac转flacqmc0,qmc3转mp3, mflac,mflac0等转flac)仅支持macOS可自动识别到QQ音乐下载目录默认转换结果存储到~/Music/QMCConvertOutput,可自定义需要转换的文件和输出路径项目地址: https://gitcode.com/gh_mirrors/qm/QMCDecode创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表