mirror of
https://git.um-react.app/um/cli.git
synced 2025-11-28 03:33:02 +00:00
feat: first version of kgg support
This commit is contained in:
30
algo/kgm/kgm_v5.go
Normal file
30
algo/kgm/kgm_v5.go
Normal file
@@ -0,0 +1,30 @@
|
||||
package kgm
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"unlock-music.dev/cli/algo/common"
|
||||
"unlock-music.dev/cli/algo/kgm/pc_kugou_db"
|
||||
"unlock-music.dev/cli/algo/qmc"
|
||||
)
|
||||
|
||||
func newKgmCryptoV5(header *header, kggDatabasePath string) (common.StreamDecoder, error) {
|
||||
if header.AudioHash == "" {
|
||||
return nil, fmt.Errorf("kgm v5: missing audio hash")
|
||||
}
|
||||
|
||||
if kggDatabasePath == "" {
|
||||
return nil, fmt.Errorf("kgm v5: missing kgg database path")
|
||||
}
|
||||
|
||||
m, err := pc_kugou_db.CachedDumpEKey(kggDatabasePath)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("kgm v5: decrypt kgg database: %w", err)
|
||||
}
|
||||
ekey, ok := m[header.AudioHash]
|
||||
if !ok || ekey == "" {
|
||||
return nil, fmt.Errorf("kgm v5: ekey missing from db (audio_hash=%s)", header.AudioHash)
|
||||
}
|
||||
|
||||
return qmc.NewQmcCipherDecoderFromEKey([]byte(ekey))
|
||||
}
|
||||
Reference in New Issue
Block a user