diff options
author | NoDRM <[email protected]> | 2023-08-03 20:01:38 +0200 |
---|---|---|
committer | NoDRM <[email protected]> | 2023-08-03 20:01:38 +0200 |
commit | bc089ee46d3e5bbb458bc0dd7a503962495f9e2c (patch) | |
tree | b68bd2a21c80fbb3fa6758bd169ab9f3946cebc6 /DeDRM_plugin/mobidedrm.py | |
parent | e509b7d520d044a830c5e56ac75493142d05445d (diff) |
More Python2 bugfixes
Diffstat (limited to 'DeDRM_plugin/mobidedrm.py')
-rwxr-xr-x | DeDRM_plugin/mobidedrm.py | 22 |
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: |