From 723721e258c7056cc582ec5ea97ed4b4cc77530d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Claudio=20Andr=C3=A9?= Date: Thu, 30 Jan 2025 08:27:15 -0300 Subject: [PATCH] libreoffice2john.py: error in encrypted 24.2+ files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Warn that LibreOffice 24.2+ encrypted documents are not supported. See: #5652. Signed-off-by: Claudio André --- run/libreoffice2john.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/run/libreoffice2john.py b/run/libreoffice2john.py index d3ca66e5065..860a139601c 100755 --- a/run/libreoffice2john.py +++ b/run/libreoffice2john.py @@ -46,8 +46,26 @@ def process_file(filename): elements = list(r.getiterator()) is_encrypted = False + is_supported = True key_size = 16 start_key_generation_name = "SHA1" + + for element in elements: + if element.get("{urn:oasis:names:tc:opendocument:xmlns:manifest:1.0}full-path") == "encrypted-package": + is_supported = False + + if element.get("{urn:oasis:names:tc:opendocument:xmlns:manifest:1.0}key-derivation-name") is not None: + key_derivation_name = element.get("{urn:oasis:names:tc:opendocument:xmlns:manifest:1.0}key-derivation-name") + + if element.get("{urn:oasis:names:tc:opendocument:xmlns:manifest:1.0}algorithm-name") is not None: + algorithm_name = element.get("{urn:oasis:names:tc:opendocument:xmlns:manifest:1.0}algorithm-name") + + if not is_supported: + sys.stderr.write("%s is an unsupported encrypted OpenOffice file!\n" % filename) + sys.stderr.write("- Algorithm name: '%s';\n" % algorithm_name) + sys.stderr.write("- Key derivation name: '%s'.\n" % key_derivation_name) + return 14 + for i in range(0, len(elements) - 4): element = elements[i] if element.get("{urn:oasis:names:tc:opendocument:xmlns:manifest:1.0}full-path") == "content.xml":