summaryrefslogtreecommitdiffstats
path: root/DeDRM_plugin/mobidedrm.py
diff options
context:
space:
mode:
authorNoDRM <[email protected]>2023-08-03 20:01:38 +0200
committerNoDRM <[email protected]>2023-08-03 20:01:38 +0200
commitbc089ee46d3e5bbb458bc0dd7a503962495f9e2c (patch)
treeb68bd2a21c80fbb3fa6758bd169ab9f3946cebc6 /DeDRM_plugin/mobidedrm.py
parente509b7d520d044a830c5e56ac75493142d05445d (diff)
More Python2 bugfixes
Diffstat (limited to 'DeDRM_plugin/mobidedrm.py')
-rwxr-xr-xDeDRM_plugin/mobidedrm.py22
1 files changed, 18 insertions, 4 deletions
diff --git a/DeDRM_plugin/mobidedrm.py b/DeDRM_plugin/mobidedrm.py
index 0374836..36d30c4 100755
--- a/DeDRM_plugin/mobidedrm.py
+++ b/DeDRM_plugin/mobidedrm.py
@@ -124,7 +124,11 @@ def getSizeOfTrailingDataEntries(ptr, size, flags):
if size <= 0:
return result
while True:
- v = ptr[size-1]
+ if sys.version_info[0] == 2:
+ v = ord(ptr[size-1])
+ else:
+ v = ptr[size-1]
+
result |= (v & 0x7F) << bitpos
bitpos += 7
size -= 1
@@ -140,7 +144,10 @@ def getSizeOfTrailingDataEntries(ptr, size, flags):
# if multibyte data is included in the encryped data, we'll
# have already cleared this flag.
if flags & 1:
- num += (ptr[size - num - 1] & 0x3) + 1
+ if sys.version_info[0] == 2:
+ num += (ord(ptr[size - num - 1]) & 0x3) + 1
+ else:
+ num += (ptr[size - num - 1] & 0x3) + 1
return num
@@ -299,7 +306,10 @@ class MobiBook:
for pid in pidlist:
bigpid = pid.encode('utf-8').ljust(16,b'\0')
temp_key = PC1(keyvec1, bigpid, False)
- temp_key_sum = sum(temp_key) & 0xff
+ if sys.version_info[0] == 2:
+ temp_key_sum = sum(map(ord,temp_key)) & 0xff
+ else:
+ temp_key_sum = sum(temp_key) & 0xff
found_key = None
for i in range(count):
verification, size, type, cksum, cookie = struct.unpack('>LLLBxxx32s', data[i*0x30:i*0x30+0x30])
@@ -315,7 +325,11 @@ class MobiBook:
# Then try the default encoding that doesn't require a PID
pid = '00000000'
temp_key = keyvec1
- temp_key_sum = sum(temp_key) & 0xff
+ if sys.version_info[0] == 2:
+ temp_key_sum = sum(map(ord,temp_key)) & 0xff
+ else:
+ temp_key_sum = sum(temp_key) & 0xff
+
for i in range(count):
verification, size, type, cksum, cookie = struct.unpack('>LLLBxxx32s', data[i*0x30:i*0x30+0x30])
if cksum == temp_key_sum: