不再被平台锁住:Unlock-Music 本地音乐解密从原理到实操

📅 2026/8/13 12:36:35
不再被平台锁住:Unlock-Music 本地音乐解密从原理到实操
不再被平台锁住Unlock-Music 本地音乐解密从原理到实操【免费下载链接】unlock-music在浏览器中解锁加密的音乐文件。原仓库 1. https://github.com/unlock-music/unlock-music 2. https://git.unlock-music.dev/um/web项目地址: https://gitcode.com/gh_mirrors/un/unlock-musicUnlock-Music 是一个在浏览器中运行的本地音乐解密工具代码以 MIT 协议开源。它读取加密音频、识别格式、还原出标准 MP3 或 FLAC全程不依赖任何服务器。读完这篇文章你能搞清楚它为什么安全、如何部署以及怎样用它处理手头的加密文件。换了一台设备音乐文件集体失声换手机的那天晚上我把旧手机里整个音乐文件夹拷了出来。几百首歌封面、歌名、歌手全在看起来一切正常。可新手机上的播放器一打开就报错电脑里的软件也一个都不认识。问题出在文件扩展名上.qmcflac、.ncm、.kgm、.kwm这些后缀在标准播放器眼里根本不存在。这不是个例。几乎所有主流音乐 App 下载下来的歌曲都不是可以直接播放的音频文件。它们大多经过了一层改写格式由各家平台自定义只有自家播放器能解开。加密格式从何而来要理解解密工具先要理解加密格式出现的原因。音乐平台希望歌曲只能在自家 App 里播放于是用各自设计的算法对音频文件做处理再套上专属扩展名。QQ 音乐有一整套.qmc系列和.mflac、.mgg新格式网易云音乐用.ncm酷狗是.kgm、.vpr酷我、虾米、咪咕、喜马拉雅各有各的一套。这些格式的差异并不只是扩展名不同。底层可能是同一段音频但经过的变换算法、密钥提取方式、元数据存放位置都不同彼此之间互不兼容。结果就是用户在多个平台买了歌本地文件却只能在各自的 App 里听换设备、换播放器都寸步难行。这里要澄清一个概念解密不等于破解。解密只是把用户自己付费购买、已下载到本地的文件还原成通用音频格式不涉及绕过授权获取新内容。这一点在后面的使用边界里还会再提。为什么解密能全程发生在浏览器里Unlock-Music 的与众不同之处在于整个解密流程没有服务端。网页通过浏览器的文件读取接口拿到本地文件数据只存在于当前页面的内存里处理完成后直接生成下载。没有上传就没有泄露路径。那性能怎么办纯 JavaScript 逐字节处理大音频文件会明显偏慢项目用 WebAssembly 解决这个问题。src/QmcWasm/和src/KgmWasm/两个目录里C 编写的解密核心被编译成 wasm 模块在浏览器里以接近原生代码的速度运行主要承担 QQ 音乐和酷狗格式的解密。工具是否可信可以从源码本身找答案。src/decrypt/目录下每个格式对应一个模块qmc.ts、ncm.ts、kgm.ts、kwm.ts、xm.ts、mg3d.ts另有qmc_wasm.ts、kgm_wasm.ts负责与 wasm 模块交互。utils/tea.ts实现了腾讯系格式用到的 Tea 算法。所有文件按扩展名在src/decrypt/index.ts的统一入口处分派逻辑公开任何人都可以逐行核对确认不存在偷偷外传数据的代码。从克隆到出文件完整操作流程动手前先确认环境里有 Node.js 和 npm。然后克隆仓库git clone https://gitcode.com/gh_mirrors/un/unlock-music cd unlock-music按锁定的版本安装依赖npm ci想直接跑起来看效果用开发模式npm run serve浏览器会自动打开本地页面。把加密文件拖进页面中央的拖放区域工具会按扩展名自动识别格式逐个解密。也可以点选择文件按钮手动挑选一次能选多个。不需要源码的话更省事的做法是直接用预构建版本。解压后部署到静态目录或本地打开页面即可。注意一个细节如果打算双击 index.html 用file://协议直接打开要选 legacy 构建modern 构建要求通过 http(s) 协议访问。解密完成后页面会列出结果列表每条显示识别出的歌曲名、歌手、专辑和音频格式。点下载拿到还原后的文件或点下载全部一次拿齐。原文件的元数据包括标题、艺术家、专辑和封面会尽量完整保留。界面里值得留意的几个细节批量处理是默认能力混合格式的文件可以一次拖入工具按各自算法分别处理互不干扰。解密后的标签想微调可以在结果列表里打开编辑对话框修改标题、歌手、专辑、流派也能更换封面图。文件命名规则可以设置成歌手 - 标题或其他策略对应src/utils/utils.ts里的FilenamePolicy枚举。处理大量文件时建议勾选立即保存。开启后每首歌解密完直接写入本地文件系统而不是全部积存在浏览器内存里能避免几百首歌同时驻留内存导致页面卡死或崩溃。项目本身是 PWA支持安装到桌面之后可以离线打开仅首次加载时需要网络获取页面和 wasm 模块。更大的批量浏览器扩展与命令行如果解密的场景很频繁可以构建浏览器扩展。执行npm run build之后再运行npm run make-extension脚本会在extension/目录基础上生成扩展包。装进浏览器后在文件上右键即可调用解密不用每次打开网页。批量需求更大的情况官方还提供了 CLI 版本。网页版受浏览器内存约束单次处理的文件总量有限命令行版本没有这些限制适合一次处理上千首歌的迁移场景也方便写进自动化脚本。合法使用与边界这个工具解决的是可携带性问题而不是版权问题。合理的用途包括为已购买的歌曲做本地备份把加密格式转成通用格式以便在不同设备播放以及在换机时迁移自己的音乐库。开源仓库的说明里也写明项目以学习和研究技术为初衷。反过来把解密后的文件分享给他人、用于商业场合、解密自己没有购买的内容都不在正当使用范围内。工具本身保持中立怎么用它由使用者自己决定。两个常被问到的点问网页版遇到解不开的格式怎么办个别新格式比如.mflach在网页端被刻意跳过抛出提示要求改用 CLI 版本。这类格式的密钥机制尚不稳定网页端不强行支持命令行版本通常会先跟进。问modern 和 legacy 构建到底差在哪两者功能一致区别在运行环境。legacy 兼容旧浏览器也允许通过本地文件协议直接打开modern 体积更小、性能更好但要求以 http(s) 方式访问。拿不准就下载 legacy。结语钥匙应该还给你加密格式的钥匙始终握在平台手里用户付费买到的内容却要依赖特定 App 才能播放这本身就是一种不对称。Unlock-Music 没有发明新算法它只是把还原过程搬回用户的设备让钥匙回到主人手中。工具能做的是把文件变成通用格式剩下的判断——备份哪些、转换哪些、如何处置——交给使用者。技术的中立性就在这里同一个解密能力既可以用来合法迁移自己的音乐库也可以被滥用。文档写得再清楚也替代不了使用者对边界的把握。选择权最终在你的手上。【免费下载链接】unlock-music在浏览器中解锁加密的音乐文件。原仓库 1. https://github.com/unlock-music/unlock-music 2. https://git.unlock-music.dev/um/web项目地址: https://gitcode.com/gh_mirrors/un/unlock-music创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考