test(QMCv2): add case mflac_rc4

This commit is contained in:
MengYX 2022-01-09 06:21:35 +08:00
parent def2925900
commit 42d658625f
No known key found for this signature in database
GPG Key ID: E63F9C7303E8F604
8 changed files with 40 additions and 26 deletions

View File

@ -6,16 +6,17 @@ import (
"testing" "testing"
) )
func loadTestRC4CipherData() ([]byte, []byte, []byte, error) { func loadTestRC4CipherData(name string) ([]byte, []byte, []byte, error) {
key, err := os.ReadFile("./testdata/mflac0_rc4_key.bin") prefix := "./testdata/" + name
key, err := os.ReadFile(prefix + "_key.bin")
if err != nil { if err != nil {
return nil, nil, nil, err return nil, nil, nil, err
} }
raw, err := os.ReadFile("./testdata/mflac0_rc4_raw.bin") raw, err := os.ReadFile(prefix + "_raw.bin")
if err != nil { if err != nil {
return nil, nil, nil, err return nil, nil, nil, err
} }
target, err := os.ReadFile("./testdata/mflac0_rc4_target.bin") target, err := os.ReadFile(prefix + "_target.bin")
if err != nil { if err != nil {
return nil, nil, nil, err return nil, nil, nil, err
} }
@ -23,11 +24,19 @@ func loadTestRC4CipherData() ([]byte, []byte, []byte, error) {
return key, raw, target, nil return key, raw, target, nil
} }
func Test_rc4Cipher_Decrypt(t *testing.T) { func Test_rc4Cipher_Decrypt(t *testing.T) {
key, raw, target, err := loadTestRC4CipherData() tests := []struct {
name string
wantErr bool
}{
{"mflac0_rc4", false},
{"mflac_rc4", false},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
key, raw, target, err := loadTestRC4CipherData(tt.name)
if err != nil { if err != nil {
t.Fatalf("load testing data failed: %s", err) t.Fatalf("load testing data failed: %s", err)
} }
t.Run("overall", func(t *testing.T) {
c, err := NewRC4Cipher(key) c, err := NewRC4Cipher(key)
if err != nil { if err != nil {
t.Errorf("init rc4Cipher failed: %s", err) t.Errorf("init rc4Cipher failed: %s", err)
@ -38,10 +47,11 @@ func Test_rc4Cipher_Decrypt(t *testing.T) {
t.Error("overall") t.Error("overall")
} }
}) })
}
} }
func BenchmarkRc4Cipher_Decrypt(b *testing.B) { func BenchmarkRc4Cipher_Decrypt(b *testing.B) {
key, raw, _, err := loadTestRC4CipherData() key, raw, _, err := loadTestRC4CipherData("mflac0_rc4")
if err != nil { if err != nil {
b.Fatalf("load testing data failed: %s", err) b.Fatalf("load testing data failed: %s", err)
} }
@ -57,7 +67,7 @@ func BenchmarkRc4Cipher_Decrypt(b *testing.B) {
} }
func Test_rc4Cipher_encFirstSegment(t *testing.T) { func Test_rc4Cipher_encFirstSegment(t *testing.T) {
key, raw, target, err := loadTestRC4CipherData() key, raw, target, err := loadTestRC4CipherData("mflac0_rc4")
if err != nil { if err != nil {
t.Fatalf("load testing data failed: %s", err) t.Fatalf("load testing data failed: %s", err)
} }
@ -75,7 +85,7 @@ func Test_rc4Cipher_encFirstSegment(t *testing.T) {
} }
func Test_rc4Cipher_encASegment(t *testing.T) { func Test_rc4Cipher_encASegment(t *testing.T) {
key, raw, target, err := loadTestRC4CipherData() key, raw, target, err := loadTestRC4CipherData("mflac0_rc4")
if err != nil { if err != nil {
t.Fatalf("load testing data failed: %s", err) t.Fatalf("load testing data failed: %s", err)
} }

View File

@ -27,7 +27,6 @@ func loadDecryptKeyData(name string) ([]byte, []byte, error) {
return keyRaw, keyDec, nil return keyRaw, keyDec, nil
} }
func TestDecryptKey(t *testing.T) { func TestDecryptKey(t *testing.T) {
tests := []struct { tests := []struct {
name string name string
filename string filename string
@ -35,13 +34,15 @@ func TestDecryptKey(t *testing.T) {
}{ }{
{"mflac0_rc4(512)", "mflac0_rc4", false}, {"mflac0_rc4(512)", "mflac0_rc4", false},
{"mflac_map(256)", "mflac_map", false}, {"mflac_map(256)", "mflac_map", false},
{"mflac_rc4(256)", "mflac_rc4", false},
{"mgg_map(256)", "mgg_map", false},
} }
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
raw, want, err := loadDecryptKeyData(tt.filename) raw, want, err := loadDecryptKeyData(tt.filename)
if err != nil { if err != nil {
t.Fatalf("load test data failed: %s", err) t.Fatalf("load test data failed: %s", err)
} }
t.Run(tt.name, func(t *testing.T) {
got, err := DecryptKey(raw) got, err := DecryptKey(raw)
if (err != nil) != tt.wantErr { if (err != nil) != tt.wantErr {
t.Errorf("DecryptKey() error = %v, wantErr %v", err, tt.wantErr) t.Errorf("DecryptKey() error = %v, wantErr %v", err, tt.wantErr)

View File

@ -32,6 +32,7 @@ func TestMflac0Decoder_Read(t *testing.T) {
wantErr bool wantErr bool
}{ }{
{"mflac0_rc4", false}, {"mflac0_rc4", false},
{"mflac_rc4", false},
{"mflac_map", false}, {"mflac_map", false},
{"mgg_map", false}, {"mgg_map", false},
{"qmc0_static", false}, {"qmc0_static", false},

1
algo/qmc/testdata/mflac_rc4_key.bin vendored Normal file
View File

@ -0,0 +1 @@
pUtyvqr0TgAvR95mNmY7DmNl386TsJNAEIz95CEcgIgJCcs28686O7llxD5E74ldn70xMtd5cG58TA5ILw09I8BOTf5EdHKd6wwPn689DUK13y3Req6H0P33my2miJ5bQ2AA22B8vp4V0NJ3hBqNtFf7cId48V6W51e1kwgu1xKKawxe9BByT92MFlqrFaKH32dB2zFgyd38l2P1outr4l2XLq48F9G17ptRz4W8Loxu28RvZgv0BzL26Ht9I2L5VCwMzzt7OeZ55iQs40Tr6k81QGraIUJj5zeBMgJRMTaSgi19hU5x5a08Qd662MbFhZZ0FjVvaDy1nbIDhrC62c1lX6wf70O45h4W42VxloBVeZ9Sef4V7cWrjrEjj3DJ5w2iu6Q9uoal2f4390kue42Um5HcDFWqv3m56k6O89bRV424PaRra1k9Cd2L56IN2zfBYqNo2WP5VC68G8w1hfflOY0O52h4WdcpoHSjZm4b35N7l47dT4dwEXj1U4J5

View File

@ -0,0 +1 @@
cFV0eXZxcjAF/IXJ9qJT1u5C3S5AgY9BoVtIQNBKfxQMt5hH7BF36ndIJGV5L6qw5h4G0IOIOOewdHmMCNfKJftHM4nv3B0iRlSdqJKdL08wO3sV0v8eZk0OiYAlxgseGcBquQWYS/0b5Lj/Ioi2NfpOthAY9vUiRPnfH3+7/2AJGudHjj4Gg1KkpPW3mXIKbsk+Ou9fhrUqs873BCdsmI6qRmVNhOkLaUcbG6Zin3XU0WkgnnjebR43S8N4bw5BTphFvhy42QvspnD7Ewb1tVZQMQ2N1s38nBjukdfCB9R6aRwITOvg2U7Lr0RjLpbrIn6A6iVilpINjK4VptuKUTlpDXQwgCjoqeHQaHNCWgYpdjB69lXn8km/BfzK7QyDbh0VgTikwAHF9tvPhin3AIDRcU0xsaWYKURRfJelX3pSN495ADlhXdEKL/+l60hVnY7t6iCMxJL3lOtdGtdUYUGUCc76PB1fX+0HTWCcfcwvXTEdczr9J1h2yTeJNqFQ5pNy8vX7Ws8k7vDQVFkw4llZjPhb0kg9aDNePTNIKSGwy/7eofrcUQlC9DI+qqqwQ5abA/93fNsPq6XU3uwawnrbBsdz8DDdjJiEDI7abkPIDIfr/uR0YzgBxW90t5bt6xAtuW+VSYAM7kGxI3RZTl7JgOT60MLyIWkYASrRhRPMGks8zL10ED/4yGTEB1nt

BIN
algo/qmc/testdata/mflac_rc4_raw.bin vendored Normal file

Binary file not shown.

BIN
algo/qmc/testdata/mflac_rc4_suffix.bin vendored Normal file

Binary file not shown.

BIN
algo/qmc/testdata/mflac_rc4_target.bin vendored Normal file

Binary file not shown.