feat(qmc): 从加密数据库中读取密钥 #88

Open
awalol wants to merge 5 commits from awalol/cli:master into master
First-time contributor

由于对 go-mmkv 进行了修改,目前使用的 go-mmkv 连接的是我的仓库
等 go-mmkv 上游合并后再重新连接到原仓库

由于对 go-mmkv 进行了修改,目前使用的 go-mmkv 连接的是我的仓库 等 go-mmkv 上游合并后再重新连接到原仓库
awalol added 4 commits 2024-02-12 20:02:45 +00:00
jixunmoe requested changes 2024-02-13 20:53:51 +00:00
@ -83,0 +111,4 @@
if err != nil {
return nil, fmt.Errorf("base64 error: %w", err)
}
return deriveKeyV1(eKey[:n])
Owner

建议直接调用 deriveKey 来处理。

建议直接调用 `deriveKey` 来处理。
jixunmoe marked this conversation as resolved
algo/qmc/qmc.go Outdated
@ -42,2 +41,4 @@
// provider
logger *zap.Logger
footer qqMusicTagMusicEx
Owner

这个 footer 并不是通用的(仅限 musicex 结尾的文件),将其作为 Decoderfooter 成员可能不太合适。

考虑将其内部的成员填充到 Decoder 中对应的成员,如 songID

这个 `footer` 并不是通用的(仅限 `musicex` 结尾的文件),将其作为 `Decoder` 的 `footer` 成员可能不太合适。 考虑将其内部的成员填充到 `Decoder` 中对应的成员,如 `songID`。
jixunmoe marked this conversation as resolved
@ -0,0 +44,4 @@
for i := 0; i < 30; i++ {
u := binary.LittleEndian.Uint16(buf[12+i*2 : 12+(i+1)*2])
if u != 0 {
tag.mid += string(u)
Owner

其实是固定长度的零截断 UTF16-LE 字符串,遇到 0 就能 break 提前结束了。

其实是固定长度的零截断 UTF16-LE 字符串,遇到 0 就能 `break` 提前结束了。
jixunmoe marked this conversation as resolved
cmd/um/main.go Outdated
@ -51,2 +50,4 @@
&cli.StringFlag{Name: "input", Aliases: []string{"i"}, Usage: "path to input file or dir", Required: false},
&cli.StringFlag{Name: "output", Aliases: []string{"o"}, Usage: "path to output dir", Required: false},
&cli.StringFlag{Name: "vault-file", Aliases: []string{"db"}, Usage: "数据库文件位置 (请确保crc文件在同目录下)", Required: false},
&cli.StringFlag{Name: "vault-key", Aliases: []string{"key"}, Usage: "数据库密钥", Required: false},
Owner

密钥有没有编码?是 HEX?或是 base64 编码的密钥?

可以在参数描述提一下。

密钥有没有编码?是 HEX?或是 base64 编码的密钥? 可以在参数描述提一下。
Author
First-time contributor

这边密钥输入的是字符串,没有编码

在mmkv的解密流程中,直接将字符串密钥转换为字节数组,然后只取16个字节。因此,我们提取出来的密钥只用到了一半的长度

我直接在后面标注 "(length 32)" 可以吗?

这边密钥输入的是字符串,没有编码 在mmkv的解密流程中,直接将字符串密钥转换为字节数组,然后只取16个字节。因此,我们提取出来的密钥只用到了一半的长度 我直接在后面标注 "(length 32)" 可以吗?
Owner

标注 16 可能会好一点?另外用“字符”来表示密钥未经过编码?

合起来大概是这样:(16 个字符。若超过该长度,将自动截断)

标注 16 可能会好一点?另外用“字符”来表示密钥未经过编码? 合起来大概是这样:`(16 个字符。若超过该长度,将自动截断)`
awalol added 1 commit 2024-02-14 08:59:16 +00:00
Author
First-time contributor

@jixunmoe 应该改好了,麻烦您看下

@jixunmoe 应该改好了,麻烦您看下
This pull request can be merged automatically.
You are not authorized to merge this pull request.
Sign in to join this conversation.
No description provided.