Swift实现TEA分组密码:QMCDecode破解QQ音乐密钥背后的加密算法核心
Swift实现TEA分组密码QMCDecode破解QQ音乐密钥背后的加密算法核心【免费下载链接】QMCDecodeQQ音乐QMC格式转换为普通格式(qmcflac转flacqmc0,qmc3转mp3, mflac,mflac0等转flac)仅支持macOS可自动识别到QQ音乐下载目录默认转换结果存储到~/Music/QMCConvertOutput,可自定义需要转换的文件和输出路径项目地址: https://gitcode.com/gh_mirrors/qm/QMCDecodeQMCDecode 是一款运行在 macOS 上的音频转换工具能把 QQ 音乐加密的 QMC 格式批量转换为普通格式qmcflac 转 flac、qmc0/qmc3 转 mp3、mflac/mflac0 转 flac 等。它破解密钥的核心正是一个用 Swift 实现的TEA 分组密码。这篇文章带你从零看懂TEA 算法是什么、Swift 版本如何落地、QQ 音乐的真实解密密钥又是怎样一步步解出来的。为什么 QMC 密钥要用 TEA 分组密码先简单认识一下TEATiny Encryption Algorithm微小加密算法这个轻量级选手分组结构每次处理 64 位8 字节数据块密钥为 128 位16 字节迭代混合通过加法 异或 移位反复搅乱明文轮数越多安全性越高魔法常数每轮累加0x9e3779b9黄金比例在 32 位下的近似值这是 TEA 的灵魂⚡极简实现没有查表、没有 S 盒几行代码就能写完在 QMC 文件中TEA 并不直接加密音频正文而是用来解密文件尾部附带的原始密钥——先用 TEA 还原出真实密钥再由流密码XOR / RC4逐字节解开音频数据。这也是 QMCDecode 整个破解流程的起点。QMCDecode 新手上手3 步完成 qmcflac 转 flac如果你只是想用工具操作非常简单获取源码仓库为只读镜像git clone https://gitcode.com/gh_mirrors/qm/QMCDecode编译运行打开 QMCDecode.xcodeprojXcode 中 Run 即可。选择目录并开始转换工具会自动识别 QQ 音乐下载目录~/Library/Containers/com.tencent.QQMusicMac/.../iQmc/默认输出到~/Music/QMCConvertOutput也可自定义输入文件和输出路径。支持的格式对照表定义在 Constants.swift加密格式转换结果qmcflac / qmcoggflac / oggmflac / mflac0flacqmc0 / qmc3mp3mgg / mgg1 / qmcoggoggbkcmp3 / bkcflac / tkmmp3 / flac / m4a 转换后的音频若标签Tag显示不对可用 kid3 等工具批量修复参考 README.md。TEA Swift 实现参数、加密循环与关键细节核心实现全部位于 TeaCipher.swift关键参数一目了然参数值含义blockSize8分组长度字节即 64 位keySize16密钥长度字节即 128 位delta0x9e3779b9TEA 黄金比例常数numRounds64默认迭代轮数必须为偶数Swift 版本有三个值得新手注意的写法细节① 密钥拆分为 4 个大端 32 位字初始化时把 16 字节密钥切分为key0~key3并强制转换为大端序见 TeaCipher.swift保证不同平台上运算结果一致。② 加密主循环两轮一次、共 32 次迭代以 64 轮为例实际循环rounds/2 32次每次同时更新两个半字v0、v1sum sum delta v0 v0 (((v1 4) key0) ^ (v1 sum) ^ ((v1 5) key1)) v1 v1 (((v0 4) key2) ^ (v0 sum) ^ ((v0 5) key3))注意全程使用溢出包裹加法——TEA 的一切运算都被约束在 32 位框框内见 TeaCipher.swift一旦溢出就会得到错误结果。③ 解密 逆序执行解密不是反过来写一遍而是从sum delta * rounds/2出发用减法逐步回退见 TeaCipher.swift。加法与减法在模 2³² 意义下天然互逆这正是 FEAST 结构分组密码的优雅之处。腾讯 TEA 密钥派生真实解密密钥如何解出拿到文件尾部的原始密钥后真正的工作由 QMCKeyDecoder.swift 完成流程分为 4 步定位密钥QMDecoder.swift 先读文件最后 4 字节——移动端下载的文件以QTag结尾macOS 端下载的文件则是 4 字节小端长度值。Base64 解码 混合派生对原始密钥做 Base64 解码再用tan(106 i×0.1)生成一份 8 字节的简单密钥与解码结果逐字节交错拼出 16 字节 TEA 密钥见 QMCKeyDecoder.swift。腾讯 TEA 解密以32 轮 TEA解密剩余数据并模拟 CBC 模式——每个分组解密后与前一分组异或同时跳过 2 字节盐、校验 7 字节零填充是否合法见 QMCKeyDecoder.swift。选择流密码解音频派生出的密钥长度大于 300 字节时用类 RC4 流密码 QMRC4Cipher否则用带位旋转的 XOR 密码 QMMapCipher 逐字节解开音频正文。整个链路可以概括为TEA 打开密钥 → 流密码打开音频分工清晰。QMCDecode 源码导航 文件职责TeaCipher.swiftTEA 分组密码的 Swift 实现加/解密QMCKeyDecoder.swiftBase64 腾讯 TEA 密钥派生与校验QMDecoder.swift文件结构解析、密钥定位与解码调度QMCipher.swiftXOR / 位旋转 / RC4 三类音频流密码Constants.swift格式映射表与内置 256 字节固定密钥README.md支持格式与使用说明写在最后QMCDecode 用一个不到 130 行的 Swift 文件完整呈现了 TEA 分组密码的精髓黄金比例常数、偶数轮迭代、大端字节序、溢出包裹运算。对于想学习分组密码原理的开发者来说它是极佳的入门范例——读懂了 TEA再去看 AES 等更复杂的算法就会轻松许多。而工具本身也让 Mac 用户能一键把 qmcflac 还原为标准 flac值得收藏。【免费下载链接】QMCDecodeQQ音乐QMC格式转换为普通格式(qmcflac转flacqmc0,qmc3转mp3, mflac,mflac0等转flac)仅支持macOS可自动识别到QQ音乐下载目录默认转换结果存储到~/Music/QMCConvertOutput,可自定义需要转换的文件和输出路径项目地址: https://gitcode.com/gh_mirrors/qm/QMCDecode创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

TanStack Table Alpine 适配层解析:flexRender() 底层渲染函数与 FlexRender 包装器

TanStack Table Alpine 适配层解析:flexRender() 底层渲染函数与 FlexRender 包装器

TanStack Table Alpine 适配层解析:flexRender() 底层渲染函数与 FlexRender 包装器 【免费下载链接】table 🤖 Headless UI for building powerful tables & datagrids for TS/JS - React-Table, Vue-Table, Solid-Table, Svelte-Table 项目地址:…

2026/9/19 17:19:46 阅读更多 →
ZeroClaw Python Skills 执行指南:三层安全策略、可信本机运行与自定义 Docker 运行时镜像

ZeroClaw Python Skills 执行指南:三层安全策略、可信本机运行与自定义 Docker 运行时镜像

人工智能AI Agent交互助手工具调用MCP Clients本地部署Agent 工作流RAG 【免费下载链接】zeroclaw Fast, small, and fully autonomous AI personal assistant infrastructure, any OS, any platform — deploy anywhere, swap anything 🦀 项目地址: ht…

2026/9/19 17:19:46 阅读更多 →
告别手动接口请求:用 TanStack Query 重构前端服务端状态管理

告别手动接口请求:用 TanStack Query 重构前端服务端状态管理

如果你跟我一样,这几年在前端项目里反复写 loading、error、data 三件套,那你大概率也经历过这种场景:页面越做越多,接口请求的重复代码越来越多,最后每个组件里都塞满了一堆 useState、useEffect 和 axios 调用。一开…

2026/9/20 20:38:50 阅读更多 →

最新新闻

Preact Table 的 AppGroupColumnDef:预绑定组件的增强分组列定义

Preact Table 的 AppGroupColumnDef:预绑定组件的增强分组列定义

前端UI组件 【免费下载链接】table 🤖 Headless UI for building powerful tables & datagrids for TS/JS - React-Table, Vue-Table, Solid-Table, Svelte-Table 项目地址: https://gitcode.com/gh_mirrors/ta/table 点击查看 免费下载 导读 AppG…

2026/9/20 20:39:04 阅读更多 →
用 ChatTTS-ui 在本地跑通离线语音合成:从部署到出声的完整路径

用 ChatTTS-ui 在本地跑通离线语音合成:从部署到出声的完整路径

用 ChatTTS-ui 在本地跑通离线语音合成:从部署到出声的完整路径 【免费下载链接】ChatTTS-ui 一个简单的本地网页界面,使用ChatTTS将文字合成为语音,同时支持对外提供API接口。A simple native web interface that uses ChatTTS to synthesiz…

2026/9/20 20:39:04 阅读更多 →
快速备份QQ空间历史说说:GetQzonehistory 新手完整指南

快速备份QQ空间历史说说:GetQzonehistory 新手完整指南

快速备份QQ空间历史说说:GetQzonehistory 新手完整指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory GetQzonehistory 是一个把你自己QQ空间里的历史说说抓取下来&#xf…

2026/9/20 20:39:04 阅读更多 →
ChatTTS-ui AMD显卡加速:ROCm全链路配置与实测数据

ChatTTS-ui AMD显卡加速:ROCm全链路配置与实测数据

ChatTTS-ui AMD显卡加速:ROCm全链路配置与实测数据 【免费下载链接】ChatTTS-ui 一个简单的本地网页界面,使用ChatTTS将文字合成为语音,同时支持对外提供API接口。A simple native web interface that uses ChatTTS to synthesize text into …

2026/9/20 20:39:04 阅读更多 →
三步装好、三种场景调好:华硕笔记本 GHelper 完整指南

三步装好、三种场景调好:华硕笔记本 GHelper 完整指南

三步装好、三种场景调好:华硕笔记本 GHelper 完整指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Ex…

2026/9/20 20:39:04 阅读更多 →
OpenCode + DeepSeek API 自配路线,Base URL 填 TaoToken

OpenCode + DeepSeek API 自配路线,Base URL 填 TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 20:38:03 阅读更多 →

日新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →