From 34c4c067e825edb5a0a64f5c7ecf88a6f2d34323 Mon Sep 17 00:00:00 2001 From: Martin Rys Date: Sun, 27 Oct 2024 22:57:43 +0100 Subject: [PATCH] DeDRM ion: Correctly throw last exception if decrypt fails --- DeDRM_plugin/ion.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/DeDRM_plugin/ion.py b/DeDRM_plugin/ion.py index 9d9e49c..36c542e 100644 --- a/DeDRM_plugin/ion.py +++ b/DeDRM_plugin/ion.py @@ -13,6 +13,7 @@ Revision history: Copyright © 2013-2020 Apprentice Harper et al. """ +from __future__ import annotations import collections import hashlib @@ -1345,7 +1346,7 @@ class DrmIonVoucher(object): process_V4648(shared), process_V5683(shared)] decrypted=False - ex=None + lastexception: Exception | None = None for sharedsecret in sharedsecrets: key = hmac.new(sharedsecret, b"PIDv3", digestmod=hashlib.sha256).digest() aes = AES.new(key[:32], AES.MODE_CBC, self.cipheriv[:16]) @@ -1362,9 +1363,10 @@ class DrmIonVoucher(object): print("Decryption succeeded") break except Exception as ex: + lastexception = ex print("Decryption failed, trying next fallback ") if not decrypted: - raise ex + raise lastexception self.drmkey.stepin() while self.drmkey.hasnext():