From 9a11f480b527e3d1064b890b1b5043e1c5363957 Mon Sep 17 00:00:00 2001 From: NoDRM Date: Wed, 3 Aug 2022 19:49:20 +0200 Subject: [PATCH] Fix plugin crash with invalid ADE key --- CHANGELOG.md | 1 + DeDRM_plugin/__init__.py | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index feb8a84..8f3c7f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -71,3 +71,4 @@ List of changes since the fork of Apprentice Harper's repository: - Fix a bug introduced with #48 that breaks DeDRM'ing on Calibre 4 (fixes #101). - Fix some more Calibre-6 bugs in the Obok plugin (should fix #114). +- Fix a bug where invalid Adobe keys could cause the plugin to stop trying subsequent keys (partially fixes #109). \ No newline at end of file diff --git a/DeDRM_plugin/__init__.py b/DeDRM_plugin/__init__.py index ad68ab4..ba9e2ec 100644 --- a/DeDRM_plugin/__init__.py +++ b/DeDRM_plugin/__init__.py @@ -511,10 +511,10 @@ class DeDRM(FileTypePlugin): continue # Found matching key - userkey = codecs.decode(userkeyhex, 'hex') print("{0} v{1}: Trying UUID-matched encryption key {2:s}".format(PLUGIN_NAME, PLUGIN_VERSION, keyname)) of = self.temporary_file(".epub") try: + userkey = codecs.decode(userkeyhex, 'hex') result = ineptepub.decryptBook(userkey, inf.name, of.name) of.close() if result == 0: @@ -531,12 +531,13 @@ class DeDRM(FileTypePlugin): # Attempt to decrypt epub with each encryption key (generated or provided). for keyname, userkeyhex in dedrmprefs['adeptkeys'].items(): - userkey = codecs.decode(userkeyhex, 'hex') + print("{0} v{1}: Trying Encryption key {2:s}".format(PLUGIN_NAME, PLUGIN_VERSION, keyname)) of = self.temporary_file(".epub") # Give the user key, ebook and TemporaryPersistent file to the decryption function. try: + userkey = codecs.decode(userkeyhex, 'hex') result = ineptepub.decryptBook(userkey, inf.name, of.name) except ineptepub.ADEPTNewVersionError: print("{0} v{1}: Book uses unsupported (too new) Adobe DRM.".format(PLUGIN_NAME, PLUGIN_VERSION, time.time()-self.starttime)) @@ -673,11 +674,11 @@ class DeDRM(FileTypePlugin): continue # Found matching key - userkey = codecs.decode(userkeyhex, 'hex') print("{0} v{1}: Trying UUID-matched encryption key {2:s}".format(PLUGIN_NAME, PLUGIN_VERSION, keyname)) of = self.temporary_file(".pdf") try: + userkey = codecs.decode(userkeyhex, 'hex') result = ineptpdf.decryptBook(userkey, path_to_ebook, of.name) of.close() if result == 0: