Fix plugin crash with invalid ADE key
This commit is contained in:
parent
59839ae5c7
commit
9a11f480b5
|
@ -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 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 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).
|
|
@ -511,10 +511,10 @@ class DeDRM(FileTypePlugin):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Found matching key
|
# 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))
|
print("{0} v{1}: Trying UUID-matched encryption key {2:s}".format(PLUGIN_NAME, PLUGIN_VERSION, keyname))
|
||||||
of = self.temporary_file(".epub")
|
of = self.temporary_file(".epub")
|
||||||
try:
|
try:
|
||||||
|
userkey = codecs.decode(userkeyhex, 'hex')
|
||||||
result = ineptepub.decryptBook(userkey, inf.name, of.name)
|
result = ineptepub.decryptBook(userkey, inf.name, of.name)
|
||||||
of.close()
|
of.close()
|
||||||
if result == 0:
|
if result == 0:
|
||||||
|
@ -531,12 +531,13 @@ class DeDRM(FileTypePlugin):
|
||||||
|
|
||||||
# Attempt to decrypt epub with each encryption key (generated or provided).
|
# Attempt to decrypt epub with each encryption key (generated or provided).
|
||||||
for keyname, userkeyhex in dedrmprefs['adeptkeys'].items():
|
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))
|
print("{0} v{1}: Trying Encryption key {2:s}".format(PLUGIN_NAME, PLUGIN_VERSION, keyname))
|
||||||
of = self.temporary_file(".epub")
|
of = self.temporary_file(".epub")
|
||||||
|
|
||||||
# Give the user key, ebook and TemporaryPersistent file to the decryption function.
|
# Give the user key, ebook and TemporaryPersistent file to the decryption function.
|
||||||
try:
|
try:
|
||||||
|
userkey = codecs.decode(userkeyhex, 'hex')
|
||||||
result = ineptepub.decryptBook(userkey, inf.name, of.name)
|
result = ineptepub.decryptBook(userkey, inf.name, of.name)
|
||||||
except ineptepub.ADEPTNewVersionError:
|
except ineptepub.ADEPTNewVersionError:
|
||||||
print("{0} v{1}: Book uses unsupported (too new) Adobe DRM.".format(PLUGIN_NAME, PLUGIN_VERSION, time.time()-self.starttime))
|
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
|
continue
|
||||||
|
|
||||||
# Found matching key
|
# 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))
|
print("{0} v{1}: Trying UUID-matched encryption key {2:s}".format(PLUGIN_NAME, PLUGIN_VERSION, keyname))
|
||||||
of = self.temporary_file(".pdf")
|
of = self.temporary_file(".pdf")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
userkey = codecs.decode(userkeyhex, 'hex')
|
||||||
result = ineptpdf.decryptBook(userkey, path_to_ebook, of.name)
|
result = ineptpdf.decryptBook(userkey, path_to_ebook, of.name)
|
||||||
of.close()
|
of.close()
|
||||||
if result == 0:
|
if result == 0:
|
||||||
|
|
Loading…
Reference in New Issue