feat(qmc): 从加密数据库中读取密钥 #88
No reviewers
Labels
No Label
bug
crypto
documentation
duplicate
enhancement
good first issue
help wanted
invalid
platform-android
platform-mac
platform-win
question
wontfix
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: um/cli#88
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "master"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
由于对 go-mmkv 进行了修改,目前使用的 go-mmkv 连接的是我的仓库
等 go-mmkv 上游合并后再重新连接到原仓库
@ -83,0 +111,4 @@
if err != nil {
return nil, fmt.Errorf("base64 error: %w", err)
}
return deriveKeyV1(eKey[:n])
建议直接调用
deriveKey
来处理。@ -42,2 +41,4 @@
// provider
logger *zap.Logger
footer qqMusicTagMusicEx
这个
footer
并不是通用的(仅限musicex
结尾的文件),将其作为Decoder
的footer
成员可能不太合适。考虑将其内部的成员填充到
Decoder
中对应的成员,如songID
。@ -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)
其实是固定长度的零截断 UTF16-LE 字符串,遇到 0 就能
break
提前结束了。@ -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},
密钥有没有编码?是 HEX?或是 base64 编码的密钥?
可以在参数描述提一下。
这边密钥输入的是字符串,没有编码
在mmkv的解密流程中,直接将字符串密钥转换为字节数组,然后只取16个字节。因此,我们提取出来的密钥只用到了一半的长度
我直接在后面标注 "(length 32)" 可以吗?
标注 16 可能会好一点?另外用“字符”来表示密钥未经过编码?
合起来大概是这样:
(16 个字符。若超过该长度,将自动截断)
@jixunmoe 应该改好了,麻烦您看下
先合了再说。
因为有合并冲突,手动合了…
Pull request closed