From 53996cf49c504264a3632576f15fc492dd371860 Mon Sep 17 00:00:00 2001 From: NoDRM Date: Thu, 3 Aug 2023 20:45:06 +0200 Subject: [PATCH] More Python2 fixes --- DeDRM_plugin/__calibre_compat_code.py | 2 +- DeDRM_plugin/adobekey.py | 4 ++-- DeDRM_plugin/config.py | 2 +- DeDRM_plugin/epubtest.py | 4 ++-- DeDRM_plugin/erdr2pml.py | 7 ++----- DeDRM_plugin/ignoblekeyGenPassHash.py | 4 ++-- DeDRM_plugin/ignoblekeyNookStudy.py | 4 ++-- DeDRM_plugin/ineptepub.py | 5 ++--- DeDRM_plugin/ineptpdf.py | 4 ++-- DeDRM_plugin/k4mobidedrm.py | 4 ++-- DeDRM_plugin/kindlekey.py | 7 ++----- DeDRM_plugin/kindlepid.py | 8 ++++---- DeDRM_plugin/mobidedrm.py | 24 +++++++++++++++++------- DeDRM_plugin/topazextract.py | 6 +++--- 14 files changed, 44 insertions(+), 41 deletions(-) diff --git a/DeDRM_plugin/__calibre_compat_code.py b/DeDRM_plugin/__calibre_compat_code.py index a535a42..85eae0c 100644 --- a/DeDRM_plugin/__calibre_compat_code.py +++ b/DeDRM_plugin/__calibre_compat_code.py @@ -15,6 +15,6 @@ if "calibre" in sys.modules and sys.version_info[0] == 2: sys.path.insert(0, os.path.join(config_dir, "plugins", "DeDRM.zip")) # Explicitly set the package identifier so we are allowed to import stuff ... -#__package__ = "DeDRM_plugin" +__package__ = "calibre_plugins.dedrm" #@@CALIBRE_COMPAT_CODE_END@@ diff --git a/DeDRM_plugin/adobekey.py b/DeDRM_plugin/adobekey.py index 4994dd0..7dc7671 100644 --- a/DeDRM_plugin/adobekey.py +++ b/DeDRM_plugin/adobekey.py @@ -46,8 +46,8 @@ from base64 import b64decode -from utilities import SafeUnbuffered -from argv_utils import unicode_argv +from .utilities import SafeUnbuffered +from .argv_utils import unicode_argv try: diff --git a/DeDRM_plugin/config.py b/DeDRM_plugin/config.py index 82ee89f..19b40fd 100755 --- a/DeDRM_plugin/config.py +++ b/DeDRM_plugin/config.py @@ -29,7 +29,7 @@ from calibre.constants import iswindows, isosx from __init__ import PLUGIN_NAME, PLUGIN_VERSION from __version import RESOURCE_NAME as help_file_name -from utilities import uStrCmp +from .utilities import uStrCmp import prefs import androidkindlekey diff --git a/DeDRM_plugin/epubtest.py b/DeDRM_plugin/epubtest.py index 9213df8..8b7fa04 100644 --- a/DeDRM_plugin/epubtest.py +++ b/DeDRM_plugin/epubtest.py @@ -53,12 +53,12 @@ import sys, struct, os, traceback import zlib import zipfile import xml.etree.ElementTree as etree -from argv_utils import unicode_argv +from .argv_utils import unicode_argv NSMAP = {'adept': 'http://ns.adobe.com/adept', 'enc': 'http://www.w3.org/2001/04/xmlenc#'} -from utilities import SafeUnbuffered +from .utilities import SafeUnbuffered _FILENAME_LEN_OFFSET = 26 diff --git a/DeDRM_plugin/erdr2pml.py b/DeDRM_plugin/erdr2pml.py index 7d87aa7..4d95724 100755 --- a/DeDRM_plugin/erdr2pml.py +++ b/DeDRM_plugin/erdr2pml.py @@ -79,11 +79,8 @@ except ImportError: #@@CALIBRE_COMPAT_CODE@@ -try: - from utilities import SafeUnbuffered - from argv_utils import unicode_argv -except: - from . import utilities, argv_utils +from .utilities import SafeUnbuffered +from .argv_utils import unicode_argv iswindows = sys.platform.startswith('win') isosx = sys.platform.startswith('darwin') diff --git a/DeDRM_plugin/ignoblekeyGenPassHash.py b/DeDRM_plugin/ignoblekeyGenPassHash.py index 6f09bc4..65d1733 100644 --- a/DeDRM_plugin/ignoblekeyGenPassHash.py +++ b/DeDRM_plugin/ignoblekeyGenPassHash.py @@ -50,9 +50,9 @@ try: except ImportError: from Crypto.Cipher import AES -from utilities import SafeUnbuffered +from .utilities import SafeUnbuffered -from argv_utils import unicode_argv +from .argv_utils import unicode_argv class IGNOBLEError(Exception): pass diff --git a/DeDRM_plugin/ignoblekeyNookStudy.py b/DeDRM_plugin/ignoblekeyNookStudy.py index 4cf5246..99db9b5 100644 --- a/DeDRM_plugin/ignoblekeyNookStudy.py +++ b/DeDRM_plugin/ignoblekeyNookStudy.py @@ -27,14 +27,14 @@ import hashlib import getopt import re -from utilities import SafeUnbuffered +from .utilities import SafeUnbuffered try: from calibre.constants import iswindows except: iswindows = sys.platform.startswith('win') -from argv_utils import unicode_argv +from .argv_utils import unicode_argv class DrmException(Exception): pass diff --git a/DeDRM_plugin/ineptepub.py b/DeDRM_plugin/ineptepub.py index f118ce6..b655ffd 100644 --- a/DeDRM_plugin/ineptepub.py +++ b/DeDRM_plugin/ineptepub.py @@ -70,9 +70,8 @@ def unpad(data, padding=16): return data[:-pad_len] -from utilities import SafeUnbuffered - -from argv_utils import unicode_argv +from .utilities import SafeUnbuffered +from .argv_utils import unicode_argv class ADEPTError(Exception): diff --git a/DeDRM_plugin/ineptpdf.py b/DeDRM_plugin/ineptpdf.py index 7802d87..69a9ca5 100755 --- a/DeDRM_plugin/ineptpdf.py +++ b/DeDRM_plugin/ineptpdf.py @@ -93,12 +93,12 @@ def unpad(data, padding=16): return data[:-pad_len] -from utilities import SafeUnbuffered +from .utilities import SafeUnbuffered iswindows = sys.platform.startswith('win') isosx = sys.platform.startswith('darwin') -from argv_utils import unicode_argv +from .argv_utils import unicode_argv class ADEPTError(Exception): pass diff --git a/DeDRM_plugin/k4mobidedrm.py b/DeDRM_plugin/k4mobidedrm.py index c3200b6..4a22318 100644 --- a/DeDRM_plugin/k4mobidedrm.py +++ b/DeDRM_plugin/k4mobidedrm.py @@ -88,9 +88,9 @@ import kgenpids import androidkindlekey import kfxdedrm -from utilities import SafeUnbuffered +from .utilities import SafeUnbuffered -from argv_utils import unicode_argv +from .argv_utils import unicode_argv # cleanup unicode filenames diff --git a/DeDRM_plugin/kindlekey.py b/DeDRM_plugin/kindlekey.py index 4e128c9..9206d83 100644 --- a/DeDRM_plugin/kindlekey.py +++ b/DeDRM_plugin/kindlekey.py @@ -62,11 +62,8 @@ except NameError: # Routines common to Mac and PC -try: - from utilities import SafeUnbuffered - from argv_utils import unicode_argv -except: - from . import utilities, argv_utils +from .utilities import SafeUnbuffered +from .argv_utils import unicode_argv try: diff --git a/DeDRM_plugin/kindlepid.py b/DeDRM_plugin/kindlepid.py index a034e40..2d53b99 100644 --- a/DeDRM_plugin/kindlepid.py +++ b/DeDRM_plugin/kindlepid.py @@ -16,17 +16,17 @@ import sys import binascii -from utilities import SafeUnbuffered +from .utilities import SafeUnbuffered -from argv_utils import unicode_argv +from .argv_utils import unicode_argv -letters = 'ABCDEFGHIJKLMNPQRSTUVWXYZ123456789' +letters = b'ABCDEFGHIJKLMNPQRSTUVWXYZ123456789' def crc32(s): return (~binascii.crc32(s,-1))&0xFFFFFFFF def checksumPid(s): - crc = crc32(s.encode('ascii')) + crc = crc32(s) crc = crc ^ (crc >> 16) res = s l = len(letters) diff --git a/DeDRM_plugin/mobidedrm.py b/DeDRM_plugin/mobidedrm.py index 5989e8b..864c08f 100755 --- a/DeDRM_plugin/mobidedrm.py +++ b/DeDRM_plugin/mobidedrm.py @@ -80,11 +80,14 @@ import sys import os import struct import binascii -from alfcrypto import Pukall_Cipher -from utilities import SafeUnbuffered -from argv_utils import unicode_argv +#@@CALIBRE_COMPAT_CODE@@ + + +from .alfcrypto import Pukall_Cipher +from .utilities import SafeUnbuffered +from .argv_utils import unicode_argv class DrmException(Exception): @@ -103,10 +106,17 @@ def PC1(key, src, decryption=True): except: raise -# accepts unicode returns unicode +letters = b'ABCDEFGHIJKLMNPQRSTUVWXYZ123456789' + +def crc32(s): + return (~binascii.crc32(s,-1))&0xFFFFFFFF + def checksumPid(s): - letters = 'ABCDEFGHIJKLMNPQRSTUVWXYZ123456789' - crc = (~binascii.crc32(s.encode('utf-8'),-1))&0xFFFFFFFF + + s = s.encode() + + + crc = crc32(s) crc = crc ^ (crc >> 16) res = s l = len(letters) @@ -115,7 +125,7 @@ def checksumPid(s): pos = (b // l) ^ (b % l) res += bytes(bytearray([letters[pos%l]])) crc >>= 8 - return res + return res.decode() # expects bytearray def getSizeOfTrailingDataEntries(ptr, size, flags): diff --git a/DeDRM_plugin/topazextract.py b/DeDRM_plugin/topazextract.py index 8848bd9..97d75a7 100644 --- a/DeDRM_plugin/topazextract.py +++ b/DeDRM_plugin/topazextract.py @@ -24,10 +24,10 @@ import traceback from struct import pack from struct import unpack -from alfcrypto import Topaz_Cipher -from utilities import SafeUnbuffered +from .alfcrypto import Topaz_Cipher +from .utilities import SafeUnbuffered -from argv_utils import unicode_argv +from .argv_utils import unicode_argv #global switch