网易云ncm音乐格式转换为mp3音乐格式工具
1. 使用NCM2MP3.jar运行图形界面(只需要准备jdk环境便可以):命令行中在该jar包的目录下执行`java -jar NCM2MP3.jar`
2. 用源代码运行:在环境配置好后,执行入口为`main.java`
3. 命令行相关操作`java -jar NCM2MP3.jar [command]`
Usage: java -jar NCM2MP3.jar [command]
If don't add command, there will open NCM2MP3 GUI directly
[Command List]
-v,-view : open NCM View GUI(default command)
-c,--convert [path] ... : convert NCM File in path to ./output directory
-h,-help : Help about any command
NCM格式是网易云音乐特有的音乐格式,这种音乐格式用到AES,RC4的加密算法对普通的音乐格式(如MP3,FLAC)进行加密,若要了解该加密过程,最好的方法就是知道起格式图,以及加密的原理(可以参考笔记密码学.md).
| 信息 | 大小 | 备注 |
|---|---|---|
| Magic Header | 10 bytes | 跳过 |
| KEY Length | 4 bytes | 用AES128加密RC4密钥后的长度(小端字节排序,无符号整型) |
| KEY From AES128 Decode | KEY Length(其实就是128 bytes) | 用AES128加密的RC4密钥(注意:1.按字节对0x64异或2.AES解密(其中PKCS5Padding填充模式会去除末尾填充部分;)3.去除前面neteasecloudmusic17个字节; |
| Mata Length | 4 bytes | Mata的信息的长度(小端字节排序,无符号整型) |
| Mata Data(JSON) | Mata Length | JSON的格式的Mata的信息(注意:1.按字节对0x63异或;2.去除前面163 key(Don't modify):22个字节;3.Base64进行decode;4.AES解密;5.去除前面music:6个字节后获得JSON) |
| CRC校验码 | 4 bytes | 跳过 |
| Gap | 5 bytes | 跳过 |
| Image Size | 4 bytes | 图片大小 |
| Image | Image Size | 图片数据 |
| Music Data | - | RC4-KSA生成s盒,RC4-PRGA解密 |



该工具是在大学期间为了学习密码学的时候,想通过实践的方式深入了解,通过ncmdump的版本,用Java改写的。现在工作了,由于时间有限,本工具不会继续更新,希望大家谅解~
此工具仅供学习用途,请勿使用其盈利!
网易云ncm音乐格式转换为mp3音乐格式工具
1. 使用NCM2MP3.jar运行图形界面(只需要准备jdk环境便可以):命令行中在该jar包的目录下执行`java -jar NCM2MP3.jar`
2. 用源代码运行:在环境配置好后,执行入口为`main.java`
3. 命令行相关操作`java -jar NCM2MP3.jar [command]`
Usage: java -jar NCM2MP3.jar [command]
If don't add command, there will open NCM2MP3 GUI directly
[Command List]
-v,-view : open NCM View GUI(default command)
-c,--convert [path] ... : convert NCM File in path to ./output directory
-h,-help : Help about any command
NCM格式是网易云音乐特有的音乐格式,这种音乐格式用到AES,RC4的加密算法对普通的音乐格式(如MP3,FLAC)进行加密,若要了解该加密过程,最好的方法就是知道起格式图,以及加密的原理(可以参考笔记密码学.md).
| 信息 | 大小 | 备注 |
|---|---|---|
| Magic Header | 10 bytes | 跳过 |
| KEY Length | 4 bytes | 用AES128加密RC4密钥后的长度(小端字节排序,无符号整型) |
| KEY From AES128 Decode | KEY Length(其实就是128 bytes) | 用AES128加密的RC4密钥(注意:1.按字节对0x64异或2.AES解密(其中PKCS5Padding填充模式会去除末尾填充部分;)3.去除前面neteasecloudmusic17个字节; |
| Mata Length | 4 bytes | Mata的信息的长度(小端字节排序,无符号整型) |
| Mata Data(JSON) | Mata Length | JSON的格式的Mata的信息(注意:1.按字节对0x63异或;2.去除前面163 key(Don't modify):22个字节;3.Base64进行decode;4.AES解密;5.去除前面music:6个字节后获得JSON) |
| CRC校验码 | 4 bytes | 跳过 |
| Gap | 5 bytes | 跳过 |
| Image Size | 4 bytes | 图片大小 |
| Image | Image Size | 图片数据 |
| Music Data | - | RC4-KSA生成s盒,RC4-PRGA解密 |



该工具是在大学期间为了学习密码学的时候,想通过实践的方式深入了解,通过ncmdump的版本,用Java改写的。现在工作了,由于时间有限,本工具不会继续更新,希望大家谅解~
此工具仅供学习用途,请勿使用其盈利!