diff --git a/UnityPy/files/BundleFile.py b/UnityPy/files/BundleFile.py index ed014c92..3d011afa 100644 --- a/UnityPy/files/BundleFile.py +++ b/UnityPy/files/BundleFile.py @@ -502,14 +502,21 @@ def decompress_data( The decompressed data.""" comp_flag = CompressionFlags(flags & ArchiveFlags.CompressionTypeMask) - if self.decryptor is not None and flags & 0x100: - compressed_data = self.decryptor.decrypt_block(compressed_data, index) + if self.decryptor is not None and comp_flag != CompressionFlags.NONE and flags & 0x100: + de_compressed_data = self.decryptor.decrypt_block(compressed_data, index) + else: + de_compressed_data = compressed_data if comp_flag in CompressionHelper.DECOMPRESSION_MAP: - return cast( - bytes, - CompressionHelper.DECOMPRESSION_MAP[comp_flag](compressed_data, uncompressed_size), - ) + try: + return cast( + bytes, + CompressionHelper.DECOMPRESSION_MAP[comp_flag](de_compressed_data, uncompressed_size), + ) + except: + return cast( + bytes, + CompressionHelper.DECOMPRESSION_MAP[comp_flag](compressed_data, uncompressed_size),) else: raise ValueError(f"Unknown compression! flag: {flags}, compression flag: {comp_flag.value}")