首个版本发布。完成批量解密及日志的功能。
This commit is contained in:
77
README.md
Normal file
77
README.md
Normal file
@ -0,0 +1,77 @@
|
||||
# NcmMiao
|
||||
一个使用Rust语言编写的ncm文件解密工具。
|
||||
### 功能及特点
|
||||
- 支持单一文件,多文件夹递归批量解密。
|
||||
- 完善的日志功能
|
||||
- Colorful
|
||||
- 编译文件小,解密快
|
||||
|
||||
## 编译
|
||||
```
|
||||
cargo build -r
|
||||
```
|
||||
|
||||
## 使用
|
||||
支持单一文件,多文件夹递归批量解密。
|
||||
```
|
||||
cargo build -r <文件或文件夹路径1> <文件或文件夹路径2> <文件或文件夹路径3> ...
|
||||
```
|
||||
# TODO
|
||||
- [ ] 增加多线程支持
|
||||
- [ ] 增加解密进度条
|
||||
|
||||
|
||||
# CHANGELOG
|
||||
## [1.0.0] - 2024-1-27
|
||||
### Features
|
||||
- 初步完成解密函数。主程序成型
|
||||
|
||||
## [1.1.1] - 2024-2-1
|
||||
### Features
|
||||
- 完成批量解密
|
||||
### Fixed
|
||||
- 修正了提取音乐信息会有数据类型错误导致panic的问题
|
||||
|
||||
## [1.1.2] - 2024-2-5
|
||||
### Fixed
|
||||
- 修正了提取音乐信息时,部分歌曲信息提取失败的问题
|
||||
- 修正了音乐数据解密失败的问题
|
||||
## [1.1.3] - 2024-2-6
|
||||
### Fixed
|
||||
- 修正了部分音乐名称中含有不合法字符时创建文件失败的问题
|
||||
|
||||
|
||||
# 附 - ncm文件结构
|
||||
|信息|大小|作用|
|
||||
|:-:|:-:|:-:|
|
||||
|Magic Header|8 bytes|文件头|
|
||||
|Gap|2 bytes||
|
||||
|Key Length|4 bytes|RC4密钥长度,字节是按小端排序。|
|
||||
|Key Data|Key Length|RC4密钥|
|
||||
|Music Info Length|4 bytes|用AES128加密后的音乐相关信息的长度,小端排序。|
|
||||
|Music Info Data|Music Info Length|Json格式音乐信息数据。|
|
||||
|Gap|5 bytes||
|
||||
|CRC校验码|4 bytes|图片的CRC32校验码,小端排序。|
|
||||
|Image Size|4 bytes|图片的大小|
|
||||
|Image Data|Image Size|图片数据|
|
||||
|Music Data||音乐数据|
|
||||
---
|
||||
### Magic Header
|
||||
### Key Data
|
||||
用AES128加密后的RC4密钥。
|
||||
1. 先按字节对0x64进行异或。
|
||||
2. AES解密,去除填充部分。
|
||||
3. 去除最前面'neteasecloudmusic'17个字节,得到RC4密钥。
|
||||
### Music Info Data
|
||||
Json格式音乐信息数据。
|
||||
1. 按字节对0x63进行异或。
|
||||
2. 去除最前面22个字节。
|
||||
3. Base64进行解码。
|
||||
4. AES解密。
|
||||
6. 去除前面6个字节,后面数量为最后一个字节的字节数的垃圾数据,得到Json数据。
|
||||
|
||||
### Music Data
|
||||
1. RC4-KSA生成S盒。
|
||||
2. 用S盒解密(自定义的解密方法),不是RC4-PRGA解密。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user