]> xmof Git - DeDRM.git/commitdiff
Fix for broken book keys
authorAldo Bleeker <mail@ableeker.demon.nl>
Thu, 28 Jan 2021 12:06:59 +0000 (13:06 +0100)
committerAldo Bleeker <mail@ableeker.demon.nl>
Thu, 28 Jan 2021 12:06:59 +0000 (13:06 +0100)
DeDRM_plugin/ineptepub.py
DeDRM_plugin/ineptpdf.py

index fb67cb4cda6f687686980dfdc59c44a65d1cfb4f..8bab71709a15f5177d152030047e8ebbf82951ee 100644 (file)
@@ -415,12 +415,12 @@ def decryptBook(userkey, inpath, outpath):
                 return 1
             bookkey = rsa.decrypt(codecs.decode(bookkey.encode('ascii'), 'base64'))
             # Padded as per RSAES-PKCS1-v1_5
-            if len(bookkey) != 16:
-                if bookkey[-17] != '\x00' and bookkey[-17] != 0:
+            if len(bookkey) > 16:
+                if bookkey[-17] == '\x00' or bookkey[-17] == 0:
+                    bookkey = bookkey[-16:]
+                else:
                     print("Could not decrypt {0:s}. Wrong key".format(os.path.basename(inpath)))
                     return 2
-                else:
-                    bookkey = bookkey[-16:]
             encryption = inf.read('META-INF/encryption.xml')
             decryptor = Decryptor(bookkey, encryption)
             kwds = dict(compression=ZIP_DEFLATED, allowZip64=False)
index 17ccdcff63d89ce1aa63c835330e865456cdec78..669856c96539b94905a755758e2652a528f1e5ed 100755 (executable)
@@ -1599,11 +1599,10 @@ class PDFDocument(object):
         bookkey = rsa.decrypt(bookkey)
         #if bookkey[0] != 2:
         #    raise ADEPTError('error decrypting book session key')
-        try:
-               index = bookkey.index(b'\0') + 1
-               bookkey = bookkey[index:]
-        except ValueError:
-               pass
+        if len(bookkey) > 16:
+            if bookkey[-17] == '\x00' or bookkey[-17] == 0:
+                bookkey = bookkey[-16:]
+                length = 16
         ebx_V = int_value(param.get('V', 4))
         ebx_type = int_value(param.get('EBX_ENCRYPTIONTYPE', 6))
         # added because of improper booktype / decryption book session key errors