mirror of
https://github.com/noDRM/DeDRM_tools.git
synced 2026-03-21 13:28:56 +00:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dc5261870f | ||
|
|
a2ba5005c9 | ||
|
|
24922999dc | ||
|
|
e2170b4260 | ||
|
|
054ddc894b |
@@ -24,7 +24,7 @@
|
|||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>droplet</string>
|
<string>droplet</string>
|
||||||
<key>CFBundleGetInfoString</key>
|
<key>CFBundleGetInfoString</key>
|
||||||
<string>DeDRM AppleScript 6.4.0 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>
|
<key>CFBundleIconFile</key>
|
||||||
<string>DeDRM</string>
|
<string>DeDRM</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>6.4.0</string>
|
<string>6.4.2</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>dplt</string>
|
<string>dplt</string>
|
||||||
<key>LSRequiresCarbon</key>
|
<key>LSRequiresCarbon</key>
|
||||||
|
|||||||
@@ -9,8 +9,6 @@ __docformat__ = 'restructuredtext en'
|
|||||||
# Released under the terms of the GNU General Public Licence, version 3
|
# Released under the terms of the GNU General Public Licence, version 3
|
||||||
# <http://www.gnu.org/licenses/>
|
# <http://www.gnu.org/licenses/>
|
||||||
#
|
#
|
||||||
# Requires Calibre version 0.7.55 or higher.
|
|
||||||
#
|
|
||||||
# All credit given to i♥cabbages and The Dark Reverser for the original standalone scripts.
|
# All credit given to i♥cabbages and The Dark Reverser for the original standalone scripts.
|
||||||
# We had the much easier job of converting them to a calibre plugin.
|
# We had the much easier job of converting them to a calibre plugin.
|
||||||
#
|
#
|
||||||
@@ -49,6 +47,7 @@ __docformat__ = 'restructuredtext en'
|
|||||||
# 6.3.5 - Fixes for Linux, and Kobo 3.19 and more logging
|
# 6.3.5 - Fixes for Linux, and Kobo 3.19 and more logging
|
||||||
# 6.3.6 - Fixes for ADE ePub and PDF introduced in 6.3.5
|
# 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.0 - Updated for new Kindle for PC encryption
|
||||||
|
# 6.4.1 - Fix for some new tags in Topaz ebooks.
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@@ -56,7 +55,7 @@ Decrypt DRMed ebooks.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
PLUGIN_NAME = u"DeDRM"
|
PLUGIN_NAME = u"DeDRM"
|
||||||
PLUGIN_VERSION_TUPLE = (6, 4, 0)
|
PLUGIN_VERSION_TUPLE = (6, 4, 1)
|
||||||
PLUGIN_VERSION = u".".join([unicode(str(x)) for x in PLUGIN_VERSION_TUPLE])
|
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.
|
# Include an html helpfile in the plugin's zipfile with the following name.
|
||||||
RESOURCE_NAME = PLUGIN_NAME + '_Help.htm'
|
RESOURCE_NAME = PLUGIN_NAME + '_Help.htm'
|
||||||
|
|||||||
@@ -164,6 +164,7 @@ class PageParser(object):
|
|||||||
self.id = os.path.basename(filename).replace('.dat','')
|
self.id = os.path.basename(filename).replace('.dat','')
|
||||||
self.dict = dict
|
self.dict = dict
|
||||||
self.debug = debug
|
self.debug = debug
|
||||||
|
self.first_unknown = True
|
||||||
self.flat_xml = flat_xml
|
self.flat_xml = flat_xml
|
||||||
self.tagpath = []
|
self.tagpath = []
|
||||||
self.doc = []
|
self.doc = []
|
||||||
@@ -262,6 +263,9 @@ class PageParser(object):
|
|||||||
'img.w' : (1, 'scalar_number', 0, 0),
|
'img.w' : (1, 'scalar_number', 0, 0),
|
||||||
'img.src' : (1, 'scalar_number', 0, 0),
|
'img.src' : (1, 'scalar_number', 0, 0),
|
||||||
'img.color_src' : (1, 'scalar_number', 0, 0),
|
'img.color_src' : (1, 'scalar_number', 0, 0),
|
||||||
|
'img.gridSize' : (1, 'scalar_number', 0, 0),
|
||||||
|
'img.gridBottomCenter' : (1, 'scalar_number', 0, 0),
|
||||||
|
'img.gridTopCenter' : (1, 'scalar_number', 0, 0),
|
||||||
'img.gridBeginCenter' : (1, 'scalar_number', 0, 0),
|
'img.gridBeginCenter' : (1, 'scalar_number', 0, 0),
|
||||||
'img.gridEndCenter' : (1, 'scalar_number', 0, 0),
|
'img.gridEndCenter' : (1, 'scalar_number', 0, 0),
|
||||||
'img.image_type' : (1, 'scalar_number', 0, 0),
|
'img.image_type' : (1, 'scalar_number', 0, 0),
|
||||||
@@ -313,11 +317,16 @@ class PageParser(object):
|
|||||||
'span.gridBeginCenter' : (1, 'scalar_number', 0, 0),
|
'span.gridBeginCenter' : (1, 'scalar_number', 0, 0),
|
||||||
'span.gridEndCenter' : (1, 'scalar_number', 0, 0),
|
'span.gridEndCenter' : (1, 'scalar_number', 0, 0),
|
||||||
|
|
||||||
'extratokens' : (1, 'snippets', 1, 0),
|
'extratokens' : (1, 'snippets', 1, 0),
|
||||||
'extratokens.class' : (1, 'scalar_text', 0, 0),
|
'extratokens.class' : (1, 'scalar_text', 0, 0),
|
||||||
'extratokens.type' : (1, 'scalar_text', 0, 0),
|
'extratokens.type' : (1, 'scalar_text', 0, 0),
|
||||||
'extratokens.firstGlyph' : (1, 'scalar_number', 0, 0),
|
'extratokens.firstGlyph' : (1, 'scalar_number', 0, 0),
|
||||||
'extratokens.lastGlyph' : (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.h' : (1, 'number', 0, 0),
|
||||||
'glyph.w' : (1, 'number', 0, 0),
|
'glyph.w' : (1, 'number', 0, 0),
|
||||||
@@ -506,8 +515,9 @@ class PageParser(object):
|
|||||||
# or an out of sync condition
|
# or an out of sync condition
|
||||||
else:
|
else:
|
||||||
result = []
|
result = []
|
||||||
if (self.debug):
|
if (self.debug or self.first_unknown):
|
||||||
print 'Unknown Token:', token
|
print 'Unknown Token:', token
|
||||||
|
self.first_unknown = False
|
||||||
self.tag_pop()
|
self.tag_pop()
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|||||||
@@ -385,7 +385,7 @@ def generateBook(bookDir, raw, fixedimage):
|
|||||||
# print "first normal text page is", spage
|
# print "first normal text page is", spage
|
||||||
|
|
||||||
# get page height and width from first text page for use in stylesheet scaling
|
# get page height and width from first text page for use in stylesheet scaling
|
||||||
pname = 'page%04d.dat' % (pnum + 1)
|
pname = 'page%04d.dat' % (pnum - 1)
|
||||||
fname = os.path.join(pageDir,pname)
|
fname = os.path.join(pageDir,pname)
|
||||||
flat_xml = convert2xml.fromData(dict, fname)
|
flat_xml = convert2xml.fromData(dict, fname)
|
||||||
|
|
||||||
|
|||||||
@@ -22,8 +22,10 @@
|
|||||||
# 6.3.5 - Version bump to match plugin
|
# 6.3.5 - Version bump to match plugin
|
||||||
# 6.3.6 - Version bump to match plugin
|
# 6.3.6 - Version bump to match plugin
|
||||||
# 6.4.0 - Fix for Kindle for PC encryption change
|
# 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.0'
|
__version__ = '6.4.2'
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import os, os.path
|
import os, os.path
|
||||||
|
|||||||
@@ -9,8 +9,6 @@ __docformat__ = 'restructuredtext en'
|
|||||||
# Released under the terms of the GNU General Public Licence, version 3
|
# Released under the terms of the GNU General Public Licence, version 3
|
||||||
# <http://www.gnu.org/licenses/>
|
# <http://www.gnu.org/licenses/>
|
||||||
#
|
#
|
||||||
# Requires Calibre version 0.7.55 or higher.
|
|
||||||
#
|
|
||||||
# All credit given to i♥cabbages and The Dark Reverser for the original standalone scripts.
|
# All credit given to i♥cabbages and The Dark Reverser for the original standalone scripts.
|
||||||
# We had the much easier job of converting them to a calibre plugin.
|
# We had the much easier job of converting them to a calibre plugin.
|
||||||
#
|
#
|
||||||
@@ -49,6 +47,7 @@ __docformat__ = 'restructuredtext en'
|
|||||||
# 6.3.5 - Fixes for Linux, and Kobo 3.19 and more logging
|
# 6.3.5 - Fixes for Linux, and Kobo 3.19 and more logging
|
||||||
# 6.3.6 - Fixes for ADE ePub and PDF introduced in 6.3.5
|
# 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.0 - Updated for new Kindle for PC encryption
|
||||||
|
# 6.4.1 - Fix for some new tags in Topaz ebooks.
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@@ -56,7 +55,7 @@ Decrypt DRMed ebooks.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
PLUGIN_NAME = u"DeDRM"
|
PLUGIN_NAME = u"DeDRM"
|
||||||
PLUGIN_VERSION_TUPLE = (6, 4, 0)
|
PLUGIN_VERSION_TUPLE = (6, 4, 1)
|
||||||
PLUGIN_VERSION = u".".join([unicode(str(x)) for x in PLUGIN_VERSION_TUPLE])
|
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.
|
# Include an html helpfile in the plugin's zipfile with the following name.
|
||||||
RESOURCE_NAME = PLUGIN_NAME + '_Help.htm'
|
RESOURCE_NAME = PLUGIN_NAME + '_Help.htm'
|
||||||
|
|||||||
@@ -164,6 +164,7 @@ class PageParser(object):
|
|||||||
self.id = os.path.basename(filename).replace('.dat','')
|
self.id = os.path.basename(filename).replace('.dat','')
|
||||||
self.dict = dict
|
self.dict = dict
|
||||||
self.debug = debug
|
self.debug = debug
|
||||||
|
self.first_unknown = True
|
||||||
self.flat_xml = flat_xml
|
self.flat_xml = flat_xml
|
||||||
self.tagpath = []
|
self.tagpath = []
|
||||||
self.doc = []
|
self.doc = []
|
||||||
@@ -262,6 +263,9 @@ class PageParser(object):
|
|||||||
'img.w' : (1, 'scalar_number', 0, 0),
|
'img.w' : (1, 'scalar_number', 0, 0),
|
||||||
'img.src' : (1, 'scalar_number', 0, 0),
|
'img.src' : (1, 'scalar_number', 0, 0),
|
||||||
'img.color_src' : (1, 'scalar_number', 0, 0),
|
'img.color_src' : (1, 'scalar_number', 0, 0),
|
||||||
|
'img.gridSize' : (1, 'scalar_number', 0, 0),
|
||||||
|
'img.gridBottomCenter' : (1, 'scalar_number', 0, 0),
|
||||||
|
'img.gridTopCenter' : (1, 'scalar_number', 0, 0),
|
||||||
'img.gridBeginCenter' : (1, 'scalar_number', 0, 0),
|
'img.gridBeginCenter' : (1, 'scalar_number', 0, 0),
|
||||||
'img.gridEndCenter' : (1, 'scalar_number', 0, 0),
|
'img.gridEndCenter' : (1, 'scalar_number', 0, 0),
|
||||||
'img.image_type' : (1, 'scalar_number', 0, 0),
|
'img.image_type' : (1, 'scalar_number', 0, 0),
|
||||||
@@ -313,11 +317,16 @@ class PageParser(object):
|
|||||||
'span.gridBeginCenter' : (1, 'scalar_number', 0, 0),
|
'span.gridBeginCenter' : (1, 'scalar_number', 0, 0),
|
||||||
'span.gridEndCenter' : (1, 'scalar_number', 0, 0),
|
'span.gridEndCenter' : (1, 'scalar_number', 0, 0),
|
||||||
|
|
||||||
'extratokens' : (1, 'snippets', 1, 0),
|
'extratokens' : (1, 'snippets', 1, 0),
|
||||||
'extratokens.class' : (1, 'scalar_text', 0, 0),
|
'extratokens.class' : (1, 'scalar_text', 0, 0),
|
||||||
'extratokens.type' : (1, 'scalar_text', 0, 0),
|
'extratokens.type' : (1, 'scalar_text', 0, 0),
|
||||||
'extratokens.firstGlyph' : (1, 'scalar_number', 0, 0),
|
'extratokens.firstGlyph' : (1, 'scalar_number', 0, 0),
|
||||||
'extratokens.lastGlyph' : (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.h' : (1, 'number', 0, 0),
|
||||||
'glyph.w' : (1, 'number', 0, 0),
|
'glyph.w' : (1, 'number', 0, 0),
|
||||||
@@ -506,8 +515,9 @@ class PageParser(object):
|
|||||||
# or an out of sync condition
|
# or an out of sync condition
|
||||||
else:
|
else:
|
||||||
result = []
|
result = []
|
||||||
if (self.debug):
|
if (self.debug or self.first_unknown):
|
||||||
print 'Unknown Token:', token
|
print 'Unknown Token:', token
|
||||||
|
self.first_unknown = False
|
||||||
self.tag_pop()
|
self.tag_pop()
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|||||||
@@ -385,7 +385,7 @@ def generateBook(bookDir, raw, fixedimage):
|
|||||||
# print "first normal text page is", spage
|
# print "first normal text page is", spage
|
||||||
|
|
||||||
# get page height and width from first text page for use in stylesheet scaling
|
# get page height and width from first text page for use in stylesheet scaling
|
||||||
pname = 'page%04d.dat' % (pnum + 1)
|
pname = 'page%04d.dat' % (pnum - 1)
|
||||||
fname = os.path.join(pageDir,pname)
|
fname = os.path.join(pageDir,pname)
|
||||||
flat_xml = convert2xml.fromData(dict, fname)
|
flat_xml = convert2xml.fromData(dict, fname)
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -9,8 +9,6 @@ __docformat__ = 'restructuredtext en'
|
|||||||
# Released under the terms of the GNU General Public Licence, version 3
|
# Released under the terms of the GNU General Public Licence, version 3
|
||||||
# <http://www.gnu.org/licenses/>
|
# <http://www.gnu.org/licenses/>
|
||||||
#
|
#
|
||||||
# Requires Calibre version 0.7.55 or higher.
|
|
||||||
#
|
|
||||||
# All credit given to i♥cabbages and The Dark Reverser for the original standalone scripts.
|
# All credit given to i♥cabbages and The Dark Reverser for the original standalone scripts.
|
||||||
# We had the much easier job of converting them to a calibre plugin.
|
# We had the much easier job of converting them to a calibre plugin.
|
||||||
#
|
#
|
||||||
@@ -49,6 +47,8 @@ __docformat__ = 'restructuredtext en'
|
|||||||
# 6.3.5 - Fixes for Linux, and Kobo 3.19 and more logging
|
# 6.3.5 - Fixes for Linux, and Kobo 3.19 and more logging
|
||||||
# 6.3.6 - Fixes for ADE ePub and PDF introduced in 6.3.5
|
# 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.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
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@@ -56,7 +56,7 @@ Decrypt DRMed ebooks.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
PLUGIN_NAME = u"DeDRM"
|
PLUGIN_NAME = u"DeDRM"
|
||||||
PLUGIN_VERSION_TUPLE = (6, 4, 0)
|
PLUGIN_VERSION_TUPLE = (6, 4, 2)
|
||||||
PLUGIN_VERSION = u".".join([unicode(str(x)) for x in PLUGIN_VERSION_TUPLE])
|
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.
|
# Include an html helpfile in the plugin's zipfile with the following name.
|
||||||
RESOURCE_NAME = PLUGIN_NAME + '_Help.htm'
|
RESOURCE_NAME = PLUGIN_NAME + '_Help.htm'
|
||||||
|
|||||||
@@ -164,6 +164,7 @@ class PageParser(object):
|
|||||||
self.id = os.path.basename(filename).replace('.dat','')
|
self.id = os.path.basename(filename).replace('.dat','')
|
||||||
self.dict = dict
|
self.dict = dict
|
||||||
self.debug = debug
|
self.debug = debug
|
||||||
|
self.first_unknown = True
|
||||||
self.flat_xml = flat_xml
|
self.flat_xml = flat_xml
|
||||||
self.tagpath = []
|
self.tagpath = []
|
||||||
self.doc = []
|
self.doc = []
|
||||||
@@ -262,6 +263,9 @@ class PageParser(object):
|
|||||||
'img.w' : (1, 'scalar_number', 0, 0),
|
'img.w' : (1, 'scalar_number', 0, 0),
|
||||||
'img.src' : (1, 'scalar_number', 0, 0),
|
'img.src' : (1, 'scalar_number', 0, 0),
|
||||||
'img.color_src' : (1, 'scalar_number', 0, 0),
|
'img.color_src' : (1, 'scalar_number', 0, 0),
|
||||||
|
'img.gridSize' : (1, 'scalar_number', 0, 0),
|
||||||
|
'img.gridBottomCenter' : (1, 'scalar_number', 0, 0),
|
||||||
|
'img.gridTopCenter' : (1, 'scalar_number', 0, 0),
|
||||||
'img.gridBeginCenter' : (1, 'scalar_number', 0, 0),
|
'img.gridBeginCenter' : (1, 'scalar_number', 0, 0),
|
||||||
'img.gridEndCenter' : (1, 'scalar_number', 0, 0),
|
'img.gridEndCenter' : (1, 'scalar_number', 0, 0),
|
||||||
'img.image_type' : (1, 'scalar_number', 0, 0),
|
'img.image_type' : (1, 'scalar_number', 0, 0),
|
||||||
@@ -313,11 +317,16 @@ class PageParser(object):
|
|||||||
'span.gridBeginCenter' : (1, 'scalar_number', 0, 0),
|
'span.gridBeginCenter' : (1, 'scalar_number', 0, 0),
|
||||||
'span.gridEndCenter' : (1, 'scalar_number', 0, 0),
|
'span.gridEndCenter' : (1, 'scalar_number', 0, 0),
|
||||||
|
|
||||||
'extratokens' : (1, 'snippets', 1, 0),
|
'extratokens' : (1, 'snippets', 1, 0),
|
||||||
'extratokens.class' : (1, 'scalar_text', 0, 0),
|
'extratokens.class' : (1, 'scalar_text', 0, 0),
|
||||||
'extratokens.type' : (1, 'scalar_text', 0, 0),
|
'extratokens.type' : (1, 'scalar_text', 0, 0),
|
||||||
'extratokens.firstGlyph' : (1, 'scalar_number', 0, 0),
|
'extratokens.firstGlyph' : (1, 'scalar_number', 0, 0),
|
||||||
'extratokens.lastGlyph' : (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.h' : (1, 'number', 0, 0),
|
||||||
'glyph.w' : (1, 'number', 0, 0),
|
'glyph.w' : (1, 'number', 0, 0),
|
||||||
@@ -506,8 +515,9 @@ class PageParser(object):
|
|||||||
# or an out of sync condition
|
# or an out of sync condition
|
||||||
else:
|
else:
|
||||||
result = []
|
result = []
|
||||||
if (self.debug):
|
if (self.debug or self.first_unknown):
|
||||||
print 'Unknown Token:', token
|
print 'Unknown Token:', token
|
||||||
|
self.first_unknown = False
|
||||||
self.tag_pop()
|
self.tag_pop()
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|||||||
@@ -385,7 +385,7 @@ def generateBook(bookDir, raw, fixedimage):
|
|||||||
# print "first normal text page is", spage
|
# print "first normal text page is", spage
|
||||||
|
|
||||||
# get page height and width from first text page for use in stylesheet scaling
|
# get page height and width from first text page for use in stylesheet scaling
|
||||||
pname = 'page%04d.dat' % (pnum + 1)
|
pname = 'page%04d.dat' % (pnum - 1)
|
||||||
fname = os.path.join(pageDir,pname)
|
fname = os.path.join(pageDir,pname)
|
||||||
flat_xml = convert2xml.fromData(dict, fname)
|
flat_xml = convert2xml.fromData(dict, fname)
|
||||||
|
|
||||||
|
|||||||
@@ -993,7 +993,22 @@ if iswindows:
|
|||||||
# determine type of kindle info provided and return a
|
# determine type of kindle info provided and return a
|
||||||
# database of keynames and values
|
# database of keynames and values
|
||||||
def getDBfromFile(kInfoFile):
|
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 = {}
|
DB = {}
|
||||||
with open(kInfoFile, 'rb') as infoReader:
|
with open(kInfoFile, 'rb') as infoReader:
|
||||||
hdr = infoReader.read(1)
|
hdr = infoReader.read(1)
|
||||||
@@ -1134,6 +1149,8 @@ if iswindows:
|
|||||||
if encodeHash(name,testMap8) == keyhash:
|
if encodeHash(name,testMap8) == keyhash:
|
||||||
keyname = name
|
keyname = name
|
||||||
break
|
break
|
||||||
|
if keyname == "unknown":
|
||||||
|
keyname = keyhash
|
||||||
|
|
||||||
# the testMap8 encoded contents data has had a length
|
# the testMap8 encoded contents data has had a length
|
||||||
# of chars (always odd) cut off of the front and moved
|
# of chars (always odd) cut off of the front and moved
|
||||||
@@ -1158,14 +1175,17 @@ if iswindows:
|
|||||||
# decode using new testMap8 to get the original CryptProtect Data
|
# decode using new testMap8 to get the original CryptProtect Data
|
||||||
encryptedValue = decode(encdata,testMap8)
|
encryptedValue = decode(encdata,testMap8)
|
||||||
cleartext = CryptUnprotectData(encryptedValue, entropy, 1)
|
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
|
# store values used in decryption
|
||||||
DB['IDString'] = GetIDString()
|
DB['IDString'] = GetIDString()
|
||||||
DB['UserName'] = GetUserName()
|
DB['UserName'] = GetUserName()
|
||||||
print u"Decrypted key file using IDString '{0:s}' and UserName '{1:s}'".format(GetIDString(), GetUserName().encode('hex'))
|
print u"Decrypted key file using IDString '{0:s}' and UserName '{1:s}'".format(GetIDString(), GetUserName().encode('hex'))
|
||||||
else:
|
else:
|
||||||
|
print u"Couldn't decrypt file."
|
||||||
DB = {}
|
DB = {}
|
||||||
return DB
|
return DB
|
||||||
elif isosx:
|
elif isosx:
|
||||||
@@ -1577,7 +1597,21 @@ elif isosx:
|
|||||||
# determine type of kindle info provided and return a
|
# determine type of kindle info provided and return a
|
||||||
# database of keynames and values
|
# database of keynames and values
|
||||||
def getDBfromFile(kInfoFile):
|
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:
|
with open(kInfoFile, 'rb') as infoReader:
|
||||||
filehdr = infoReader.read(1)
|
filehdr = infoReader.read(1)
|
||||||
filedata = infoReader.read()
|
filedata = infoReader.read()
|
||||||
@@ -1683,7 +1717,7 @@ elif isosx:
|
|||||||
if len(cleartext) > 0:
|
if len(cleartext) > 0:
|
||||||
DB[keyname] = cleartext
|
DB[keyname] = cleartext
|
||||||
|
|
||||||
if 'MazamaRandomNumber' in DB and 'kindle.account.tokens' in DB:
|
if len(DB)>4:
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
# the latest .kinf2011 version for K4M 1.9.1
|
# the latest .kinf2011 version for K4M 1.9.1
|
||||||
@@ -1772,11 +1806,11 @@ elif isosx:
|
|||||||
if len(cleartext) > 0:
|
if len(cleartext) > 0:
|
||||||
DB[keyname] = cleartext
|
DB[keyname] = cleartext
|
||||||
|
|
||||||
if 'MazamaRandomNumber' in DB and 'kindle.account.tokens' in DB:
|
if len(DB)>4:
|
||||||
break
|
break
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
if 'kindle.account.tokens' in DB:
|
if len(DB)>4:
|
||||||
# store values used in decryption
|
# store values used in decryption
|
||||||
print u"Decrypted key file using IDString '{0:s}' and UserName '{1:s}'".format(IDString, GetUserName())
|
print u"Decrypted key file using IDString '{0:s}' and UserName '{1:s}'".format(IDString, GetUserName())
|
||||||
DB['IDString'] = IDString
|
DB['IDString'] = IDString
|
||||||
|
|||||||
Reference in New Issue
Block a user