Fix: algorithm bugs in qmc
Optimize: algorithm in `kgm`
This commit is contained in:
parent
60c15894c0
commit
28d84e4dc2
@ -75,12 +75,8 @@ func (d *Decoder) Decode() error {
|
|||||||
d.audio = make([]byte, lenData)
|
d.audio = make([]byte, lenData)
|
||||||
|
|
||||||
for i := 0; i < lenData; i++ {
|
for i := 0; i < lenData; i++ {
|
||||||
med8 := d.key[i%17] ^ dataEncrypted[i]
|
med8 := dataEncrypted[i] ^ d.key[i%17] ^ maskV2PreDef[i%(16*17)] ^ maskV2[i>>4]
|
||||||
med8 ^= (med8 & 0xf) << 4
|
d.audio[i] = med8 ^ (med8&0xf)<<4
|
||||||
|
|
||||||
msk8 := maskV2PreDef[i%272] ^ maskV2[i>>4]
|
|
||||||
msk8 ^= (msk8 & 0xf) << 4
|
|
||||||
d.audio[i] = med8 ^ msk8
|
|
||||||
}
|
}
|
||||||
if d.isVpr {
|
if d.isVpr {
|
||||||
for i := 0; i < lenData; i++ {
|
for i := 0; i < lenData; i++ {
|
||||||
|
@ -6,7 +6,7 @@ import (
|
|||||||
"github.com/ulikunitz/xz"
|
"github.com/ulikunitz/xz"
|
||||||
"github.com/unlock-music/cli/internal/logging"
|
"github.com/unlock-music/cli/internal/logging"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"io/ioutil"
|
"io"
|
||||||
)
|
)
|
||||||
|
|
||||||
var maskDiffVpr = []byte{
|
var maskDiffVpr = []byte{
|
||||||
@ -50,7 +50,7 @@ func initMask() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
logging.Log().Fatal("load kgm mask failed", zap.Error(err))
|
logging.Log().Fatal("load kgm mask failed", zap.Error(err))
|
||||||
}
|
}
|
||||||
maskV2, err = ioutil.ReadAll(maskReader)
|
maskV2, err = io.ReadAll(maskReader)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logging.Log().Fatal("load kgm mask failed", zap.Error(err))
|
logging.Log().Fatal("load kgm mask failed", zap.Error(err))
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ func NewKey256FromMask44(mask44 []byte) (*Key256Mask, error) {
|
|||||||
return q, nil
|
return q, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (q *Key256Mask) getMatrix44() (mask44 []byte, err error) {
|
func (q *Key256Mask) GetMatrix44() ([]byte, error) {
|
||||||
if len(q.matrix) != 128 {
|
if len(q.matrix) != 128 {
|
||||||
return nil, ErrMaskLength128
|
return nil, ErrMaskLength128
|
||||||
}
|
}
|
||||||
@ -53,7 +53,7 @@ func (q *Key256Mask) getMatrix44() (mask44 []byte, err error) {
|
|||||||
return nil, ErrMaskDecode
|
return nil, ErrMaskDecode
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
q.matrix[idx44] = q.matrix[it256[0]]
|
matrix44[idx44] = q.matrix[it256[0]]
|
||||||
idx44++
|
idx44++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user