使用网易云客户端下载的音乐,有一些是ncm格式的,不是mp3格式, 直接复制这个ncm到其他设备是无法播放的,需要转成mp3等音频格式 ,
这是一个将ncm转mp3的软件
项目地址

https://github.com/urldecode/ncmdump-gui

图片

图 0

图 2

🔐 核心算法原理

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 字节
  • 封面图片数据:可变长度

📝 功能使用说明

快速开始

  1. 启动程序

    • 双击 ncmdump-gui.exe 运行
  2. 选择文件
    -点击 “📁 选择 NCM 文件” 按钮,选择一个或多个 NCM 文件

    • 或点击 “📂 选择目录” 按钮,扫描整个目录下的所有 NCM 文件
  3. 设置输出目录

    • 点击 “浏览…” 按钮,选择解密后文件的保存位置
  4. 配置选项

    • 勾选 “自动复制同名 .lrc 歌词文件”(默认开启)
    • 如有同名歌词文件,将自动复制到输出目录
  5. 开始解密

    • 点击 “开始解密” 按钮
    • 等待处理完成,查看解密结果

界面功能说明

文件列表区域

  • 显示已选择的所有 NCM 文件
  • 点击 “×” 按钮可移除单个文件
  • 点击 “🗑️ 清空列表” 可清除所有文件

进度显示

  • 解密过程中显示实时进度条
  • 显示当前正在处理的文件名

结果展示

  • 成功:绿色卡片,显示音频格式和输出路径
  • 失败:红色卡片,显示错误原因
  • 统计:显示成功/失败数量和歌词复制数量
  • 点击 “🗑️ 清除结果” 可清空历史记录

常见问题

Q: 为什么解密后的 MP3 文件无法播放?
A: 请确认:

  1. 原始 NCM 文件未损坏
  2. 输出目录有写入权限
  3. 检查错误提示信息

Q: 如何解密整个音乐文件夹?
A: 点击”选择目录”按钮,选择包含 NCM 文件的文件夹,程序会自动扫描所有子目录。

Q: 歌词文件没有复制怎么办?
A: 请确认:

  1. 歌词文件与 NCM 文件同名(仅扩展名不同)
  2. 歌词文件在同一目录下
  3. 已勾选”自动复制同名 .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. 完善的错误处理

  • 文件格式验证
  • 详细的错误提示信息
  • 失败文件不影响其他文件的处理
  • 清晰的日志记录