Updated 加密格式 (markdown)

Jixun Wu 2021-12-19 18:53:14 +00:00
parent e5af2000b3
commit d3fec93960

@ -1,23 +1,26 @@
## 加密种类
有四种,可以通过文件头判定:
- `E!01` 生成 AES Key 进行解密。一次性解密,即 init → 多次 update → final。
- `E!02` 在 v1 基础上,更改为每 x 字节重置一次 AES 加密状态,即多次 [init → update → final] 循环。
感觉强度反而变弱了?但对流媒体来说更为友好,如跳转到最后一秒时不需要解密前面的数据。
- `E!01` 生成 AES Key 进行解密。一次性解密,即 `init()` → 多次 `update(data)``final()`
- `E!02` 在 v1 基础上,更改为每 x 字节重置一次 AES 加密状态,即多次 [`init()` → `update(data)``final()`] 循环。
- 感觉强度反而变弱了?但对流媒体来说更为友好,如跳转到最后一秒时不需要解密前面的数据。
- 每次解密会处理 `0x100000` (加密数据) + `0x10` AES 的 PKCS5 Padding字节的数据。
- `E!03` 在 v2 基础上,在 MAGIC 后增加了一个 original size (8 bytes; big-endian) 的数据。
- `E!04` 在 v3 基础上AES Key 的生成方式更改。
※ 实际上代码没有执行 `update`,都是简单粗暴的 init → final。
※ 实际上代码没有执行 `update`,都是简单粗暴的 `init()``final(data)`
加密 key 可以通过一个初次启动应用时生成的 uuid 来派生出加密用的 aes key。这个值储存在应用私有目录下因此需要 root 权限来获取。
但这也同时意味着,歌曲文件很大概率是下载后本地加密的。
不排除 joox 在未来会将服务器下载的文件更改为“预”加密的状态,从而产生一个通用 key。
---
## 获取设备 UUID
在 root 后的设备进入终端,可以键入下述内容获得设备 uuid
```
```sh
grep -aoE "OPENUDID2[^0-9a-f]*([0-9a-f]{32})" /data/data/com.tencent.ibg.joox/files/mmkv/globalconfig | tail -c 32
```
@ -25,7 +28,9 @@ grep -aoE "OPENUDID2[^0-9a-f]*([0-9a-f]{32})" /data/data/com.tencent.ibg.joox/fi
![image](https://user-images.githubusercontent.com/5713045/146625124-47bd63ec-9c23-494d-aca9-0adeed53cb73.png)
注意事项
## 注意事项
- 请不要公开设备 uuid因为 joox 会上报当前设备信息。
- root 设备有一定概率产生不可预知的问题(如应用不兼容、失去厂家保修)。建议使用已淘汰的设备进行操作。
- 如果一定要提供样本,建议直接联系开发人员提供。
- root 设备有一定概率产生不可预知的问题(如应用不兼容、失去厂家保修)。
- 建议使用已淘汰的设备进行操作。