91 lines
3.5 KiB
Markdown
91 lines
3.5 KiB
Markdown
# kgg-dec
|
|
|
|
酷狗 `kgg` 文件解密工具。
|
|
|
|
请尽量在下载文件的设备上操作,避免密钥丢失。
|
|
|
|
## 使用方法 (快捷)
|
|
|
|
1. 双击 `kgg-dec.exe` 开始解密当前目录。
|
|
|
|
## 使用方法 (命令行)
|
|
|
|
1. 启动 `kgg-dec.exe`,其中第一个参数为含有 `kgg` 文件的目录。
|
|
2. 你也可以使用 `--` 来将参数后的 `-` 开头的参数视为输入文件或目录。
|
|
3. 你可以指定多项输入文件或目录。
|
|
|
|
### 其它参数
|
|
|
|
* `--scan-all-file-ext` (可选,`0` 或 `1`): 是否扫描所有文件后缀名。默认为 `0`,只扫描 `kgg` 文件。
|
|
* `--db` (可选): 指定 `KGMusicV3.db` 的路径。默认为 `%AppData%/Kugou8/KGMusicV3.db`。
|
|
* `--suffix` (可选): 指定解密后文件的后缀。默认为 `_kgg-dec`。
|
|
|
|
### 使用示例
|
|
|
|
* `kgg-dec.exe "D:\Music"`: 解密 `D:\Music` 目录下的所有 `*.kgg` 文件。
|
|
* `kgg-dec.exe "D:\Music" "D:\KGG\1.kgg"`: 解密 `D:\Music` 目录下的所有 `*.kgg` 文件,以及 `1.kgg`。
|
|
* `kgg-dec.exe "D:\Music" --scan-all-file-ext 1`: 尝试将 `D:\Music` 目录下的所有文件视为 `kgg` 文件来解密。
|
|
* `kgg-dec.exe "D:\Music" --suffix ""`: 解密后不添加额外的后缀。
|
|
|
|
指定完参数后可以指定任意数量的文件或目录。
|
|
|
|
## 错误排查
|
|
|
|
1. 需要至少播放一次 `kgg` 文件,并确保酷狗能正常播放。
|
|
- 如果还是无效,请尝试使用酷狗重新下载,在同一个设备上进行下载与解密操作。
|
|
2. 文件后缀名嗅探代码只支持:`ogg` / `flac`。
|
|
* 其他格式会被识别为 `mp3`。
|
|
|
|
## 构建
|
|
|
|
在 Windows 下使用 CMake + Visual Studio 2022 构建。
|
|
|
|
第一次构建前请到 `third-party/sqlite3` 目录下执行 `fetch_sqlite3.sh`,或手动下载源码放置到对应的位置。
|
|
|
|
然后就可以利用 CMake 构建了:
|
|
|
|
```cmd
|
|
cmake --preset vs -DCMAKE_BUILD_TYPE=Release
|
|
cmake --build --preset vs-release --config Release
|
|
copy /y README.MD .\\build\\vs2022\\
|
|
```
|
|
|
|
### CMake 参数
|
|
|
|
CMake 支持以下参数:
|
|
|
|
- `USE_WIN_SQLITE3` - 使用 Windows 内置的 SQLite3 链接库(仅限 Windows + MSVC 编译环境)。
|
|
- `USE_WIN_CRYPTO` - 使用 Windows 内置的加密/哈希实现,而非软件实现(仅限 Windows 目标)。
|
|
- `USE_SYSTEM_SQLITE3` - 使用外部的 SQLite3 实现 (Debian: `libsqlite3-dev`),找不到时会报错。
|
|
- `USE_OpenSSL` - 使用 OpenSSL 的加密/哈希实现 (Debian: `libssl-dev`),找不到时会报错。
|
|
|
|
Ubuntu 下编译发布版,不使用外部库:
|
|
|
|
```sh
|
|
cmake -G "Ninja Multi-Config" -B build/linux-all -DUSE_SYSTEM_SQLITE3=0 -DUSE_OPENSSL=0
|
|
cmake --build build/linux-all --config Release -j
|
|
```
|
|
|
|
Ubuntu 下编译发布版,链接到现有的库:
|
|
|
|
```sh
|
|
cmake -G "Ninja Multi-Config" -B build/linux-ext -DUSE_SYSTEM_SQLITE3=1 -DUSE_OPENSSL=1
|
|
cmake --build build/linux-ext --config Release -j
|
|
```
|
|
|
|
### 第三方软件
|
|
|
|
该程序用到了以下第三方软件:
|
|
|
|
- [SQLite3](https://www.sqlite.org/) (Public Domain)
|
|
- [Tiny AES in C](https://github.com/kokke/tiny-AES-c) (Public Domain)
|
|
- [MD5.c](https://github.com/freebsd/freebsd-src/blob/release/14.2.0/sys/kern/md5c.c) (from FreeBSD)
|
|
- Derived from the "RSA Data Security, Inc. MD5 Message-Digest Algorithm".
|
|
|
|
### Windows 7 用户注意
|
|
|
|
请从 SQLite 官网下载 [`sqlite-dll-win-x64-*.zip`](https://www.sqlite.org/download.html#win32)
|
|
并将压缩包内的 `sqlite3.dll` 放置到 `kgg-dec.exe` 同目录下,并更名为 `winsqlite3.dll`。
|
|
|
|
Windows 10 或更新版本不需要此操作,因为 Windows 10 或以上的版本内置该文件。
|