mirror of
https://github.com/noDRM/DeDRM_tools.git
synced 2024-11-05 13:36:10 +06:00
Merge pull request #1502 from ableeker/python3
Fix for broken book keys
This commit is contained in:
commit
495dda3809
|
@ -415,12 +415,12 @@ def decryptBook(userkey, inpath, outpath):
|
||||||
return 1
|
return 1
|
||||||
bookkey = rsa.decrypt(codecs.decode(bookkey.encode('ascii'), 'base64'))
|
bookkey = rsa.decrypt(codecs.decode(bookkey.encode('ascii'), 'base64'))
|
||||||
# Padded as per RSAES-PKCS1-v1_5
|
# Padded as per RSAES-PKCS1-v1_5
|
||||||
if len(bookkey) != 16:
|
if len(bookkey) > 16:
|
||||||
if bookkey[-17] != '\x00' and bookkey[-17] != 0:
|
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)))
|
print("Could not decrypt {0:s}. Wrong key".format(os.path.basename(inpath)))
|
||||||
return 2
|
return 2
|
||||||
else:
|
|
||||||
bookkey = bookkey[-16:]
|
|
||||||
encryption = inf.read('META-INF/encryption.xml')
|
encryption = inf.read('META-INF/encryption.xml')
|
||||||
decryptor = Decryptor(bookkey, encryption)
|
decryptor = Decryptor(bookkey, encryption)
|
||||||
kwds = dict(compression=ZIP_DEFLATED, allowZip64=False)
|
kwds = dict(compression=ZIP_DEFLATED, allowZip64=False)
|
||||||
|
|
|
@ -1599,11 +1599,10 @@ class PDFDocument(object):
|
||||||
bookkey = rsa.decrypt(bookkey)
|
bookkey = rsa.decrypt(bookkey)
|
||||||
#if bookkey[0] != 2:
|
#if bookkey[0] != 2:
|
||||||
# raise ADEPTError('error decrypting book session key')
|
# raise ADEPTError('error decrypting book session key')
|
||||||
try:
|
if len(bookkey) > 16:
|
||||||
index = bookkey.index(b'\0') + 1
|
if bookkey[-17] == '\x00' or bookkey[-17] == 0:
|
||||||
bookkey = bookkey[index:]
|
bookkey = bookkey[-16:]
|
||||||
except ValueError:
|
length = 16
|
||||||
pass
|
|
||||||
ebx_V = int_value(param.get('V', 4))
|
ebx_V = int_value(param.get('V', 4))
|
||||||
ebx_type = int_value(param.get('EBX_ENCRYPTIONTYPE', 6))
|
ebx_type = int_value(param.get('EBX_ENCRYPTIONTYPE', 6))
|
||||||
# added because of improper booktype / decryption book session key errors
|
# added because of improper booktype / decryption book session key errors
|
||||||
|
|
Loading…
Reference in New Issue
Block a user