chore: sdgb 1.40 stopped service
This commit is contained in:
@@ -9,36 +9,7 @@ use flate2::write::{ZlibDecoder, ZlibEncoder};
|
||||
use spdlog::debug;
|
||||
|
||||
use crate::error::ApiError;
|
||||
use crate::title::{MaiVersion, MaiVersionExt, Sdgb1_40, Sdgb1_50};
|
||||
|
||||
impl MaiVersionExt for Sdgb1_40 {
|
||||
fn decode(mut data: impl AsMut<[u8]>) -> Result<Vec<u8>, ApiError> {
|
||||
let mut decompressed = decompress(data.as_mut());
|
||||
if decompressed.is_empty() {
|
||||
return Err(ApiError::EmptyResponse);
|
||||
}
|
||||
|
||||
let orig_len = decompressed.len();
|
||||
|
||||
let remain = 16 - decompressed.len() % 16;
|
||||
|
||||
if
|
||||
// weird but nessacary for Rust Pkcs7
|
||||
remain != 16 {
|
||||
decompressed.resize(remain + orig_len, remain as _);
|
||||
}
|
||||
|
||||
let unpad_size = decrypt(&mut decompressed, Self::AES_KEY, Self::AES_IV)?.len();
|
||||
decompressed.truncate(unpad_size);
|
||||
Ok(decompressed)
|
||||
}
|
||||
|
||||
fn encode(data: impl AsRef<[u8]>) -> Result<Vec<u8>, ApiError> {
|
||||
let enc = encrypt(data, Self::AES_KEY, Self::AES_IV)?;
|
||||
let compressed = compress(enc)?;
|
||||
Ok(compressed)
|
||||
}
|
||||
}
|
||||
use crate::title::{MaiVersion, MaiVersionExt, Sdgb1_50};
|
||||
|
||||
impl MaiVersionExt for Sdgb1_50 {
|
||||
fn decode(mut data: impl AsMut<[u8]>) -> Result<Vec<u8>, ApiError> {
|
||||
@@ -110,21 +81,6 @@ mod _tests {
|
||||
|
||||
use crate::title::{Sdgb1_50, encryption::*};
|
||||
|
||||
#[test]
|
||||
fn test_sdgb_140_dec_enc() -> Result<(), ApiError> {
|
||||
let data = [
|
||||
120_u8, 156, 171, 77, 91, 233, 184, 108, 2, 71, 125, 142, 118, 135, 112, 181, 85, 217,
|
||||
239, 243, 159, 153, 248, 98, 159, 185, 63, 43, 173, 106, 221, 115, 104, 105, 221, 107,
|
||||
0, 241, 176, 16, 37,
|
||||
];
|
||||
|
||||
let dec = Sdgb1_40::decode(data)?;
|
||||
assert_eq!(dec, br#"{"result":"Pong"}"#);
|
||||
let enc = Sdgb1_40::encode(dec)?;
|
||||
assert_eq!(enc, data);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_sdgb_150_dec_enc() -> Result<(), ApiError> {
|
||||
let data = [
|
||||
|
||||
@@ -117,16 +117,8 @@ pub trait MaiVersionExt: MaiVersion {
|
||||
}
|
||||
}
|
||||
|
||||
pub struct Sdgb1_40;
|
||||
pub struct Sdgb1_50;
|
||||
|
||||
impl MaiVersion for Sdgb1_40 {
|
||||
const AES_KEY: &[u8; 32] = b"n7bx6:@Fg_:2;5E89Phy7AyIcpxEQ:R@";
|
||||
const AES_IV: &[u8; 16] = b";;KjR1C3hgB1ovXa";
|
||||
const OBFUSECATE_SUFFIX: &str = "MaimaiChnBEs2D5vW";
|
||||
|
||||
const VERSION: &str = "1.40";
|
||||
}
|
||||
impl MaiVersion for Sdgb1_50 {
|
||||
const AES_KEY: &[u8; 32] = b"a>32bVP7v<63BVLkY[xM>daZ1s9MBP<R";
|
||||
const AES_IV: &[u8; 16] = b"d6xHIKq]1J]Dt^ue";
|
||||
|
||||
@@ -12,7 +12,7 @@ use sdgb_api::{
|
||||
auth_lite::{SDGB, SDHJ, delivery_raw},
|
||||
helper::MUSIC_DB,
|
||||
title::{
|
||||
MaiVersionExt, Sdgb1_40, Sdgb1_50,
|
||||
MaiVersionExt, Sdgb1_50,
|
||||
methods::APIMethod,
|
||||
model::{
|
||||
DataVersion, DxCalculatedEntries, DxRatingNet, GetUserDataApi, GetUserDataApiResp,
|
||||
@@ -167,14 +167,6 @@ async fn main() -> Result<(), Box<dyn snafu::Error>> {
|
||||
human_readable_display(preview, human_readable)?;
|
||||
}
|
||||
commands::Commands::Ping => {
|
||||
let decoded: PingResp = Sdgb1_40::request(
|
||||
&client,
|
||||
APIMethod::Ping,
|
||||
"",
|
||||
Ping {}, // note: must not be `Ping`, or serde_json serializes to nothing
|
||||
)
|
||||
.await?;
|
||||
info!("sdgb 1.40 resp: {decoded}");
|
||||
let decoded: PingResp =
|
||||
Sdgb1_50::request(&client, APIMethod::Ping, "", Ping {}).await?;
|
||||
info!("sdgb 1.50 resp: {decoded}");
|
||||
|
||||
Reference in New Issue
Block a user