From a7c0d3d6dfd2e21b04787bbbeec60978eeb68d08 Mon Sep 17 00:00:00 2001 From: Ranny <5338028+Rannytheory@users.noreply.github.com> Date: Fri, 30 May 2025 01:55:04 -0400 Subject: [PATCH] fix: Zlib decryption for wuwa For wuwa 2.4Beta+ --- repak/src/entry.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/repak/src/entry.rs b/repak/src/entry.rs index 88e6c6b..1387e9c 100644 --- a/repak/src/entry.rs +++ b/repak/src/entry.rs @@ -347,7 +347,23 @@ impl Entry { return Err(super::Error::Encrypted); }; use aes::cipher::BlockDecrypt; - for block in data.chunks_mut(16) { + + let mut data_len = data.len(); + #[cfg(feature = "wuthering-waves")] + { + data_len = match self.compression_slot.and_then(|c| compression[c as usize]) { + Some(Compression::Zlib) => { + if data_len > 2048 { + 2048 + } else { + data_len + } + }, + _ => data_len, + }; + } + + for block in data[..data_len].chunks_mut(16) { key.decrypt_block(aes::Block::from_mut_slice(block)) } data.truncate(self.compressed as usize);