From 92ce0396fe05fdbe8f5c9395cf45d284ad60432b Mon Sep 17 00:00:00 2001 From: Apprentice Harper Date: Fri, 7 Oct 2016 17:32:13 +0100 Subject: [PATCH] Making sure files and versions are consistent --- .../DeDRM.app/Contents/Resources/adobekey.py | 4 +- .../DeDRM.app/Contents/Resources/ineptpdf.py | 14 +++--- .../DeDRM_App/DeDRM_lib/lib/adobekey.py | 4 +- DeDRM_calibre_plugin/DeDRM_plugin.zip | Bin 353614 -> 353597 bytes DeDRM_calibre_plugin/DeDRM_plugin/adobekey.py | 4 +- .../Adobe_Digital_Editions/adobekey.pyw | 4 +- Other_Tools/Kobo/obok.py | 41 +++++++++++++++--- 7 files changed, 50 insertions(+), 21 deletions(-) diff --git a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/adobekey.py b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/adobekey.py index bfa542b..7fbd516 100644 --- a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/adobekey.py +++ b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/adobekey.py @@ -3,13 +3,13 @@ from __future__ import with_statement -# adobekey.pyw, version 5.7 +# adobekey.pyw, version 6.0 # Copyright © 2009-2010 i♥cabbages # Released under the terms of the GNU General Public Licence, version 3 # -# Modified 2010–2013 by some_updates, DiapDealer and Apprentice Alf +# Modified 2010–2016 by several people # Windows users: Before running this program, you must first install Python. # We recommend ActiveState Python 2.7.X for Windows (x86) from diff --git a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/ineptpdf.py b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/ineptpdf.py index 0e25d29..6de8671 100644 --- a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/ineptpdf.py +++ b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/ineptpdf.py @@ -57,6 +57,7 @@ from __future__ import with_statement # 8.0.2 - Add additional check on DER file sanity # 8.0.3 - Remove erroneous check on DER file sanity # 8.0.4 - Completely remove erroneous check on DER file sanity +# 8.0.5 - Do not process DRM-free documents """ @@ -64,7 +65,7 @@ Decrypts Adobe ADEPT-encrypted PDF files. """ __license__ = 'GPL v3' -__version__ = "8.0.4" +__version__ = "8.0.5" import sys import os @@ -1468,6 +1469,7 @@ class PDFDocument(object): if not self.encryption: self.is_printable = self.is_modifiable = self.is_extractable = True self.ready = True + raise PDFEncryptionError('Document is not encrypted.') return (docid, param) = self.encryption type = literal_name(param['Filter']) @@ -2180,11 +2182,11 @@ def decryptBook(userkey, inpath, outpath): if RSA is None: raise ADEPTError(u"PyCrypto or OpenSSL must be installed.") with open(inpath, 'rb') as inf: - try: - serializer = PDFSerializer(inf, userkey) - except: - print u"Error serializing pdf {0}. Probably wrong key.".format(os.path.basename(inpath)) - return 2 + #try: + serializer = PDFSerializer(inf, userkey) + #except: + # print u"Error serializing pdf {0}. Probably wrong key.".format(os.path.basename(inpath)) + # return 2 # hope this will fix the 'bad file descriptor' problem with open(outpath, 'wb') as outf: # help construct to make sure the method runs to the end diff --git a/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/adobekey.py b/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/adobekey.py index bfa542b..7fbd516 100644 --- a/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/adobekey.py +++ b/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/adobekey.py @@ -3,13 +3,13 @@ from __future__ import with_statement -# adobekey.pyw, version 5.7 +# adobekey.pyw, version 6.0 # Copyright © 2009-2010 i♥cabbages # Released under the terms of the GNU General Public Licence, version 3 # -# Modified 2010–2013 by some_updates, DiapDealer and Apprentice Alf +# Modified 2010–2016 by several people # Windows users: Before running this program, you must first install Python. # We recommend ActiveState Python 2.7.X for Windows (x86) from diff --git a/DeDRM_calibre_plugin/DeDRM_plugin.zip b/DeDRM_calibre_plugin/DeDRM_plugin.zip index e6a9298b2b40d3e072174541528cd34a5b96284d..9dcade7fc8bd304923fff2757f8d6bd02108b8d8 100644 GIT binary patch delta 7013 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 delta 7026 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 QaF-ip1sn#5R|Nn705YpIivR!s diff --git a/DeDRM_calibre_plugin/DeDRM_plugin/adobekey.py b/DeDRM_calibre_plugin/DeDRM_plugin/adobekey.py index bfa542b..7fbd516 100644 --- a/DeDRM_calibre_plugin/DeDRM_plugin/adobekey.py +++ b/DeDRM_calibre_plugin/DeDRM_plugin/adobekey.py @@ -3,13 +3,13 @@ from __future__ import with_statement -# adobekey.pyw, version 5.7 +# adobekey.pyw, version 6.0 # Copyright © 2009-2010 i♥cabbages # Released under the terms of the GNU General Public Licence, version 3 # -# Modified 2010–2013 by some_updates, DiapDealer and Apprentice Alf +# Modified 2010–2016 by several people # Windows users: Before running this program, you must first install Python. # We recommend ActiveState Python 2.7.X for Windows (x86) from diff --git a/Other_Tools/DRM_Key_Scripts/Adobe_Digital_Editions/adobekey.pyw b/Other_Tools/DRM_Key_Scripts/Adobe_Digital_Editions/adobekey.pyw index bfa542b..7fbd516 100644 --- a/Other_Tools/DRM_Key_Scripts/Adobe_Digital_Editions/adobekey.pyw +++ b/Other_Tools/DRM_Key_Scripts/Adobe_Digital_Editions/adobekey.pyw @@ -3,13 +3,13 @@ from __future__ import with_statement -# adobekey.pyw, version 5.7 +# adobekey.pyw, version 6.0 # Copyright © 2009-2010 i♥cabbages # Released under the terms of the GNU General Public Licence, version 3 # -# Modified 2010–2013 by some_updates, DiapDealer and Apprentice Alf +# Modified 2010–2016 by several people # Windows users: Before running this program, you must first install Python. # We recommend ActiveState Python 2.7.X for Windows (x86) from diff --git a/Other_Tools/Kobo/obok.py b/Other_Tools/Kobo/obok.py index 9720dcf..e744c2b 100644 --- a/Other_Tools/Kobo/obok.py +++ b/Other_Tools/Kobo/obok.py @@ -1,6 +1,12 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- +# Version 3.2.2 October 2016 +# Change to the way the new database version is handled. +# +# Version 3.2.1 September 2016 +# Update for v4.0 of Windows Desktop app. +# # Version 3.2.0 January 2016 # Update for latest version of Windows Desktop app. # Support Kobo devices in the command line version. @@ -136,8 +142,8 @@ # """Manage all Kobo books, either encrypted or DRM-free.""" -__version__ = '3.1.9' -__about__ = u"Obok v{0}\nCopyright © 2012-2015 Physisticated et al.".format(__version__) +__version__ = '3.2.2' +__about__ = u"Obok v{0}\nCopyright © 2012-2016 Physisticated et al.".format(__version__) import sys import os @@ -152,6 +158,7 @@ import xml.etree.ElementTree as ET import string import shutil import argparse +import tempfile can_parse_xml = True try: @@ -162,7 +169,7 @@ except ImportError: # print u"Cannot find xml.etree, disabling extraction of serial numbers" # List of all known hash keys -KOBO_HASH_KEYS = ['88b3a2e13', 'XzUhGYdFp', 'NoCanLook'] +KOBO_HASH_KEYS = ['88b3a2e13', 'XzUhGYdFp', 'NoCanLook','QJhwzAtXL'] class ENCRYPTIONError(Exception): pass @@ -355,7 +362,18 @@ class KoboLibrary(object): if (self.kobodir != u""): self.bookdir = os.path.join(self.kobodir, u"kepub") - self.__sqlite = sqlite3.connect(kobodb) + # make a copy of the database in a temporary file + # so we can ensure it's not using WAL logging which sqlite3 can't do. + self.newdb = tempfile.NamedTemporaryFile(mode='wb', delete=False) + print self.newdb.name + olddb = open(kobodb, 'rb') + self.newdb.write(olddb.read(18)) + self.newdb.write('\x01\x01') + olddb.read(2) + self.newdb.write(olddb.read()) + olddb.close() + self.newdb.close() + self.__sqlite = sqlite3.connect(self.newdb.name) self.__cursor = self.__sqlite.cursor() self._userkeys = [] self._books = [] @@ -366,6 +384,8 @@ class KoboLibrary(object): """Closes the database used by the library.""" self.__cursor.close() self.__sqlite.close() + # delete the temporary copy of the database + os.remove(self.newdb.name) @property def userkeys (self): @@ -558,12 +578,19 @@ class KoboFile(object): Returns True if the content was checked, False if it was not checked.""" if self.mimetype == 'application/xhtml+xml': - if contents[:5]=="