Skip to content

Commit

Permalink
Topaz fixes to Mac & Windows apps, and version number update
Browse files Browse the repository at this point in the history
  • Loading branch information
apprenticeharper committed Apr 18, 2016
1 parent a2ba500 commit dc52618
Show file tree
Hide file tree
Showing 7 changed files with 67 additions and 21 deletions.
4 changes: 2 additions & 2 deletions DeDRM_Macintosh_Application/DeDRM.app/Contents/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
<key>CFBundleExecutable</key>
<string>droplet</string>
<key>CFBundleGetInfoString</key>
<string>DeDRM AppleScript 6.4.1 Written 2010–2016 by Apprentice Alf et al.</string>
<string>DeDRM AppleScript 6.4.2 Written 2010–2016 by Apprentice Alf et al.</string>
<key>CFBundleIconFile</key>
<string>DeDRM</string>
<key>CFBundleIdentifier</key>
Expand All @@ -36,7 +36,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>6.4.1</string>
<string>6.4.2</string>
<key>CFBundleSignature</key>
<string>dplt</string>
<key>LSRequiresCarbon</key>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -317,11 +317,16 @@ def __init__(self, filename, dict, debug, flat_xml):
'span.gridBeginCenter' : (1, 'scalar_number', 0, 0),
'span.gridEndCenter' : (1, 'scalar_number', 0, 0),

'extratokens' : (1, 'snippets', 1, 0),
'extratokens.class' : (1, 'scalar_text', 0, 0),
'extratokens.type' : (1, 'scalar_text', 0, 0),
'extratokens.firstGlyph' : (1, 'scalar_number', 0, 0),
'extratokens.lastGlyph' : (1, 'scalar_number', 0, 0),
'extratokens' : (1, 'snippets', 1, 0),
'extratokens.class' : (1, 'scalar_text', 0, 0),
'extratokens.type' : (1, 'scalar_text', 0, 0),
'extratokens.firstGlyph' : (1, 'scalar_number', 0, 0),
'extratokens.lastGlyph' : (1, 'scalar_number', 0, 0),
'extratokens.gridSize' : (1, 'scalar_number', 0, 0),
'extratokens.gridBottomCenter' : (1, 'scalar_number', 0, 0),
'extratokens.gridTopCenter' : (1, 'scalar_number', 0, 0),
'extratokens.gridBeginCenter' : (1, 'scalar_number', 0, 0),
'extratokens.gridEndCenter' : (1, 'scalar_number', 0, 0),

'glyph.h' : (1, 'number', 0, 0),
'glyph.w' : (1, 'number', 0, 0),
Expand Down
3 changes: 2 additions & 1 deletion DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/DeDRM_App.pyw
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@
# 6.3.6 - Version bump to match plugin
# 6.4.0 - Fix for Kindle for PC encryption change
# 6.4.1 - Fix for new tags in Topaz ebooks
# 6.4.2 - Fix for new tags in Topaz ebooks, and very small Topaz ebooks

__version__ = '6.4.1'
__version__ = '6.4.2'

import sys
import os, os.path
Expand Down
15 changes: 10 additions & 5 deletions DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/convert2xml.py
Original file line number Diff line number Diff line change
Expand Up @@ -317,11 +317,16 @@ def __init__(self, filename, dict, debug, flat_xml):
'span.gridBeginCenter' : (1, 'scalar_number', 0, 0),
'span.gridEndCenter' : (1, 'scalar_number', 0, 0),

'extratokens' : (1, 'snippets', 1, 0),
'extratokens.class' : (1, 'scalar_text', 0, 0),
'extratokens.type' : (1, 'scalar_text', 0, 0),
'extratokens.firstGlyph' : (1, 'scalar_number', 0, 0),
'extratokens.lastGlyph' : (1, 'scalar_number', 0, 0),
'extratokens' : (1, 'snippets', 1, 0),
'extratokens.class' : (1, 'scalar_text', 0, 0),
'extratokens.type' : (1, 'scalar_text', 0, 0),
'extratokens.firstGlyph' : (1, 'scalar_number', 0, 0),
'extratokens.lastGlyph' : (1, 'scalar_number', 0, 0),
'extratokens.gridSize' : (1, 'scalar_number', 0, 0),
'extratokens.gridBottomCenter' : (1, 'scalar_number', 0, 0),
'extratokens.gridTopCenter' : (1, 'scalar_number', 0, 0),
'extratokens.gridBeginCenter' : (1, 'scalar_number', 0, 0),
'extratokens.gridEndCenter' : (1, 'scalar_number', 0, 0),

'glyph.h' : (1, 'number', 0, 0),
'glyph.w' : (1, 'number', 0, 0),
Expand Down
Binary file modified DeDRM_calibre_plugin/DeDRM_plugin.zip
Binary file not shown.
3 changes: 2 additions & 1 deletion DeDRM_calibre_plugin/DeDRM_plugin/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,15 @@
# 6.3.6 - Fixes for ADE ePub and PDF introduced in 6.3.5
# 6.4.0 - Updated for new Kindle for PC encryption
# 6.4.1 - Fix for some new tags in Topaz ebooks.
# 6.4.2 - Fix for more new tags in Topaz ebooks and very small Topaz ebooks


"""
Decrypt DRMed ebooks.
"""

PLUGIN_NAME = u"DeDRM"
PLUGIN_VERSION_TUPLE = (6, 4, 1)
PLUGIN_VERSION_TUPLE = (6, 4, 2)
PLUGIN_VERSION = u".".join([unicode(str(x)) for x in PLUGIN_VERSION_TUPLE])
# Include an html helpfile in the plugin's zipfile with the following name.
RESOURCE_NAME = PLUGIN_NAME + '_Help.htm'
Expand Down
48 changes: 41 additions & 7 deletions Other_Tools/DRM_Key_Scripts/Kindle_for_Mac_and_PC/kindlekey.pyw
Original file line number Diff line number Diff line change
Expand Up @@ -993,7 +993,22 @@ if iswindows:
# determine type of kindle info provided and return a
# database of keynames and values
def getDBfromFile(kInfoFile):
names = ['kindle.account.tokens','kindle.cookie.item','eulaVersionAccepted','login_date','kindle.token.item','login','kindle.key.item','kindle.name.info','kindle.device.info', 'MazamaRandomNumber', 'max_date', 'SIGVERIF']
names = [\
'kindle.account.tokens',\
'kindle.cookie.item',\
'eulaVersionAccepted',\
'login_date',\
'kindle.token.item',\
'login',\
'kindle.key.item',\
'kindle.name.info',\
'kindle.device.info',\
'MazamaRandomNumber',\
'max_date',\
'SIGVERIF',\
'build_version',\
]

DB = {}
with open(kInfoFile, 'rb') as infoReader:
hdr = infoReader.read(1)
Expand Down Expand Up @@ -1134,6 +1149,8 @@ if iswindows:
if encodeHash(name,testMap8) == keyhash:
keyname = name
break
if keyname == "unknown":
keyname = keyhash

# the testMap8 encoded contents data has had a length
# of chars (always odd) cut off of the front and moved
Expand All @@ -1158,14 +1175,17 @@ if iswindows:
# decode using new testMap8 to get the original CryptProtect Data
encryptedValue = decode(encdata,testMap8)
cleartext = CryptUnprotectData(encryptedValue, entropy, 1)
DB[keyname] = cleartext
if len(cleartext)>0:
DB[keyname] = cleartext
#print keyname, cleartext

if 'kindle.account.tokens' in DB:
if len(DB)>4:
# store values used in decryption
DB['IDString'] = GetIDString()
DB['UserName'] = GetUserName()
print u"Decrypted key file using IDString '{0:s}' and UserName '{1:s}'".format(GetIDString(), GetUserName().encode('hex'))
else:
print u"Couldn't decrypt file."
DB = {}
return DB
elif isosx:
Expand Down Expand Up @@ -1577,7 +1597,21 @@ elif isosx:
# determine type of kindle info provided and return a
# database of keynames and values
def getDBfromFile(kInfoFile):
names = ['kindle.account.tokens','kindle.cookie.item','eulaVersionAccepted','login_date','kindle.token.item','login','kindle.key.item','kindle.name.info','kindle.device.info', 'MazamaRandomNumber', 'max_date', 'SIGVERIF']
names = [\
'kindle.account.tokens',\
'kindle.cookie.item',\
'eulaVersionAccepted',\
'login_date',\
'kindle.token.item',\
'login',\
'kindle.key.item',\
'kindle.name.info',\
'kindle.device.info',\
'MazamaRandomNumber',\
'max_date',\
'SIGVERIF',\
'build_version',\
]
with open(kInfoFile, 'rb') as infoReader:
filehdr = infoReader.read(1)
filedata = infoReader.read()
Expand Down Expand Up @@ -1683,7 +1717,7 @@ elif isosx:
if len(cleartext) > 0:
DB[keyname] = cleartext

if 'MazamaRandomNumber' in DB and 'kindle.account.tokens' in DB:
if len(DB)>4:
break
else:
# the latest .kinf2011 version for K4M 1.9.1
Expand Down Expand Up @@ -1772,11 +1806,11 @@ elif isosx:
if len(cleartext) > 0:
DB[keyname] = cleartext

if 'MazamaRandomNumber' in DB and 'kindle.account.tokens' in DB:
if len(DB)>4:
break
except:
pass
if 'kindle.account.tokens' in DB:
if len(DB)>4:
# store values used in decryption
print u"Decrypted key file using IDString '{0:s}' and UserName '{1:s}'".format(IDString, GetUserName())
DB['IDString'] = IDString
Expand Down

0 comments on commit dc52618

Please sign in to comment.