# Changelog
# 0.01 - Initial version
# 0.02 - Huffdic compressed books were not properly decrypted
+# 0.03 - fix 0.02 to work with all Mobipocket eBooks
import sys,struct,binascii
def getSizeOfTrailingDataEntries(ptr, size, flags):
def getSizeOfTrailingDataEntry(ptr, size):
bitpos, result = 0, 0
+ if size <= 0:
+ return result
while True:
v = ord(ptr[size-1])
result |= (v & 0x7F) << bitpos
return result
num = 0
flags >>= 1
- while flags:
- if flags & 1:
- num += getSizeOfTrailingDataEntry(ptr, size - num)
- flags >>= 1
+# while flags:
+ if flags & 1:
+ num += getSizeOfTrailingDataEntry(ptr, size - num)
+ flags >>= 1
return num
def getResult(self):
return self.data_file
-print "MobiDeDrm v0.02. Copyright (c) 2008 The Dark Reverser"
+print "MobiDeDrm v0.03. Copyright (c) 2008 The Dark Reverser"
if len(sys.argv)<4:
print "Removes protection from Mobipocket books"
print "Usage:"
try:
file(outfile, 'wb').write(DrmStripper(data_file, pid).getResult())
except DrmException, e:
- print "Error: %s" % e
\ No newline at end of file
+ print "Error: %s" % e