From 86be8d1a47eb19a0d4ca83bd1e2681901cc3827a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Lidwin?= Date: Fri, 22 May 2026 17:08:53 +0200 Subject: [PATCH] fix: support non-encrypted variants of v5 manifests --- legendary/models/manifest.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/legendary/models/manifest.py b/legendary/models/manifest.py index aef324b..891abb9 100644 --- a/legendary/models/manifest.py +++ b/legendary/models/manifest.py @@ -138,7 +138,8 @@ class Manifest: _m.chunk_data_list = CDL.read(_tmp, _m.meta.feature_level) _m.file_manifest_list = FML.read(_tmp) _m.custom_fields = CustomFields.read(_tmp) - _m.encrypted_data = EncryptedData.read(_tmp, _m.meta.feature_level) + if _m.encrypted: + _m.encrypted_data = EncryptedData.read(_tmp, _m.meta.feature_level) if unhandled_data := _tmp.read(): logger.warning(f'Did not read {len(unhandled_data)} remaining bytes in manifest! ' @@ -212,7 +213,7 @@ class Manifest: self.chunk_data_list.write(body_bio) self.file_manifest_list.write(body_bio) self.custom_fields.write(body_bio) - if target_version >= 22: + if target_version >= 22 and self.encrypted_data is not None: self.encrypted_data.write(body_bio) self.data = body_bio.getvalue() @@ -596,11 +597,13 @@ class ChunkInfo: @property def path(self): if self._manifest_version >= 22: + guid_invalid = self.secret_guid[0] == self.secret_guid[1] == self.secret_guid[2] == self.secret_guid[3] == 0 secret_b64 = base64.urlsafe_b64encode(struct.pack('