网易云音乐 NCM转mp3
使用网易云客户端下载的音乐,有一些是ncm格式的,不是mp3格式, 直接复制这个ncm到其他设备是无法播放的,需要转成mp3等音频格式 ,
这是一个将ncm转mp3的软件
项目地址
https://github.com/urldecode/ncmdump-gui
图片
🔐 核心算法原理
NCM 文件格式是网易云音乐的专有加密格式,其解密过程包含多个步骤:
1. 文件头验证
每个 NCM 文件以固定的 8 字节魔数开头:
CTENFDAM |
程序首先读取前 8 字节进行验证,确保文件格式正确。
2. 密钥数据解密
密钥数据经过两层加密保护:
第一层:XOR 解密
使用固定密钥 0x64 对密钥数据进行逐字节 XOR 运算。
第二层:AES-ECB 解密
使用预定义的 AES 密钥进行 ECB 模式解密。
PKCS7 去填充
解密后的数据需要进行 PKCS7 去填充处理,提取实际的音频解密密钥(跳过前 17 字节)。
3. 元数据解密
元数据包含歌曲信息(歌名、歌手、专辑等),经过三层加密:
第一层:XOR 解密
使用密钥 0x63 进行 XOR 运算。
第二层:Base64 解码
跳过前缀 "163 key(Don't modify):"(22 字节)后,进行 Base64 解码。
第三层:AES-ECB 解密
使用元数据专用密钥进行 AES-ECB 解密。
PKCS7 去填充与 JSON 解析
去填充后跳过 "music:" 前缀(6 字节),得到 JSON 格式的元数据。
4. 音频数据解密
音频数据使用 RC4-like 流密码进行加密,对每个音频数据块进行逐字节 XOR 解密。
5. 文件结构偏移
在读取音频数据之前,需要跳过以下部分:
- CRC32 校验码:4 字节
- 保留字节:5 字节
- 封面图片长度:4 字节
- 封面图片数据:可变长度
📝 功能使用说明
快速开始
启动程序
- 双击
ncmdump-gui.exe运行
- 双击
选择文件
-点击 “📁 选择 NCM 文件” 按钮,选择一个或多个 NCM 文件- 或点击 “📂 选择目录” 按钮,扫描整个目录下的所有 NCM 文件
设置输出目录
- 点击 “浏览…” 按钮,选择解密后文件的保存位置
配置选项
- 勾选 “自动复制同名 .lrc 歌词文件”(默认开启)
- 如有同名歌词文件,将自动复制到输出目录
开始解密
- 点击 “开始解密” 按钮
- 等待处理完成,查看解密结果
界面功能说明
文件列表区域
- 显示已选择的所有 NCM 文件
- 点击 “×” 按钮可移除单个文件
- 点击 “🗑️ 清空列表” 可清除所有文件
进度显示
- 解密过程中显示实时进度条
- 显示当前正在处理的文件名
结果展示
- 成功:绿色卡片,显示音频格式和输出路径
- 失败:红色卡片,显示错误原因
- 统计:显示成功/失败数量和歌词复制数量
- 点击 “🗑️ 清除结果” 可清空历史记录
常见问题
Q: 为什么解密后的 MP3 文件无法播放?
A: 请确认:
- 原始 NCM 文件未损坏
- 输出目录有写入权限
- 检查错误提示信息
Q: 如何解密整个音乐文件夹?
A: 点击”选择目录”按钮,选择包含 NCM 文件的文件夹,程序会自动扫描所有子目录。
Q: 歌词文件没有复制怎么办?
A: 请确认:
- 歌词文件与 NCM 文件同名(仅扩展名不同)
- 歌词文件在同一目录下
- 已勾选”自动复制同名 .lrc 歌词文件”选项
Q: 可以在 macOS 或 Linux 上使用吗?
A: 当前仅提供 Windows 版本。如需跨平台支持,可使用源代码重新编译。
✨ 主要特性
1. 单文件分发,零依赖运行
- 编译为单个
.exe文件(约 11 MB) - 无需安装 Go、Node.js、Python 或其他运行时
- Windows 系统自带 WebView2,开箱即用
2. 批量解密与目录扫描
- 支持逐个添加文件
- 支持递归扫描整个目录树
- 自动识别所有
.ncm文件(不区分大小写) - 智能去重,避免重复处理
3. 歌词文件自动复制
- 自动检测同名的
.lrc歌词文件 - 复制到输出目录,保持与音频文件相同的名称
- 可手动开启/关闭此功能
4. 现代化 GUI 界面
- 基于 Vue 3 + Wails 构建
- 蓝紫色渐变背景,视觉效果出色
- 实时进度条显示
- 详细的解密结果统计
- 响应式设计,操作流畅
5. 完善的错误处理
- 文件格式验证
- 详细的错误提示信息
- 失败文件不影响其他文件的处理
- 清晰的日志记录



