From 5f0671db7fa55ac77caac88b77c0afd4d78d0f15 Mon Sep 17 00:00:00 2001 From: Apprentice Alf Date: Tue, 26 Oct 2010 18:18:46 +0100 Subject: [PATCH] tools v2.1 combined kindle/mobi plugin --- Calibre_Plugins/K4PCDeDRM_plugin.zip | Bin 7533 -> 0 bytes .../K4PCDeDRM_plugin/K4PCDeDRM_plugin.py | 682 --------- Calibre_Plugins/MobiDeDRM_plugin.zip | Bin 4597 -> 0 bytes Calibre_Plugins/README-K4MobiDeDRM-plugin.txt | 23 + Calibre_Plugins/README-K4PCDeDRM-plugin.txt | 12 - .../README-eReaderPDB2PML-plugin.txt | 21 + Calibre_Plugins/README_MobiDeDRM_plugin.txt | 13 - Calibre_Plugins/eReaderPDB2PML_plugin.zip | Bin 0 -> 697329 bytes .../eReaderPDB2PML-README.txt | 21 + .../eReaderPDB2PML_plugin.py | 148 ++ .../eReaderPDB2PML_plugin}/erdr2pml.py | 0 .../osx/psyco/.svn/all-wcprops | 47 + .../osx/psyco/.svn/dir-prop-base | 7 + .../osx/psyco/.svn/entries | 266 ++++ .../psyco/.svn/prop-base/__init__.py.svn-base | 9 + .../psyco/.svn/prop-base/classes.py.svn-base | 9 + .../osx/psyco/.svn/prop-base/core.py.svn-base | 9 + .../.svn/prop-base/kdictproxy.py.svn-base | 9 + .../psyco/.svn/prop-base/logger.py.svn-base | 9 + .../psyco/.svn/prop-base/profiler.py.svn-base | 9 + .../psyco/.svn/prop-base/support.py.svn-base | 9 + .../psyco/.svn/text-base/__init__.py.svn-base | 54 + .../psyco/.svn/text-base/classes.py.svn-base | 42 + .../osx/psyco/.svn/text-base/core.py.svn-base | 231 +++ .../.svn/text-base/kdictproxy.py.svn-base | 133 ++ .../psyco/.svn/text-base/logger.py.svn-base | 96 ++ .../psyco/.svn/text-base/profiler.py.svn-base | 379 +++++ .../psyco/.svn/text-base/support.py.svn-base | 191 +++ .../osx/psyco/__init__.py | 54 + .../osx/psyco/classes.py | 42 + .../eReaderPDB2PML_plugin/osx/psyco/core.py | 231 +++ .../osx/psyco/kdictproxy.py | 133 ++ .../eReaderPDB2PML_plugin/osx/psyco/logger.py | 96 ++ .../osx/psyco/profiler.py | 379 +++++ .../osx/psyco/support.py | 191 +++ Calibre_Plugins/k4mobidedrm_plugin.zip | Bin 0 -> 15485 bytes .../k4mobidedrm_plugin/k4mobidedrm_plugin.py | 490 ++++++ .../k4mobidedrm_plugin/k4mutils.py | 319 ++++ .../k4mobidedrm_plugin/k4pcutils.py | 107 ++ .../k4mobidedrm_plugin}/mobidedrm.py | 81 +- Kindle_4_PC_Tools/K4PCDeDRM.pyw | 186 --- .../LZskindle4PCv1_1/EZskindle4PCv1_1_1.cpp | 88 -- .../LZskindle4PCv1_1/EZskindle4PCv1_1_1.exe | Bin 477291 -> 0 bytes .../LZskindle4PCv1_1/LZskindle Read Me.txt | 44 - .../LZskindle4PCv1_1/LZskindle4PCv1_1.cpp | 150 -- .../LZskindle4PCv1_1/LZskindle4PCv1_1.exe | Bin 597187 -> 0 bytes .../Other_Tools/LZskindle4PCv1_1/ReadMe.txt | 27 - .../Other_Tools/README_Other_K4PC_Tools.txt | 9 - .../Other_Tools/skindle-06/Makefile | 23 - .../Other_Tools/skindle-06/README | 85 -- .../Other_Tools/skindle-06/b64.c | 80 - .../Other_Tools/skindle-06/cbuf.c | 85 -- .../Other_Tools/skindle-06/cbuf.h | 32 - .../Other_Tools/skindle-06/libz.a | Bin 81176 -> 0 bytes .../Other_Tools/skindle-06/md5.c | 381 ----- .../Other_Tools/skindle-06/md5.h | 91 -- .../Other_Tools/skindle-06/mobi.c | 365 ----- .../Other_Tools/skindle-06/mobi.h | 147 -- .../Other_Tools/skindle-06/sha1.c | 234 --- .../Other_Tools/skindle-06/sha1.h | 68 - .../Other_Tools/skindle-06/skindle.c | 461 ------ .../Other_Tools/skindle-06/skindle.exe | Bin 62976 -> 0 bytes .../Other_Tools/skindle-06/skinutils.c | 539 ------- .../Other_Tools/skindle-06/skinutils.h | 100 -- .../Other_Tools/skindle-06/tpz.c | 504 ------ .../Other_Tools/skindle-06/tpz.h | 82 - .../Other_Tools/skindle-06/zconf.h | 332 ---- .../Other_Tools/skindle-06/zlib.h | 1357 ----------------- Kindle_4_PC_Tools/README_K4PCDeDRM.txt | 23 - Kindle_4_PC_Tools/lib/k4pcdedrm.py | 682 --------- .../K4MobiDeDRM.pyw} | 84 +- .../README_K4MobiDeDRM.txt | 23 + .../lib/k4mobidedrm.py | 490 ++++++ .../lib/k4mutils.py | 319 ++++ .../lib/k4pcutils.py | 107 ++ .../lib/mobidedrm.py | 81 +- .../lib/scrolltextwidget.py | 0 .../lib/subasyncio.py | 0 .../Kindle_4_Mac_Unswindle}/K4Munswindle.pyw | 0 .../README_K4Munswindle.txt | 23 +- .../gdb_kindle_cmds_r1.txt | 0 .../gdb_kindle_cmds_r2.txt | 0 .../Kindle_4_Mac_Unswindle}/lib/mobidedrm.py | 0 .../lib/scrolltextwidget.py | 0 .../Kindle_4_Mac_Unswindle}/lib/subasyncio.py | 0 .../README-unswindlev7.txt | 5 + .../Kindle_4_PC_Unswindle}/mobidedrm.py | 0 .../Kindle_4_PC_Unswindle/unswindle.pyw | 0 Kindle_Mobi_Tools/PIDCheck.py | 41 - Kindle_Mobi_Tools/REAME_MobiDeDRM.txt | 6 - Kindle_Mobi_Tools/lib/readme.txt | 38 - .../KindlePID.pyw | 0 .../Kindleizer.pyw | 0 ...EADME_Kindle_for_iPad_iPhone_iPodTouch.txt | 0 .../lib/kindlefix.py | 0 .../lib/kindlepid.py | 0 Mobi_Additional_Tools/lib/mobidedrm.py | 325 ++++ .../lib/mobihuff.py | 0 .../lib/prc.py | 0 .../lib/scrolltextwidget.py | 0 .../lib/subasyncio.py | 0 .../Pml2HTML.pyw | 0 .../README_eReaderPDB.txt | 0 .../eReaderPDB2PML.pyw | 0 .../eReaderPDB2PMLZ.pyw | 0 eReader_PDB_Tools/lib/erdr2pml.py | 692 +++++++++ .../lib/ereader2html.py | 0 .../lib/scrolltextwidget.py | 0 .../lib/subasyncio.py | 0 .../lib/xpml2xhtml.py | 0 110 files changed, 5872 insertions(+), 7089 deletions(-) delete mode 100644 Calibre_Plugins/K4PCDeDRM_plugin.zip delete mode 100644 Calibre_Plugins/K4PCDeDRM_plugin/K4PCDeDRM_plugin.py delete mode 100644 Calibre_Plugins/MobiDeDRM_plugin.zip create mode 100644 Calibre_Plugins/README-K4MobiDeDRM-plugin.txt delete mode 100644 Calibre_Plugins/README-K4PCDeDRM-plugin.txt create mode 100644 Calibre_Plugins/README-eReaderPDB2PML-plugin.txt delete mode 100644 Calibre_Plugins/README_MobiDeDRM_plugin.txt create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin.zip create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/eReaderPDB2PML-README.txt create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/eReaderPDB2PML_plugin.py rename {eReader_Tools/lib => Calibre_Plugins/eReaderPDB2PML_plugin}/erdr2pml.py (100%) create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/all-wcprops create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/dir-prop-base create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/entries create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/__init__.py.svn-base create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/classes.py.svn-base create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/core.py.svn-base create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/kdictproxy.py.svn-base create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/logger.py.svn-base create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/profiler.py.svn-base create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/support.py.svn-base create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/__init__.py.svn-base create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/classes.py.svn-base create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/core.py.svn-base create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/kdictproxy.py.svn-base create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/logger.py.svn-base create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/profiler.py.svn-base create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/support.py.svn-base create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/__init__.py create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/classes.py create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/core.py create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/kdictproxy.py create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/logger.py create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/profiler.py create mode 100644 Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/support.py create mode 100644 Calibre_Plugins/k4mobidedrm_plugin.zip create mode 100644 Calibre_Plugins/k4mobidedrm_plugin/k4mobidedrm_plugin.py create mode 100644 Calibre_Plugins/k4mobidedrm_plugin/k4mutils.py create mode 100644 Calibre_Plugins/k4mobidedrm_plugin/k4pcutils.py rename {Kindle_Mobi_Tools/lib => Calibre_Plugins/k4mobidedrm_plugin}/mobidedrm.py (89%) delete mode 100644 Kindle_4_PC_Tools/K4PCDeDRM.pyw delete mode 100644 Kindle_4_PC_Tools/Other_Tools/LZskindle4PCv1_1/EZskindle4PCv1_1_1.cpp delete mode 100644 Kindle_4_PC_Tools/Other_Tools/LZskindle4PCv1_1/EZskindle4PCv1_1_1.exe delete mode 100644 Kindle_4_PC_Tools/Other_Tools/LZskindle4PCv1_1/LZskindle Read Me.txt delete mode 100644 Kindle_4_PC_Tools/Other_Tools/LZskindle4PCv1_1/LZskindle4PCv1_1.cpp delete mode 100644 Kindle_4_PC_Tools/Other_Tools/LZskindle4PCv1_1/LZskindle4PCv1_1.exe delete mode 100644 Kindle_4_PC_Tools/Other_Tools/LZskindle4PCv1_1/ReadMe.txt delete mode 100644 Kindle_4_PC_Tools/Other_Tools/README_Other_K4PC_Tools.txt delete mode 100644 Kindle_4_PC_Tools/Other_Tools/skindle-06/Makefile delete mode 100644 Kindle_4_PC_Tools/Other_Tools/skindle-06/README delete mode 100644 Kindle_4_PC_Tools/Other_Tools/skindle-06/b64.c delete mode 100644 Kindle_4_PC_Tools/Other_Tools/skindle-06/cbuf.c delete mode 100644 Kindle_4_PC_Tools/Other_Tools/skindle-06/cbuf.h delete mode 100644 Kindle_4_PC_Tools/Other_Tools/skindle-06/libz.a delete mode 100644 Kindle_4_PC_Tools/Other_Tools/skindle-06/md5.c delete mode 100644 Kindle_4_PC_Tools/Other_Tools/skindle-06/md5.h delete mode 100644 Kindle_4_PC_Tools/Other_Tools/skindle-06/mobi.c delete mode 100644 Kindle_4_PC_Tools/Other_Tools/skindle-06/mobi.h delete mode 100644 Kindle_4_PC_Tools/Other_Tools/skindle-06/sha1.c delete mode 100644 Kindle_4_PC_Tools/Other_Tools/skindle-06/sha1.h delete mode 100644 Kindle_4_PC_Tools/Other_Tools/skindle-06/skindle.c delete mode 100644 Kindle_4_PC_Tools/Other_Tools/skindle-06/skindle.exe delete mode 100644 Kindle_4_PC_Tools/Other_Tools/skindle-06/skinutils.c delete mode 100644 Kindle_4_PC_Tools/Other_Tools/skindle-06/skinutils.h delete mode 100644 Kindle_4_PC_Tools/Other_Tools/skindle-06/tpz.c delete mode 100644 Kindle_4_PC_Tools/Other_Tools/skindle-06/tpz.h delete mode 100644 Kindle_4_PC_Tools/Other_Tools/skindle-06/zconf.h delete mode 100644 Kindle_4_PC_Tools/Other_Tools/skindle-06/zlib.h delete mode 100644 Kindle_4_PC_Tools/README_K4PCDeDRM.txt delete mode 100644 Kindle_4_PC_Tools/lib/k4pcdedrm.py rename Kindle_Mobi_Tools/{MobiDeDRM.pyw => K4_Mobi_DeDRM_Combined_Tool/K4MobiDeDRM.pyw} (71%) create mode 100644 Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/README_K4MobiDeDRM.txt create mode 100644 Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/lib/k4mobidedrm.py create mode 100644 Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/lib/k4mutils.py create mode 100644 Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/lib/k4pcutils.py rename Calibre_Plugins/MobiDeDRM_plugin/MobiDeDRM_plugin.py => Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/lib/mobidedrm.py (89%) rename {Kindle_4_Mac_Tools => Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool}/lib/scrolltextwidget.py (100%) rename {Kindle_4_Mac_Tools => Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool}/lib/subasyncio.py (100%) rename {Kindle_4_Mac_Tools => Kindle_Mobi_Tools/Kindle_4_Mac_Unswindle}/K4Munswindle.pyw (100%) rename Kindle_4_Mac_Tools/README_K4Mac_Tools.txt => Kindle_Mobi_Tools/Kindle_4_Mac_Unswindle/README_K4Munswindle.txt (70%) rename {Kindle_4_Mac_Tools => Kindle_Mobi_Tools/Kindle_4_Mac_Unswindle}/gdb_kindle_cmds_r1.txt (100%) rename {Kindle_4_Mac_Tools => Kindle_Mobi_Tools/Kindle_4_Mac_Unswindle}/gdb_kindle_cmds_r2.txt (100%) rename {Kindle_4_Mac_Tools => Kindle_Mobi_Tools/Kindle_4_Mac_Unswindle}/lib/mobidedrm.py (100%) rename {Kindle_4_PC_Tools => Kindle_Mobi_Tools/Kindle_4_Mac_Unswindle}/lib/scrolltextwidget.py (100%) rename {Kindle_4_PC_Tools => Kindle_Mobi_Tools/Kindle_4_Mac_Unswindle}/lib/subasyncio.py (100%) create mode 100644 Kindle_Mobi_Tools/Kindle_4_PC_Unswindle/README-unswindlev7.txt rename {Kindle_4_PC_Tools/Other_Tools/unswindle => Kindle_Mobi_Tools/Kindle_4_PC_Unswindle}/mobidedrm.py (100%) rename Kindle_4_PC_Tools/Other_Tools/unswindle/unswindle_v7.pyw => Kindle_Mobi_Tools/Kindle_4_PC_Unswindle/unswindle.pyw (100%) delete mode 100644 Kindle_Mobi_Tools/PIDCheck.py delete mode 100644 Kindle_Mobi_Tools/REAME_MobiDeDRM.txt delete mode 100644 Kindle_Mobi_Tools/lib/readme.txt rename {Kindle_Mobi_Tools => Mobi_Additional_Tools}/KindlePID.pyw (100%) rename {Kindle_Mobi_Tools => Mobi_Additional_Tools}/Kindleizer.pyw (100%) rename {Kindle_Mobi_Tools => Mobi_Additional_Tools}/README_Kindle_for_iPad_iPhone_iPodTouch.txt (100%) rename {Kindle_Mobi_Tools => Mobi_Additional_Tools}/lib/kindlefix.py (100%) rename {Kindle_Mobi_Tools => Mobi_Additional_Tools}/lib/kindlepid.py (100%) create mode 100644 Mobi_Additional_Tools/lib/mobidedrm.py rename {Kindle_Mobi_Tools => Mobi_Additional_Tools}/lib/mobihuff.py (100%) rename {Kindle_Mobi_Tools => Mobi_Additional_Tools}/lib/prc.py (100%) rename {Kindle_Mobi_Tools => Mobi_Additional_Tools}/lib/scrolltextwidget.py (100%) rename {Kindle_Mobi_Tools => Mobi_Additional_Tools}/lib/subasyncio.py (100%) rename {eReader_Tools => eReader_PDB_Tools}/Pml2HTML.pyw (100%) rename {eReader_Tools => eReader_PDB_Tools}/README_eReaderPDB.txt (100%) rename {eReader_Tools => eReader_PDB_Tools}/eReaderPDB2PML.pyw (100%) rename {eReader_Tools => eReader_PDB_Tools}/eReaderPDB2PMLZ.pyw (100%) create mode 100644 eReader_PDB_Tools/lib/erdr2pml.py rename {eReader_Tools => eReader_PDB_Tools}/lib/ereader2html.py (100%) rename {eReader_Tools => eReader_PDB_Tools}/lib/scrolltextwidget.py (100%) rename {eReader_Tools => eReader_PDB_Tools}/lib/subasyncio.py (100%) rename {eReader_Tools => eReader_PDB_Tools}/lib/xpml2xhtml.py (100%) diff --git a/Calibre_Plugins/K4PCDeDRM_plugin.zip b/Calibre_Plugins/K4PCDeDRM_plugin.zip deleted file mode 100644 index ec61348662e661853a146c33e4e8b7cf0cff1e51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7533 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 diff --git a/Calibre_Plugins/K4PCDeDRM_plugin/K4PCDeDRM_plugin.py b/Calibre_Plugins/K4PCDeDRM_plugin/K4PCDeDRM_plugin.py deleted file mode 100644 index 509987e..0000000 --- a/Calibre_Plugins/K4PCDeDRM_plugin/K4PCDeDRM_plugin.py +++ /dev/null @@ -1,682 +0,0 @@ -#!/usr/bin/env python -# -# This is a WINDOWS python script. You need a Python interpreter to run it. -# For example, ActiveState Python, which exists for windows. -# -# It can run standalone to convert K4PC files, or it can be installed as a -# plugin for Calibre (http://calibre-ebook.com/about) so that importing -# K4PC files with DRM is no londer a multi-step process. -# -# ***NOTE*** Calibre and K4PC must be installed on the same windows machine -# for the plugin version to function properly. -# -# To create a Calibre plugin, rename this file so that the filename -# ends in '_plugin.py', put it into a ZIP file and import that ZIP into Calibre -# using its plugin configuration GUI. -# -# Thanks to The Dark Reverser for MobiDeDrm and CMBDTC for cmbdtc_dump from -# which this script steals most unashamedly. -# -# Changelog -# 0.01 - Initial version - Utilizes skindle and CMBDTC method of obtaining -# book specific pids from K4PC books. If Calibre and K4PC are installed -# on the same windows machine, Calibre plugin functionality is once -# again restored. - - -""" - -Comprehensive Mazama Book DRM with Topaz Cryptography V2.0 - ------BEGIN PUBLIC KEY----- -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdBHJ4CNc6DNFCw4MRCw4SWAK6 -M8hYfnNEI0yQmn5Ti+W8biT7EatpauE/5jgQMPBmdNrDr1hbHyHBSP7xeC2qlRWC -B62UCxeu/fpfnvNHDN/wPWWH4jynZ2M6cdcnE5LQ+FfeKqZn7gnG2No1U9h7oOHx -y2/pHuYme7U1TsgSjwIDAQAB ------END PUBLIC KEY----- - -""" - -from __future__ import with_statement - -import csv -import sys -import os -import getopt -import zlib -import binascii -from struct import pack -from struct import unpack -from ctypes import windll, c_char_p, c_wchar_p, c_uint, POINTER, byref, \ - create_unicode_buffer, create_string_buffer, CFUNCTYPE, addressof, \ - string_at, Structure, c_void_p, cast -import _winreg as winreg -import traceback -import hashlib - -__version__ = '0.01' - -global kindleDatabase -MAX_PATH = 255 -kernel32 = windll.kernel32 -advapi32 = windll.advapi32 -crypt32 = windll.crypt32 - - -# -# Various character maps used to decrypt books. Probably supposed to act as obfuscation -# -charMap1 = "n5Pr6St7Uv8Wx9YzAb0Cd1Ef2Gh3Jk4M" -charMap2 = "AaZzB0bYyCc1XxDdW2wEeVv3FfUuG4g-TtHh5SsIiR6rJjQq7KkPpL8lOoMm9Nn_" -charMap3 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" -charMap4 = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789" - - -# -# Exceptions for all the problems that might happen during the script -# -class DrmException(Exception): - pass - - -class DataBlob(Structure): - _fields_ = [('cbData', c_uint), - ('pbData', c_void_p)] -DataBlob_p = POINTER(DataBlob) - - -def GetSystemDirectory(): - GetSystemDirectoryW = kernel32.GetSystemDirectoryW - GetSystemDirectoryW.argtypes = [c_wchar_p, c_uint] - GetSystemDirectoryW.restype = c_uint - def GetSystemDirectory(): - buffer = create_unicode_buffer(MAX_PATH + 1) - GetSystemDirectoryW(buffer, len(buffer)) - return buffer.value - return GetSystemDirectory -GetSystemDirectory = GetSystemDirectory() - - -def GetVolumeSerialNumber(): - GetVolumeInformationW = kernel32.GetVolumeInformationW - GetVolumeInformationW.argtypes = [c_wchar_p, c_wchar_p, c_uint, - POINTER(c_uint), POINTER(c_uint), - POINTER(c_uint), c_wchar_p, c_uint] - GetVolumeInformationW.restype = c_uint - def GetVolumeSerialNumber(path): - vsn = c_uint(0) - GetVolumeInformationW(path, None, 0, byref(vsn), None, None, None, 0) - return vsn.value - return GetVolumeSerialNumber -GetVolumeSerialNumber = GetVolumeSerialNumber() - - -def GetUserName(): - GetUserNameW = advapi32.GetUserNameW - GetUserNameW.argtypes = [c_wchar_p, POINTER(c_uint)] - GetUserNameW.restype = c_uint - def GetUserName(): - buffer = create_unicode_buffer(32) - size = c_uint(len(buffer)) - while not GetUserNameW(buffer, byref(size)): - buffer = create_unicode_buffer(len(buffer) * 2) - size.value = len(buffer) - return buffer.value.encode('utf-16-le')[::2] - return GetUserName -GetUserName = GetUserName() - - -def CryptUnprotectData(): - _CryptUnprotectData = crypt32.CryptUnprotectData - _CryptUnprotectData.argtypes = [DataBlob_p, c_wchar_p, DataBlob_p, - c_void_p, c_void_p, c_uint, DataBlob_p] - _CryptUnprotectData.restype = c_uint - def CryptUnprotectData(indata, entropy): - indatab = create_string_buffer(indata) - indata = DataBlob(len(indata), cast(indatab, c_void_p)) - entropyb = create_string_buffer(entropy) - entropy = DataBlob(len(entropy), cast(entropyb, c_void_p)) - outdata = DataBlob() - if not _CryptUnprotectData(byref(indata), None, byref(entropy), - None, None, 0, byref(outdata)): - raise DrmException("Failed to Unprotect Data") - return string_at(outdata.pbData, outdata.cbData) - return CryptUnprotectData -CryptUnprotectData = CryptUnprotectData() - - -# -# Returns the MD5 digest of "message" -# -def MD5(message): - ctx = hashlib.md5() - ctx.update(message) - return ctx.digest() - - -# -# Returns the MD5 digest of "message" -# -def SHA1(message): - ctx = hashlib.sha1() - ctx.update(message) - return ctx.digest() - - -# -# Locate and open the Kindle.info file. -# -def openKindleInfo(): - regkey = winreg.OpenKey(winreg.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\") - path = winreg.QueryValueEx(regkey, 'Local AppData')[0] - return open(path+'\\Amazon\\Kindle For PC\\{AMAwzsaPaaZAzmZzZQzgZCAkZ3AjA_AY}\\kindle.info','r') - - -# -# Parse the Kindle.info file and return the records as a list of key-values -# -def parseKindleInfo(): - DB = {} - infoReader = openKindleInfo() - infoReader.read(1) - data = infoReader.read() - items = data.split('{') - - for item in items: - splito = item.split(':') - DB[splito[0]] =splito[1] - return DB - - -# -# Find if the original string for a hashed/encoded string is known. If so return the original string othwise return an empty string. (Totally not optimal) -# -def findNameForHash(hash): - names = ["kindle.account.tokens","kindle.cookie.item","eulaVersionAccepted","login_date","kindle.token.item","login","kindle.key.item","kindle.name.info","kindle.device.info", "MazamaRandomNumber"] - result = "" - for name in names: - if hash == encodeHash(name, charMap2): - result = name - break - return name - - -# -# Print all the records from the kindle.info file. -# -def printKindleInfo(): - for record in kindleDatabase: - name = findNameForHash(record) - if name != "" : - print (name) - print ("--------------------------\n") - else : - print ("Unknown Record") - print getKindleInfoValueForHash(record) - print "\n" - - -# -# Get a record from the Kindle.info file for the key "hashedKey" (already hashed and encoded). Return the decoded and decrypted record -# -def getKindleInfoValueForHash(hashedKey): - global kindleDatabase - encryptedValue = decode(kindleDatabase[hashedKey],charMap2) - return CryptUnprotectData(encryptedValue,"") - - -# -# Get a record from the Kindle.info file for the string in "key" (plaintext). Return the decoded and decrypted record -# -def getKindleInfoValueForKey(key): - return getKindleInfoValueForHash(encodeHash(key,charMap2)) - - -# -# 8 bits to six bits encoding from hash to generate PID string -# -def encodePID(hash): - global charMap3 - PID = "" - for position in range (0,8): - PID += charMap3[getSixBitsFromBitField(hash,position)] - return PID - - -# -# Hash the bytes in data and then encode the digest with the characters in map -# -def encodeHash(data,map): - return encode(MD5(data),map) - - -# -# Encode the bytes in data with the characters in map -# -def encode(data, map): - result = "" - for char in data: - value = ord(char) - Q = (value ^ 0x80) // len(map) - R = value % len(map) - result += map[Q] - result += map[R] - return result - - -# -# Decode the string in data with the characters in map. Returns the decoded bytes -# -def decode(data,map): - result = "" - for i in range (0,len(data),2): - high = map.find(data[i]) - low = map.find(data[i+1]) - value = (((high * 0x40) ^ 0x80) & 0xFF) + low - result += pack("B",value) - return result - - -# -# Encryption table used to generate the device PID -# -def generatePidEncryptionTable() : - table = [] - for counter1 in range (0,0x100): - value = counter1 - for counter2 in range (0,8): - if (value & 1 == 0) : - value = value >> 1 - else : - value = value >> 1 - value = value ^ 0xEDB88320 - table.append(value) - return table - - -# -# Seed value used to generate the device PID -# -def generatePidSeed(table,dsn) : - value = 0 - for counter in range (0,4) : - index = (ord(dsn[counter]) ^ value) &0xFF - value = (value >> 8) ^ table[index] - return value - - -# -# Generate the device PID -# -def generateDevicePID(table,dsn,nbRoll): - seed = generatePidSeed(table,dsn) - pidAscii = "" - pid = [(seed >>24) &0xFF,(seed >> 16) &0xff,(seed >> 8) &0xFF,(seed) & 0xFF,(seed>>24) & 0xFF,(seed >> 16) &0xff,(seed >> 8) &0xFF,(seed) & 0xFF] - index = 0 - - for counter in range (0,nbRoll): - pid[index] = pid[index] ^ ord(dsn[counter]) - index = (index+1) %8 - - for counter in range (0,8): - index = ((((pid[counter] >>5) & 3) ^ pid[counter]) & 0x1f) + (pid[counter] >> 7) - pidAscii += charMap4[index] - return pidAscii - - -# -# Returns two bit at offset from a bit field -# -def getTwoBitsFromBitField(bitField,offset): - byteNumber = offset // 4 - bitPosition = 6 - 2*(offset % 4) - - return ord(bitField[byteNumber]) >> bitPosition & 3 - - -# -# Returns the six bits at offset from a bit field -# -def getSixBitsFromBitField(bitField,offset): - offset *= 3 - value = (getTwoBitsFromBitField(bitField,offset) <<4) + (getTwoBitsFromBitField(bitField,offset+1) << 2) +getTwoBitsFromBitField(bitField,offset+2) - return value - - -# -# MobiDeDrm-0.16 Stuff -# -class Unbuffered: - def __init__(self, stream): - self.stream = stream - def write(self, data): - self.stream.write(data) - self.stream.flush() - def __getattr__(self, attr): - return getattr(self.stream, attr) - - -# Implementation of Pukall Cipher 1 -def PC1(key, src, decryption=True): - sum1 = 0; - sum2 = 0; - keyXorVal = 0; - if len(key)!=16: - print "Bad key length!" - return None - wkey = [] - for i in xrange(8): - wkey.append(ord(key[i*2])<<8 | ord(key[i*2+1])) - - dst = "" - for i in xrange(len(src)): - temp1 = 0; - byteXorVal = 0; - for j in xrange(8): - temp1 ^= wkey[j] - sum2 = (sum2+j)*20021 + sum1 - sum1 = (temp1*346)&0xFFFF - sum2 = (sum2+sum1)&0xFFFF - temp1 = (temp1*20021+1)&0xFFFF - byteXorVal ^= temp1 ^ sum2 - curByte = ord(src[i]) - if not decryption: - keyXorVal = curByte * 257; - curByte = ((curByte ^ (byteXorVal >> 8)) ^ byteXorVal) & 0xFF - if decryption: - keyXorVal = curByte * 257; - for j in xrange(8): - wkey[j] ^= keyXorVal; - dst+=chr(curByte) - return dst - - -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 - bitpos += 7 - size -= 1 - if (v & 0x80) != 0 or (bitpos >= 28) or (size == 0): - return result - num = 0 - testflags = flags >> 1 - while testflags: - if testflags & 1: - num += getSizeOfTrailingDataEntry(ptr, size - num) - testflags >>= 1 - # Multibyte data, if present, is included in the encryption, so - # we do not need to check the low bit. - # if flags & 1: - # num += (ord(ptr[size - num - 1]) & 0x3) + 1 - return num - - -# -# This class does all the heavy lifting. -# -class DrmStripper: - def loadSection(self, section): - if (section + 1 == self.num_sections): - endoff = len(self.data_file) - else: - endoff = self.sections[section + 1][0] - off = self.sections[section][0] - return self.data_file[off:endoff] - - def patch(self, off, new): - self.data_file = self.data_file[:off] + new + self.data_file[off+len(new):] - - def patchSection(self, section, new, in_off = 0): - if (section + 1 == self.num_sections): - endoff = len(self.data_file) - else: - endoff = self.sections[section + 1][0] - off = self.sections[section][0] - assert off + in_off + len(new) <= endoff - self.patch(off + in_off, new) - - def parseDRM(self, data, count, pid): - pid = pid.ljust(16,'\0') - keyvec1 = "\x72\x38\x33\xB0\xB4\xF2\xE3\xCA\xDF\x09\x01\xD6\xE2\xE0\x3F\x96" - temp_key = PC1(keyvec1, pid, False) - temp_key_sum = sum(map(ord,temp_key)) & 0xff - found_key = None - for i in xrange(count): - verification, size, type, cksum, cookie = unpack('>LLLBxxx32s', data[i*0x30:i*0x30+0x30]) - cookie = PC1(temp_key, cookie) - ver,flags,finalkey,expiry,expiry2 = unpack('>LL16sLL', cookie) - if verification == ver and cksum == temp_key_sum and (flags & 0x1F) == 1: - found_key = finalkey - break - if not found_key: - # Then try the default encoding that doesn't require a PID - temp_key = keyvec1 - temp_key_sum = sum(map(ord,temp_key)) & 0xff - for i in xrange(count): - verification, size, type, cksum, cookie = unpack('>LLLBxxx32s', data[i*0x30:i*0x30+0x30]) - cookie = PC1(temp_key, cookie) - ver,flags,finalkey,expiry,expiry2 = unpack('>LL16sLL', cookie) - if verification == ver and cksum == temp_key_sum: - found_key = finalkey - break - return found_key - - def __init__(self, data_file): - self.data_file = data_file - header = data_file[0:72] - if header[0x3C:0x3C+8] != 'BOOKMOBI': - raise DrmException("invalid file format") - self.num_sections, = unpack('>H', data_file[76:78]) - - self.sections = [] - for i in xrange(self.num_sections): - offset, a1,a2,a3,a4 = unpack('>LBBBB', data_file[78+i*8:78+i*8+8]) - flags, val = a1, a2<<16|a3<<8|a4 - self.sections.append( (offset, flags, val) ) - - sect = self.loadSection(0) - records, = unpack('>H', sect[0x8:0x8+2]) - mobi_length, = unpack('>L',sect[0x14:0x18]) - mobi_version, = unpack('>L',sect[0x68:0x6C]) - extra_data_flags = 0 - print "MOBI header version = %d, length = %d" %(mobi_version, mobi_length) - if (mobi_length >= 0xE4) and (mobi_version >= 5): - extra_data_flags, = unpack('>H', sect[0xF2:0xF4]) - print "Extra Data Flags = %d" %extra_data_flags - - crypto_type, = unpack('>H', sect[0xC:0xC+2]) - if crypto_type == 0: - print "This book is not encrypted." - else: - if crypto_type == 1: - raise DrmException("cannot decode Mobipocket encryption type 1") - if crypto_type != 2: - raise DrmException("unknown encryption type: %d" % crypto_type) - - # determine the EXTH Offset. - exth_off = unpack('>I', sect[20:24])[0] + 16 + self.sections[0][0] - # Grab the entire EXTH block and feed it to the getK4PCPids function. - exth = data_file[exth_off:self.sections[0+1][0]] - pid = getK4PCPids(exth) - - # calculate the keys - drm_ptr, drm_count, drm_size, drm_flags = unpack('>LLLL', sect[0xA8:0xA8+16]) - if drm_count == 0: - raise DrmException("no PIDs found in this file") - found_key = self.parseDRM(sect[drm_ptr:drm_ptr+drm_size], drm_count, pid) - if not found_key: - raise DrmException("no key found. maybe the PID is incorrect") - - # kill the drm keys - self.patchSection(0, "\0" * drm_size, drm_ptr) - # kill the drm pointers - self.patchSection(0, "\xff" * 4 + "\0" * 12, 0xA8) - # clear the crypto type - self.patchSection(0, "\0" * 2, 0xC) - - # decrypt sections - print "\nDecrypting. Please wait . . .", - new_data = self.data_file[:self.sections[1][0]] - for i in xrange(1, records+1): - data = self.loadSection(i) - extra_size = getSizeOfTrailingDataEntries(data, len(data), extra_data_flags) - if i%100 == 0: - print ".", - # print "record %d, extra_size %d" %(i,extra_size) - new_data += PC1(found_key, data[0:len(data) - extra_size]) - if extra_size > 0: - new_data += data[-extra_size:] - #self.patchSection(i, PC1(found_key, data[0:len(data) - extra_size])) - if self.num_sections > records+1: - new_data += self.data_file[self.sections[records+1][0]:] - self.data_file = new_data - print "done!" - print "\nPlease only use your new-found powers for good." - - def getResult(self): - return self.data_file - - -# -# DiapDealer's stuff: Parse the EXTH header records and parse the Kindleinfo -# file to calculate the book pid. -# -def getK4PCPids(exth): - global kindleDatabase - try: - kindleDatabase = parseKindleInfo() - except Exception as message: - print(message) - - if kindleDatabase != None : - - # Get the Mazama Random number - MazamaRandomNumber = getKindleInfoValueForKey("MazamaRandomNumber") - - # Get the HDD serial - encodedSystemVolumeSerialNumber = encodeHash(str(GetVolumeSerialNumber(GetSystemDirectory().split('\\')[0] + '\\')),charMap1) - - # Get the current user name - encodedUsername = encodeHash(GetUserName(),charMap1) - - # concat, hash and encode to calculate the DSN - DSN = encode(SHA1(MazamaRandomNumber+encodedSystemVolumeSerialNumber+encodedUsername),charMap1) - - print("\nDSN: " + DSN) - - - # Compute the device PID (for which I can tell, is used for nothing). - # But hey, stuff being printed out is apparently cool. - table = generatePidEncryptionTable() - devicePID = generateDevicePID(table,DSN,4) - - print("Device PID: " + devicePID) - - # Compute book PID - exth_records = {} - nitems, = unpack('>I', exth[8:12]) - pos = 12 - # Parse the EXTH records, storing data indexed by type - for i in xrange(nitems): - type, size = unpack('>II', exth[pos: pos + 8]) - content = exth[pos + 8: pos + size] - - exth_records[type] = content - pos += size - - # Grab the contents of the type 209 exth record - if exth_records[209] != None: - data = exth_records[209] - else: - raise DrmException("\nNo EXTH record type 209 - Perhaps not a K4PC file?") - - # Parse the 209 data to find the the exth record with the token data. - # The last character of the 209 data points to the record with the token. - # Always 208 from my experience, but I'll leave the logic in case that changes. - for i in xrange(len(data)): - if ord(data[i]) != 0: - if exth_records[ord(data[i])] != None: - token = exth_records[ord(data[i])] - - # Get the kindle account token - kindleAccountToken = getKindleInfoValueForKey("kindle.account.tokens") - - print("Account Token: " + kindleAccountToken) - - pidHash = SHA1(DSN+kindleAccountToken+exth_records[209]+token) - - bookPID = encodePID(pidHash) - - if exth_records[503] != None: - print "Pid for " + exth_records[503] + ": " + bookPID - else: - print ("Book PID: " + bookPID ) - - return bookPID - - raise DrmException("\nCould not access K4PC data - Perhaps K4PC is not installed/configured?") - return null - -if not __name__ == "__main__": - from calibre.customize import FileTypePlugin - - class K4PCDeDRM(FileTypePlugin): - name = 'K4PCDeDRM' # Name of the plugin - description = 'Removes DRM from K4PC files' - supported_platforms = ['windows'] # Platforms this plugin will run on - author = 'DiapDealer' # The author of this plugin - version = (0, 0, 1) # The version number of this plugin - file_types = set(['prc','mobi','azw']) # The file types that this plugin will be applied to - on_import = True # Run this plugin during the import - - def run(self, path_to_ebook): - from calibre.gui2 import is_ok_to_use_qt - from PyQt4.Qt import QMessageBox - data_file = file(path_to_ebook, 'rb').read() - - try: - unlocked_file = DrmStripper(data_file).getResult() - except DrmException: - # ignore the error - pass - else: - of = self.temporary_file('.mobi') - of.write(unlocked_file) - of.close() - return of.name - - if is_ok_to_use_qt(): - d = QMessageBox(QMessageBox.Warning, "K4PCDeDRM Plugin", "Couldn't decode: %s\n\nImporting encrypted version." % path_to_ebook) - d.show() - d.raise_() - d.exec_() - return path_to_ebook - - #def customization_help(self, gui=False): - # return 'Enter PID (separate multiple PIDs with comma)' - -if __name__ == "__main__": - sys.stdout=Unbuffered(sys.stdout) - print ('K4PCDeDrm v%(__version__)s ' - 'provided DiapDealer.' % globals()) - if len(sys.argv)<3: - print "Removes DRM protection from K4PC books" - print "Usage:" - print " %s " % sys.argv[0] - sys.exit(1) - else: - infile = sys.argv[1] - outfile = sys.argv[2] - data_file = file(infile, 'rb').read() - try: - strippedFile = DrmStripper(data_file) - file(outfile, 'wb').write(strippedFile.getResult()) - except DrmException, e: - print "Error: %s" % e - sys.exit(1) - sys.exit(0) \ No newline at end of file diff --git a/Calibre_Plugins/MobiDeDRM_plugin.zip b/Calibre_Plugins/MobiDeDRM_plugin.zip deleted file mode 100644 index dc184a3ad4f06ee73c4052a48faaf6e22935d9e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4597 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 GgZ}}Tino*i diff --git a/Calibre_Plugins/README-K4MobiDeDRM-plugin.txt b/Calibre_Plugins/README-K4MobiDeDRM-plugin.txt new file mode 100644 index 0000000..036cfb0 --- /dev/null +++ b/Calibre_Plugins/README-K4MobiDeDRM-plugin.txt @@ -0,0 +1,23 @@ +Plugin for K4PC, K4Mac and Mobi Books + +Will work on Linux (standard DRM Mobi books only), Mac OS X (standard DRM Mobi books and "Kindle for Mac" books, and Windows (standard DRM Mobi books and "Kindle for PC" books. + +This plugin supersedes MobiDeDRM, K4DeDRM, and K4PCDeDRM plugins. If you install this plugin, those plugins can be safely removed. + +This plugin is meant to convert "Kindle for PC", "Kindle for Mac" and "Mobi" ebooks with DRM to unlocked Mobi files. Calibre can then convert them to whatever format you desire. It is meant to function without having to install any dependencies except for Calibre being on your same machine and in the same account as your "Kindle for PC" or "Kindle for Mac" application if you are going to remove the DRM from those types of books. + +Installation: +Go to Calibre's Preferences page... click on the Plugins button. Use the file dialog button to select the plugin's zip file (k4mobidedrm_vXX_plugin.zip) and click the 'Add' button. You're done. + +Configuration: +Highlight the plugin (K4MobiDeDRM under the "File type plugins" category) and click the "Customize Plugin" button on Calibre's Preferences->Plugins page. Enter a comma separated list of your 10 digit PIDs. This is not needed if you only want to decode "Kindle for PC" or "Kindle for Mac" books. + + +Troubleshooting: +If you find that it's not working for you (imported azw's are not converted to mobi format), you can save a lot of time and trouble by trying to add the azw file to Calibre with the command line tools. This will print out a lot of helpful debugging info that can be copied into any online help requests. I'm going to ask you to do it first, anyway, so you might +as well get used to it. ;) + +Open a command prompt (terminal) and change to the directory where the ebook you're trying to import resides. Then type the command "calibredb add your_ebook.azw". Don't type the quotes and obviously change the 'your_ebook.azw' to whatever the filename of your book is. Copy the resulting output and paste it into any online help request you make. + +** Note: the Mac version of Calibre doesn't install the command line tools by default. If you go to the 'Preferences' page and click on the miscellaneous button, you'll see the option to install the command line tools. + diff --git a/Calibre_Plugins/README-K4PCDeDRM-plugin.txt b/Calibre_Plugins/README-K4PCDeDRM-plugin.txt deleted file mode 100644 index 229dbd4..0000000 --- a/Calibre_Plugins/README-K4PCDeDRM-plugin.txt +++ /dev/null @@ -1,12 +0,0 @@ -K4PCDeDRM - K4PCDeDRM_X.XX_plugin.zip -Requires Calibre version 0.6.44 or higher. - -This work is based on the work of cmbtc, skindle, mobidedrm. and skindleAll I had the much easier job of converting them to a Calibre plugin. - -This plugin is meant to Kindle for PC azw ebooks that are protected -with Amazon's Mobi based encryption. It is meant to function without having to install any dependencies... other than having both Calibre installed and Kindle for PC on the same machine, of course. - -Installation: - -Go to Calibre's Preferences page... click on the Plugins button. Use the file dialog button to select the plugin's zip file (K4PCDeDRM_X.XX_plugin.zip) and click the 'Add' button. you're done. - diff --git a/Calibre_Plugins/README-eReaderPDB2PML-plugin.txt b/Calibre_Plugins/README-eReaderPDB2PML-plugin.txt new file mode 100644 index 0000000..75dfda5 --- /dev/null +++ b/Calibre_Plugins/README-eReaderPDB2PML-plugin.txt @@ -0,0 +1,21 @@ +eReader PDB2PML - eReaderPDB2PML_vXX_plugin.zip + +All credit given to The Dark Reverser for the original standalone script. I had the much easier job of converting it to a Calibre plugin. + +This plugin is meant to convert secure Ereader files (PDB) to unsecured PMLZ files. Calibre can then convert it to whatever format you desire. It is meant to function without having to install any dependencies... other than having Calibre installed, of course. I've included the psyco libraries (compiled for each platform) for speed. If your system can use them, great! Otherwise, they won't be used and things will just work slower. + +Installation: +Go to Calibre's Preferences page... click on the Plugins button. Use the file dialog button to select the plugin's zip file (eReaderPDB2PML_vXX_plugin.zip) and click the 'Add' button. You're done. + +Configuration: +Highlight the plugin (eReader PDB 2 PML under the "File type plugins" category) and click the "Customize Plugin" button on Calibre's Preferences->Plugins page. Enter your name and last 8 digits of the credit card number separated by a comma: Your Name,12341234 + +If you've purchased books with more than one credit card, separate the info with a colon: Your Name,12341234:Other Name,23452345 (NOTE: Do NOT put quotes around your name like you do with the original script!!) + +Troubleshooting: +If you find that it's not working for you (imported pdb's are not converted to pmlz format), you can save a lot of time and trouble by trying to add the pdb to Calibre with the command line tools. This will print out a lot of helpful debugging info that can be copied into any online help requests. I'm going to ask you to do it first, anyway, so you might +as well get used to it. ;) + +Open a command prompt (terminal) and change to the directory where the ebook you're trying to import resides. Then type the command "calibredb add your_ebook.pdb". Don't type the quotes and obviously change the 'your_ebook.pdb' to whatever the filename of your book is. Copy the resulting output and paste it into any online help request you make. + +** Note: the Mac version of Calibre doesn't install the command line tools by default. If you go to the 'Preferences' page and click on the miscellaneous button, you'll see the option to install the command line tools. diff --git a/Calibre_Plugins/README_MobiDeDRM_plugin.txt b/Calibre_Plugins/README_MobiDeDRM_plugin.txt deleted file mode 100644 index eaef29e..0000000 --- a/Calibre_Plugins/README_MobiDeDRM_plugin.txt +++ /dev/null @@ -1,13 +0,0 @@ -MobiDeDRM - MobiDeDRM_X.XX_plugin.zip -Requires Calibre version 0.6.44 or higher. - -This work is based on the current mobidedrm.py code. - -This plugin is meant to Mobipocket and Kindle ebooks that are protected -with Amazon's Mobi based encryption. It is meant to function without having to install any dependencies... other than having both Calibre installed. You must know the PID orf the device you are using or the book specific PID to use this plugin. - -Installation: - -Go to Calibre's Preferences page... click on the Plugins button. Use the file dialog button to select the plugin's zip file (MobiDeDRM_X.XX_plugin.zip) and click the 'Add' button. - -Then enter your PIDS in the plugin customization window separated by commas (with no spaces). \ No newline at end of file diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin.zip b/Calibre_Plugins/eReaderPDB2PML_plugin.zip new file mode 100644 index 0000000000000000000000000000000000000000..c1d3563694358a991fbc32ba5bc8020602c5ce36 GIT binary patch literal 697329 zcmbq)1yoz#w`L11l;ZC0?k>Syin|nw6>E{=q`13lpm-_nnzpzGcXxLukjd}=-kSB^ z%$v8?%w(;cbMD!DfA`zx+xO<&mE?m8;+yxc{(0fQHxU2V;NKghS7fgo?VUZmICXVU zULgwq=~mUM?^X5iLVfl6%|7C*SO020{LgqVYs3E(kM=*~zqol@x%?YSHyokozeD-> zzo5Kw*n`Nh@ci`)Mr+<(FFAGrS?hUEV{ z!+%!L{r@xZ|AOg1u>U{F{~wtC-!6cGwf=v)rryC9z|-FOlZ)rSs}hdYtt#2~-&C{V z|AK(=9}xb-RS^Zp`9EA0c<}qdyH~v42IAYTX~Ev`n?)8koD_F5m-rw}fhO83QG$=zfR%-L#fLSRg28KlwYEZ=D_H z9%C{0POU%B;VJAQCbLz&rl$+9s7vpsPNPfe<80|I;;-pDiJMOId>38t@7o+V+rDr4 zx~#|0G!ZnTUrPUgeyl#C-OH7wdl?eTqF}H^uvolX zwjc>`mbSAfeDi|lCk<0Rk2DVx)ybWi!5GUy1S2#9yZS` z*6$jA=(AB62eRc1=(8Q-SA+$wP08&ZA>CdzwTuB!S&?5&h}{-o>8m78@ptC6QJ_p9CCG0YO&yVE?jxV`5lN0jc(mfv?A@X*BkIzjh1dn zxd~uB6Gwcpo*gr!nF1rYeAr<%fqg&PlQdX2-+5$-{`~gPfl9CJ)Ux$`K&p5CVz~E- zk=YYdwbORvk++lfTn6(U0%gZrWQN>Bvk)C5K?5X*feHZt>ES>Dx@&HFW&OdrWM!M0 zjUR6G^QZBc7wjyLQ9R1Avy6f0=t7cECq`0U}odhqC3N?%(ILRpx#xh{{>q1X8 zVY&k=gj8JXtSO_ch-TCU46Q682M$wQ;}C}#=A8Ea9DRFAUBy;g4xCWgH=7^cBw>^p z5m%S{;e`9-6p)oIs4XswYv$Q^Yd7cy&eYls0I7~pn4doMM8-(BvnE%SW|6m3PbXp( zRHEna^|CC~SW(M-VtnUVzHMm2Kv;es_I^__k*Xtq?qd6lM|fR64@%ppY{1t!p59d& z0(BDr(@%IM;7|ej5mcvAUJ>BGWl30%UBx^_Vn~z@dceMKYdlxt$Fb3 zf4KhW)W5Rg-BF+I_g$Rr=4|0BfNtl9=X{sl^^())d|^~ljm{*ly*sOh8`!Kk8Hwiz zcXmd~M=Zv>@UeWRB>UITq&R}EI1?`@cS1#)y)^L!@B4Xws$!FVLQ&(rsg>TfsxauF zNe$-94<75)yd;n!e!^E<)!t5Wj($hni()Q-zxf9Jv(tgpqA0eMN;Uy!R({cBy*1Ot z@k#;fDDg-R|9dJh&29#D&ju5cRSnX6X4zxGOowPLQdk$yhLRWId&MWIOsm#EEkVy4 z{9Nw`Xm3D!0kV2{TuO>AfdL9vs$5-O#m(#!iOsc|yyKQPY(HB%Umj zv5F?ubw-G7kkU;YXQ)<%B>lhv?!7(iy~hdyWlB#ux5d$>;ki8 z^1n#;lxF@$Y93N894QkyAs485+9O9m- z9W1Z2x4wqR;#&#z;L)3^Jt`)NJARpwxVAjtM;Q73BW>j{TrE^dLs}_ng{X)szMQyN zA>-L=v_ug{70Bg%@i)+a8(rX-E@~@KVAmP2er(4lG*5o^!6Lxgyfew9anRhlFkUKC z3pM=rGeUQkELcUE4 zVX39go3U{nT|OX{QT1!VAj z?G$0G*=L-2UkvWwI_XaTWK(?xA`If=V4@)ox*xa?ZnBoWrrq!&t@{!)Uc&y46`2=m z_9Mpq6~BeeOo4~J4{<%p^GrVDy#a=$(IW00p6iu4MsK_2NS3g6e{wNddtx~+NeBPV zAm~dQtqwr`oS2u`QP$Mhr#;}%VloOyL88qm8GIClRVx2gn3yixIW0jC z&=4o;K%~11dP5FklA{}*;!l{D08kx;2>nyca z-Z7_lLq!uq!R{{}0q=;cqVw@vFY#&xsEC@hL)dw%HJhXL`^Yr;L*jk3l)dqW1x$-i zw)}>_MOZ2J6Pfu2Mt#All{N%NSt3Ds98%|S7Y-=0zo}W6yi1te5Yo(ybz>;N{!Dg! z6a22YscXM{Om<2pDoeN!JeKHi>!hKKYi$3CVDAVuv8iQE>yy$kcBa!j(`SK3&&BQt z>3&_!*(^~GM?CXs>*#KFYq6iIT7qHAg+hP%?G#Ki>00~>mm}lGbvAYCc9*0*B=Txt zm%)7*mO#+3`_D}J!d6?lS(<7=CszbaG7;I3I4~8?E(>_*LyPK(JPb?+RsaChA*O_(T z%BiWs?5KT2QRzC_iU$jhL@E}J86R^K&57_$7jA!;mQaz_gbh#K)m(qH2H);%k%!lh zI7)_9Mrd=Bm5F<`?43&74+bmn`}cbJToJ3hB;d})d1Y29D>Q?+qn|pMHD@o9pk^Q@ z^B(Razcp_!mr_07{qt@-1vc__BBL&~UeB_7iHTfdr#QV1xnuHHHf0aj>4>lukyLr9 z+Mp@qy}j$Q>FC0A#6}^!fK}lO+3#vwO#%y)I17W28YZLk(WF|(R4#5NtvLJ1O1oJm zs{moOG#kT=;It8^t@b`=dtHM?qtpXwV~y3bNSak*7CpJ$2MeRX6RTi z^kLS#!(n2^C)oZ>_bDjCpsc8!jqMjgRr~jh`GtkddS7`P+px@fs3wo9nvM>i4m4Tw z$48@&ACfeaEG@O1kV563yDS5bv>(%+lhnqsJh?uGm>%rzOu@sqXwTgnf4i!xwfct)hx`wQM47t8(tlBLyXgUA+? zucDj!5ycVKSzyis?=^*-p!>ALl?XzQr{M_v2mqBt!BfVTsQVM=5T7O8CPI%3HhDz# zVeL%>bA&#&6;=f{EOLN0AjaY}pnPwZ>KpYfEzMNkF*P!T)kUvLZaIHxC4!(ws>jZ4 zB_508ufjC-Ep-;QDAtnI-b!o>@S>P+A0|+)&#vHeJ z+A2xEw_jN;eK1?sOYg96VL(45B2%a9L4}qo%1yqN0CPv!*NFIDck>;ki24!n76uHS zr#K!TgiSov0i{pgPEHMV%Tugn0&+0?J`9irVdBM zN&9ln6xNcnbOZHgU0bYvsy>>>>?01n)k&FlZEQ-}oC2TJORpW>2nTGX8I!3q8I!5* z&P@<1_SwVw&z-W<^558+=I`Q5m5b;fqZvZxS^B zqn{Le@95SxWfdY&E4FKS8d}cZQ}qgi@+w0;sCxh%%mujVrN6qP9~oq-@65gghN{+Oll{`W zCRLGp=@)y=kqnBq$~pmmKIG=QqjXq=wM@)qUkDQUrw+PQ4))71fKW$nD7pL3_PKdO=#e|vf3W*lTavdXaCK(m1_Nh2b$+^RU0OcVpF)OqtEgD0U*oE+NtSbon%-+31BY!RzBMgY_kYn8Hr!8 z>F6GP;LN;T6FBi-X=ola0ajgXF_t{DGf>K?ikp7EUMT^Kjy^wSzN}it-ElvVe_Rs0 zqqK#3FKxrr-Jr}%{ z;F5iD!*k+PcSC*!dhnf#0T$U;&+db>A6xtO1&^=(PD8M!U=^ycu*_R$?uU`ghp+Vq zuxzZLnrxOE6A^QT2|LBJA>BZ%-xqFQ8pB|WcGj$EqN!FO#u3wGm=Y3iJ z3+z%vrX_sgGcbQwhBlqTfZDTQ>&D!PZSuY(HeZHZYoP_fiSx1!IH@Z%{ zYv_GzmHXy5l^ftvits*4>eVr~?!Q+M!G3Ru^&@6e zzcAwVnxFi0XZ)emSgcUv1^8*;&dltr#o1SZdxtYU0qf!OD#ARqCBA3L~-NQ&`EZ;2j3U~un zOFO02t+$d&WSdspY}p5W#lC4C;hXV%vGs}mVmI_xw$Dkj+UDUcXCjNGe#;CQ9Reix z@NKcUGfna!eJf#x`6@XE#}T_L;=-SH4)r#*+y$zY4K-#w*SDuEc*{1NlAy_jZ{pVK zG*gBWuSMsN1`k3HEJe~|&%kyC`gX(H1aeQykM08e-KbD9;|lhM_Si`2iR_uk5!v9+ z>TK6Ga^z9+2`1y29P_X7I%3k9(r$-l)XcaC@P`E7J)O)Fx{?=D@9#Lht#+^6ZK7yb zWw1J^Lig2dYc|sfhlXWmRYfNaj!FNC##!um(>TFx{Z&LHF4s&#@}~`5P|+E_hbOtb zHdp0cg9}d>xtE6{4XN9L45BsTM47J=HFd9N1<8!gC8Op<0H*jSJJEt4VULL8`$A8Bspk3v8ZxpB}nSi^kj;=o^n4 zLi^l=ZYWgCf8{)y6wqRils9yA@n#oA`eYL1u_!$sJ5ncd@C;*U4Jz%shwK+{a7Wlw zF&4}4oLu$N51M!*_(pervZd;3{MOXytwkaPabgniY(nZlcwnIuai96E$-tBroS92r zN%5I|4?ihSN7~CLqsA~)b}~Cfam=&SySR2_d%txy^-%8!wVZ9HlK}~R21%-bZzikr zZLXOB@tM?4rja-LLQ1nxm+QGfTO%(MJ8$hsIssN|9W99U&4l5_C7XwI+71)-&hFQ^ zX*w+3yn9X?eY!%L^g}Hff+I$S66DN;^4gGrC`~gG4khG(Uy4UlEy-gVC&kB~#~R;` zdN&w(B5CY(4eA!3WERUbKya=goi#|QGf|MBb{-oj7U}+Mk(ZHa@{{j-SzaTa zG7g8v?IKQY<||BrW&`f_?o1K}S>x=2&{Ge(D-~sYzV4#|{IoAF6Rg(ZFe}U=G+Oh+ zaKiLBSFv7R3Ce7(c%KQ0Ckbh0773pzzvVq!GWW+}r_ z$`x3()^!|=nX#P7JGP{#R7N7p-#C9uCyu>2aIDP%baE1IE&jmZb}Zu7^daEt-uNY* z`K10;>a~L(iSbL4AIFzP5iZ2eUT?-s)<^Y86xHkEK*m7c+&37#sDmB-RGb?b zMen-RQk1UI@=}Jaf8>SXcIlK|ibbH)ocgEK4|!6vdm3iqhB`W~RA}G@8@3)WCB%GU zN`$yc$Z5z8UZ7Qvo4LMAEkn&z7r*|^`iZnIHuK9Ok9Wqw?sGX`Xm>bP8k=|DWaUBY zGIY#u+Z6Y)vq;Qlx0nboiTuG;jvwz~l4yn12-xwqE-A7{>}Y`fny*mp@q9z&7pn%| z(o@tNt#>7winSkKpyBRLulZ4#Kq?D*MF*gH}KX@F3wygCUZ-K}XNsbiVs& z>*(7oYfR*+@RSp(H8#9+mjlc7GM!Dm4b_F|1 zJH(;s)`DaP{tOdlI#1cbCV4h=mS@P?Q>dMem@WaujGwM?OpN??wBwT(Ww{gpncei_5iA&-A=ZSB)0V>Y~S4>;i?MI5 z`Nt=D!@JAc=pVka{N!p~`{ahnONj%bneGk}P&4k53{u`Sk-zQwcJ&%@-cG3-574$w5I;_rlF^?m=p3NvWGLvM<^;jOow=7 z&pgL>TXdlv`lJE5J6PIU-H!sU)WeP#+uENUvVop2;3qO>!HJvaxGy;%vt7XH!4Voj z04kVIAbZhsJ<*|1cuJb2j=4#+TP|VdZeFV9@dW`=?RxnWdH6zNY|?6&9b?i;{lM#N z@`8Ws=eCQJUJkiyqieKlvuiw$oBBZS5dKh>n~b`iy1oF5E%P3;aSF4we5O9qQ1OuU z&`}C&3TtXb${p(*(;N$>c9p)fjU2i9gm^ZA>ASVp~j(`q1d6(A@-rlA;cjWKSS@xK#wK?>wK2+&eX~S7+!8vN5emK=S)jiejDi$mHl~wet zhoKqwAx>+SiIJ5wwLXP?D8)7NQe=l^=kw0-i&~_o9|@7ZH$obnA<}4k^u-e8UZ*SYI%s}18y6r!q^_t0q<{=@-RUIM)$I_ zA9JZlKa_5Vp2z0AUK?PTrd)^-p||~`;40up$LW#dsraIKcCapXuiSQ?>L??gbYh@C zz~{$ME$N@^JSy@muLY|wTC@E`_d1R}r&3D*Iw zwpIwD5E(X_6$Dsz1Qe^4;!3=8!=y!SKt7cutC5d;N>eQ<3s;~RYgvK7j+rU z1usbdI@`XY)ur6(CkB#b4I>{S;}bx}hp*F`9i+`o0Z{o!6U?-gip z<2)0}<;S2A1ld+t=M_efNX`JnZZqAh2B1kKm;SZAWA@qmW3}-ryBRhogoc z4WhzNKrWHY3lGHhV<3fh+b1gHVEnl*1?Mn4CfjRpM_KRgx5AB-1rtYXxe}iO# zUHy27#sP=5$?<92lxhk_?Q+UP}~x~yVY?}g2T@f9jTDl9+(89=2Z9I zpB4CAPOkP4R*+#*qvqT9!=Io(7E-__eVkd~-3$Gpd%1dhU}KCqAJA~KI`JafMjz_I z6EFdtNdud~eN3+e2k+&s^eJ8lh{1N>X4V+C2uIE7A57ss$8BJhe_$-G?gsAV+?ZY@ z;4UxkhX71)pMr<*PtY^1YAl%VSLhG@DA=^=5B*5kw6Sb80jzv3y2~6|YDVi5d#}-{ zb!~J3^2yxy*aUc(U0cE1==~dbTeu$!Z)5k>HUT#V6WP5$cxuKyz{5X3n&EJ9`%dur zKb~dH(J(j}(@k)U`8CFcc^{`w`aS0sVW%-P{UUmm_GS29?hGGh4gGN!`Hv%V50DtV zAN((O2uuwd~;(P=O!wp2+mn*D%2z!1Uq z#`=$*Q>CtQg~7BbO4^%!N3Jcd41y0v<;Co}I@3%M?=%Iuci+;!iNWIA|5-lPrbAmy z-C+&e^F19ocEs^p+tGAXL4rq%ANgn#N^o z>OWTdv6UgXwf%x@=jDo5(Zd-Ljv(XZy!+3Qr!y=3h;T!=5AH%Q27?F0okQJV53M@Xtq~x>E9jOm2-FNe@9PA{Yp9x%4PhXfDzbia7q zd)Rxqa^r;n;Jl2zUf^ji4_!gv6a?~srvO0zzfFz(Gi93#=Lmryd;iPp&%eC7|CPh( z=07M`DE|tvVusAXVUGLUkl~oM4SV0d!s5>#`+0x0To3`Q${{!Ft(lYZ5imTgT?Yx;U?5NJaQ{UrPm0xYX1i0^Zg$a8_)qgs|U;ZS*inhpb0FqAM~_B_QGQ2HreRbaSrL2&J{M8t198~@(?TsKGh1LFs`t|vuu zjQqcdWhs-A@LxVC(XNyUR){v&vawWF34rag6M0@;wvb$x1+sbkc%oT!A@4$2om9OM ziBCFdxfvD4zxEeEA9p>xofI^GE@hR;K2F5M(1(&M=bNH5*)Itu{jN;unYIY`>E5ps zS3b|jlPW3~>8*U@?r}Na@tu)RQsOWvjd~(b*+Y75>_d9R>g}f_Gftu7LIiVcHtS0R zew|bHBeb3J;#1liNk+deqsfxv1W&wF5c8a9N|He1JndY2swKp}*tvMR6K|r5{JJne zOZW*-8_`2u3H?Y%^JUW8UPw=We^pC=Kj~-t%H`PmoevL=;Q~$Al7*LJb`OrFu8IqW z673)p5XwD0as`023ojDAV+f(Su54MwzXCLnxLpVCu0&e&55y>Uq*A1wXPCnPKQIDx zv+T8Oa4vm|>gxAp#NgkoVSYNl$JQ+W7;m(xi|T48Qa^1$FpL-W5uFGsJLf6ZKlB(9Nlva65F7?e@VKExROG1pS z%wOa2vMSfqtk2yD`N^@gv18fc)vs~OCE;h z^cdrp@4?jx1L0Qmio7E!Qd+UiQCDdc)@3Kkd)XEJEG5t>JmrI1f<4@nMKdXPgqD6- z^1&`cTWVYzqA~fqv~N$|e-8z1g`ptlv7-rTr(5F@>Lpgk{TW3H^y zyk&nDiwu`97Rr|Y%Lv?IQeo*Df5$)1p?3?#4l&hK-(MQqc5MBIrv0kVx4`%!P6ryE zT<@j>+vwp4W^*Oo+1wy*7<1}vE}Bvy37}PjM!6ndg`+~{c>;W2WT5g0;0+jhfbd!j z<^6;#=R_bXv|@qfJWTFPM;h=A&CTa)PQ=QYZnxnfo{OQ?K>6_p#%M}(S5Gi0EX=70_8nX;@59F86p2GZtLyE~ z^H%0MxT_j(t(*I_S}c80sYBxo7=ITj638zO7=jr8+S7$Xi*7oyK$MNM!?CJGX5!(# z`-~wOsQ2Rer>PSKJ)vHh>mCF;KYL@^QrACvgeeR|s$Tx`mr5^~k^|OieeX0+%=*h@ z7Vj~vInmYDYamM|n|f_2GSI}&xzwyrn{JaLg2LF6KM|L1{Efha= zDJ)QCfeEeOk)7L;-`^L`NUkujP9vp0)0NmoG(9^T$=ijjJ zut3;r7~(gm7LmdA_*OeO{>+IF@REZlEJiARhwKNs1NdS3b>BUk-$r)Lbg`UAlMhg5 zsfq)0d~O3IrxUu5G{nxD0T6`1x8l~Zy@b2+!?z(T3C7!ndz=(M`M{*whpQ*IC+PHO z4NXBEAAU1{@88NrT`aR~7Z|S{*XGq-hpGQ61vX##{CM%1N}J)@be$M~m9%FU$Sh}O z6?^eg8|2{ZLiiLeMvSLkXK@W;%SET(PNj(_xt`tgZN2%yrfGbwA>kG2di3#G1nKfs z7N#dNJ)MyiVbhx zE{qhC%J4>dI$ZXls?(*8D;@(MpTZ;cJ?Ld@naB?-!)Lyv8@Wmg+nr=*S|$&pJxeB^ z1!VuW#QK!MquaMF2>W5KNA2lsyNTcUyE2A6b4lsxqui$bMaWtQ1iTn+W+OvIT$$!| zZ3vT3-_eLvAoRJk`~7_Kkur9^_$OGrIWeOt%@m0=-pVD^Xg{@r{Ac#JfaWCl$43eC zC~8AE01`XYSmbech{id-No1HRBh;V^nrUh zUW-192FLa>-*Y_L!u$!my!MXZn+3RvXP^?)!jtz7{rSAC)+ollH@~ookJSP6h|j{W*^k)RbrJLCq$DEUYBf$$%#JOJXq8@i5>xY9Mxx;^P=yRZG6E6Zc3@ja7$ z231Y^48aN;z~8_ZP_!C9L@zKUWGKxS4ARDaE^$0QsFi zf)M`{L_|3Tkg_;=adn+(pid(bUvk%QK9YQ%+h%#pwmV|R#1W4;KvrsLIpC(0>K|05 zOiY|+^g#@$x|>1?ucf_7?h(@d6!?PwsrWi1_t#pehfG-e=?W8e)OQ5u1%#kT;f>bd+kr5Cv0HauQ8d@0z zmb+?Zez8%jDxRpg>s|&G+-Jw!6s6fDmS79#zWe?yzTvIXf zFbg0L?2s)B>dNLS_1SbgR@K_}slvg%TE;+oxeUEeI;ycx()vV2QEHvaubjwxP^#pQ z^oRWs$H<02yZ_x{-#xBJ@SmoF9y|nxW0wyK&y7Wq2QVtOXD|>gWhs%7-EonU0QaI+qQ!r?Jo&9`9Py3)~_BMyelcCa%Ewzc)gh zjOpG^EWgp^CbfkI3mkLnNP&;2c5eu3trq5RF_jho6Jpn)F9>?D@m$pbt!@3^Dn8BR;18o)m&4)%7t zDvPeKNN@IDP^5ifh*|O;aJR7J>csN_ttMcqiHYdmeG@mLW)mQpQ0%R4P@4o_$0G#Mf)D#z^0M8 z;`9R&l0agICFn%O3x<5WZk;`f9l?@MPFYePE=lG~f=*^e!-gL^8S&I1Q4SW z%;KQ=*yUOV1XU!5@2NphfOMkdp99n_!KUDJOm!p)R7?aA;~L@pG`9S7Qb0{^iPckF zbLfgXP_2J!Wm=9cYh1CqH>P%dJ3gdgU2~^)w#o07F^C@X0fDS{Y>NG%L^QC3)1Pw6 z`jMNcM z*&6C5CR@Zur7Ch@{itI})tkZTr=^EKD0LI0n{0kh*~RZLL^DB6cJ$or%T<+R5pr0L z2+bz4z5*eRmPttVn#SIsa~*S;j>K;whuyw64}V+aEi&Rs#OjHQ5tnuLEQ9Q!g|Sq& zoP*gGev`fV+`kCTTiA8A(3_BYrpc%ac2XYS_gqfJ^J7s9FeKn}D9V$9e?sjM2#p>M_e&yX=?pPqIY3YRH5zzcrW zgRN?vJAZv85GkX8l))bh_q1|%K%MzrwOPj$Ln_V<44?st*F@=dth_z#*d(;d;4p_6 z>gS;eBEetAv9;L4jow%=n&K~?lWWJIh7CUzW`{G5(Q2zkHOHFdh53F9j9NXVFx)dny;k|R)bI0l{?_A ztSR!ZSb^=)6&Ym`rRRKZhwjmp|Q6S#d)x{4`ZgU%%vB~vk8 zkFIf))U8s=05O&q^X~-;VNxnSF)NUc>8BI2Uxg5Y?g0y(XQ(&}!4+vO)Z98v9_JYJe zpTDB;^wqHR(&HfbG9BX!Qtd#hWbtZsY#8$gC9IUJ=LbWCzSxHBd{b){d~^YsDwGCZ zfR`?Z{n$Hy)F+J^Ve4=TX{*d7W_jK!Pb(PYL^T$DH!?(IS4Eqh!0lL@qI>V%$DnR< zJg1c>DITSkam5}?89S`o?-qz%4@+uK-ToFb^yqXfl?Fp5KmtuGXDyUD7LQ15{ElGEKbb*BSH94DaT5wM3;kediM#rhP$I_!(5PcP7f*GJrXQiDNa} zv;#B^L5y0}3v4{-EY58d!w$yG=QUw-PvXaPkv>Plxbd7NOD^^g;49`Dp{AvTGmOj4 zE6*APl}U=5o%8SyjE)T4&()NfbhRM|zmt&Of>C3)wHyF82pq~MdTVFKsuD~>M&WjW zOD6qW{n7+2XwDB=j?hMXTU_jL#ZgV)#@#Ah=uoyv4hZndoz17+zG=y&FE`PU@j~{fIxgNVFC_YLtGdf*=d^DQ%>U z$hmY6Wvd*|NAVM9S6PvN8H57f-Kc-{RKcX)@b(x9?b6RO?k{p~#)+s6SRSezN9D&t zT|q{*`G(k4Ayv&&|A(D0rg#C(wA31m$cR=PNXM`mtYU=ooO$NALERC}si|T#U9MBv zvo(Km73$$_)=mqJWLR@WItjse$g9PWSrw#9@cA6v%=oa!m%5ao2l_Ax3&=n+vcQG$ z-)<`_koi|DF5m{6i6^)F^m61pcqw+ZNU;x1HtENTB~A-`4c_=B{o$$$IR{;AONYxn zPy~>@pPb-vd~HhpBF*lRPTvjsNq;glbGcj_CtG3t$pqz#@_2H4>FODN##Q>gOD3#j z<4O|k9_nN(BH;j1dja<#uRs3X8&?vQ*!o!Tcuc#_i+3L)&Ua-UU$?0y#J;E~R34-K z{p(Ob^jFsjvB}F$$=oz_H{y+8L#VW=-Nsfo8H3SGkV?ZzVL#{?R~amfPmnXQhSrbM zZ=Ijgj{Ibetb;bI4+$n>DI^}_EWu(ttZ5s?-|E+R_h-6^BE`RFv+EwqA8tLB!pvn zpNr(AI$p*h*darg&w2p(Pw0<@D4!kA3PI#HfF=9=PvWT0$6Qa5Hn^C?&mlvF!0A6f z@z*u+5BCs>AAKuKiB&2H!6!Js7HK(08SIBw%Gkw&U-~}MH!l(1fZZMrnl86uF9EU- z!7JiJ;jPezrc2t`OTq#_-S|s}&ff^|ZCxvR@Z%r`(R%k5|J~<=g5}g&y8t_q`E891 zwJ_&957sT^y2i{@=cI@u;XdQ4uTODor&z0$d_xOAPHSW2tYmDv!-MbQ#T!J-`rYe| za=e->Ni`BKytyS{3*!JUqQt+Z=2!T}01EXf@b&AMqf}9?C(;A|#Ua};>reMt-L^m9 zQh4M*Q?(D2m$C$eq?4!p2or0Kjth7e-NUnXmQ3qv*bEnwmfm4BY71u#6g}uN`ZQ>j zinvu|3r#;@J%i1Dv9{wtUSmo~)?WlC zP2{vi{p{A0HklhV|5hxGAG(p+R|eXaT`m`l-=F0J6=rlO-CkTF^$@YE7?;B5l}r%V)oE4wVBWDAJ^8rLgwdW*9GW zw(}tH1W@S+`}l4P9~j-njEq*R9cA*WuGPxB+33Q!#?~j!}1vn@-_=4pN@q%J>}Wo~BMe-|^|`%cEC3o?+iE z&3>J;K&y@QK1#-qi21SVm%kO>xibp&O4S@clQpdh$UMKNhh?)Krn}P>qfyCa7wQFu zKSp*;Fk`l*el*%a@sY8{7EzQA4!*zo+gyNZO2Jt)flu@)gc0TUoleH6i=Vz-?+LZw z*Q+&`Cy8OBcuB{+1gfS6KO6B9~rU~=gp+8V&;YKG#6-yeIdLS zc*@?*S^WKg-WStti2HgzlhQqeLob~QEBJ2BLcn3^4_g`V+}S}r5$Aa*HtUo1q9A08 zpb9vAIcH?3PWD%S8)L_SK|KfDobgC_0C*7Iw58nhd>rdMhUpGp+t>+bjk{t9poqTb zcD5IGM=N(^t{23#r#nQqiojP7_55@zIXi{Gr7gLjeyWMc49XaHI@YrB88FcpMm>#} z9WE*xvp_DRB=Vb@OolRjDu2X@;VHp*)5iat*27ZvU0Vk;VmMTMG+8S*uO7<3v?>#i zJWVo*utd;bUN3$VI+A9G7g|jh{}yC@shL2^aQxb(K2jm`M4&?$Kctxqac6 zNPoP1S+m+FJY?zH+}~O8Sl@t^}f=)>@gIaaV#LJ*T2>XlkmqZlOyWkf1od%kH57bMr|@KQ1^^3`2J0mtGxMT zHbm<+Q2Jt36o(@eD)B6u7vhH{VH3}*m?HoCk)J@tlPeZ&eq1uOP0hsKqN8@H z2KJLRQ#P{7HeRhGs}D90^TvDvDD?XLNac)RmSHDBt+qCT_HIo-Oy}@qhViRpib>EF zkLY19(-yiNpjTJz)45Z zSeZTjVD6VU3V4wB-*Ucofsrl))Z$7&Q2Z`hfz%AV1LZ-($cuID*YR=%tBH>tHWFsI z(IW1+H->d_PQ?S-9kd}p+NULNN;EF|e6xF}Zn`T(<9Zd6P-_OLf(MbWZN`WtVn!$! z9TCZ9BF*cUbgF`Zt(G8vP^lYw7HsO~t0=VwsXI*q_{#0 zEo$P5kMpsY>lxE~M!sU0XWYxk#V1aC(G}MXbFp;FUu}}x)Wi07aes_K7xF&rCQTlL z!cPCJlMG+@9foLeBC!yYM75fvWDSFl8%B$DZmFKaOJjZg;+&p~$=&*LBWirP=Y+5hzH!69B&QSGoUvio_G(Sk zjF&xM`bRe6idl*Kniv;(N1CJrPGjq-f0k#{5Ea)=Kj6>$&WI8v+<)5=i;xu!q1e|K zB$_P5)9gXYRDnc8VuDv&fXXE%X9-8kT{tcWE-`_`cMR2`-<~U)dqz&IzY$6xK5p)W zJ!6WZil>_~0T1-Ti{F4C5$9l610GdF*NgCRIqi;mk?!+H)%qn1hZ6FOMiS>oE%6>T zNclTJh*DreaZR#POCrDVl_HCBhyMbI#;43bJ^{xQn zQyny7+QHE@;9F?;%Z@Doy9YO#5&I979LpQti1jfg4{N5uA9Z-%A%nD^3esGwy?!NP zo}g5Ha$9aq7xxnrUo{(c@oh0e=lYSZ7orfJw?$Z= zx7cuXF0O66%vRtcyK3NMl-#bMQ7i>o@Q%-o`cQG-PtvMUs~g^H$yMcqcD(W}UGZc+ z58^@3XAzj^t4~Ja$l@t{%WA6Vr9ewJ{c_ZA9~TPhs1NON8<3Q8>|WL}mL9)3z9Qu;%$E5iB$ z-`~$@s9qIZ`fe&*{20Ks-D9En-QysBEhiEGph;Wiy}()mtsJ!NpxsVsttQQW-bt%* z3%odJG_o27ho$?uz+S7}W}PAllw%8Sz)YXh4rwZGkm0f7j^T z{MXELCrzI6UP>x1ud~T3;UT6q9Kyk$-h}945R&NsMSb=EEwleEecR9AYKr|(f3qGq zcDzip!Y)*V>D>a;&>fa;O%0D^o*ueHlmGE{3eyjn%Z7&Zo*WD|*A0nnFFVSNd9T=S zJ>hGJ_3mUpHFGp>uM(pXF7LZfhiZ9~PplF94#B*wian!fd(z(%BvfCzK|ebR!K+=` zGSf#jr7b%;Crx&Y2tBgo*oe@>_OYB%!_FLjA^4{0i;#(KJ#0DTs^j#>>o86Yn_ZCG zZ&zhDKoqz`(|v{R&=i1m8ep%g6)v_;Lyh#u^owhG1BO}$+Uw#?Dl|H`v!_e`0~x;V zu%5VWP6bH@g02krS3BaZZ;BR7MV0#h7QOQM+rt|Lo%6Kmm2cXdeW_fX{sfBEg_mI? z@5EKb85!~7-u>tG`t)1q@!m~L8A?3{L#{H;VC&xCT}{LnR2x*B-J>_g`ux5%m+Wo7 zNSqVTB-*$9ZB2ioE4j&^Z(>W5*HqJ6yM_CUCeLY3Q$ud!^%KtSYaG>ZyK$<2b`9bm z9Hrl)XKm&30kn4Wvq%Q^HHR)Yt($Y08-y>^WT-X-FD*Ktm>?w9ns)AXHGjBToTV0u z!|_7y&flv{3Hx3UY$5N=a||bY%-Q-HAqw4)w3!K{vI&;p%i$C(3iR~XS$c4d*!=EP zaYRD9%;DTUFue7z#c+*%iQVC~a0Pq*<->aFxg#UxX)DCaEKR=MkWchis)aZ7PhSIF z9=`Jmh8rH3GQ;Vc7m2tx)8B!_ku`6!|No03!VVI0_#%YJh&^{i*lUk}z@Sv{{DgE8 z+V}U~j4rG;c~oQi`JJE#)t{q(n_Il`#gvO@mK@DNWxu&){DR79v$E?mxu*q0Brsts z1w)lsM|d&uY+#6_u_GUx8=QKy{YacZ^U8{ZPyHP!me9rTUBW5qlYI zagh*Pl7$w-B!PGBKBl>yazlT`4{2W^xYW$STjN*|+DbOn&vJ*i5=lB5(9>YMHfdNk z7|m2(WO5Cg@AWm?(H-a-z2kq3@n+tSRllhk*v4MqAy;Q-iE-24t1`@bG~}Z(Mi&3U zenr!WfNL=aJ;v?$D`MR2@f^1HuI2XT_iXP@TYF=BwwFWg!O!UwO)}rnWzp`ZJ?9JO ztGQ9^(PPv=mi}gx_rK?HM4nyNNTTixk2b+8A9I}5cx3kl4b(2XP7@9z;I&83IR-x# zF6jjxxz1~N@|xmBR$4Hb-ufzJzcDQP3ICe_xBB4ooL>NBLyOV*3RpppnCRkOQ4Q0G zfKpb~G3qQ&N_X<&(9a%)aL*P?>NMp`Tbx3o2656^Y4T=bof%J^il2@zNb`3z{GF9I z*#GIdwDY$hX^JZ{QYV_{ZWsHq6nUJ*eKQ7#fNv6RKGfq0 zLf9v9L7nV{nU9!QAg0gTCM=$T7*)%H(l>Rakb~v?{lXlE1w8BnyPwX`++>ea&^dU`l+@o%nM$}h^*gevMXwq z@T8SZVvE47LC5(sOs^p9Da5R43~`43HPI&geE$X8*y~Z{02lnr8O!UXUL_Y`M(J3v%wZnv3_DDkQz^x5>fO-kM{0-C) z7kRkRfkP!^?b)yIj}ZoMANcg6*ntn8kjkK;OAl){80coh{#&=|Apxi?N}$5`(d!ri z3*YwIUv_k=ghFnCl;J}KyE^B(YFT* zfti6sA>CyZ6N%rRg4)I-#k|wXS z#FkX>=3QG2^y5ti;)(v4e~$KSvMQwddzDq;@ovs9W7ofM3ZK6Xgg0*k3)*sb#^Q6r zzvOtM%{_D~Q?6RG#qdzP9lYw{EruvG&onV!@}ey`D&$WY5MN{iV!LTTY)`DK(BxI` z^u~GFE9`NybWQ~gOfkm`&E}fp&6>|x>^0nGoh?w|>yy3xYvAu~L;%lx6@6X$6h{El zrgqHvz_sdpFAnN& zf4%t%%RhhbA%CrY;Tz zKSH7X-(GZ9f8llR~Lh~Ii zA~ADRIbYCDw(v0_m9Ap286@)RJEZLlO6YqF3j#59W~GCS=>r+jJq{ z8$JO|DM?IEfSXI0<6YU!FAW+E#qUz_c^C#9!?3pnuu~^4#$kp|8kIXPB`^Lce*=*ny^q zqs0;7Ty-TJGkwjWEK?J3F(rmB#$tWQtZCJHk=B9Q#xKm9Tc>vSi4yz3FD9mzD9OpRWX}A3R~#cUJzrhrTmp!zuNhd$|7N zY4vaHS-<9~Q`Y}3*S|Tf{!n{;(i)Dj2Jm2J=vwkZ;!{4;N2Yxp^drJIPaQ*FR_3!Ul|MrcitUrzG|K?A9>2sH^?^~a{f8(k2xf}KF z=Q;klPk0~v%?59OR1DsZ{f+y(FnmW3>=)xWG<+`o+@ID0w4}s9Q=cG+z=lw1eWoWW zJ@nOk7@x=2rp^D~dW_HIryk$$a{Zgr>JRN%|F`Q;S^vxDQ2(5?`tSa=XZxp~pXa&$ z2al)Gf6w}d{&s5m=lYL7-q(Cw|JT0f_g}pRH8sEIF}&;3@NxCT=cQAxrw=!B{-3n^ zZ~moc{lA~G{u5mP?LVg3KYG?5^7JX{b2c{4uXk82_Ntz;WGJ)FQH1nHMOnz3Q|Fk0 zhvIDU_Mj>5?MsMB6EqBWrkd_i%YMwVn(|u}2w9kmYI@fLAl{KXGf>0*@av9$5m9AMqDH zpod>`z2hPG$TzhKZaM0bV<(i%v}|$IBsH9y?A@+ABe4wjs4>{i5IN0`6LpTHTI^Z+ z8FZ++3C@wDj)c8+6C7g+H}*l6lZzK$p&X-Eq4F6nx!N5+hxZ|>r%iCu>sUO*dZ~bW z72tjka3?r6D+{SY|M(Z(B3{h&|9po1KmTCFOOT??r%Pkl@j0f-WBEthqOj7Tgxf=N z*gx?}L({%ZT{#+l^zyi&;w+6eoKeV<;?b{KFWf|e?U#xO|4}spn3jE}dEz&W%JeYN znfc2&4rFD;wlXNWB&dv{ZB>8rwIqVY5{eD~vl#z^HP-&gji}qv0d*5&w{o25gVHss zLv!cD{imk-i}N+Nb9a~Abq(pVi@o*!_I$L9fAkOe%pP^~Rsv3FknrBrgMSr%r-61w z9?g9r0lH1$LZgmS7aTj3mE3+XHtG=d%F(Rw*x*FtVDJ2wMZOxve^`o~>x4%YX~mkm zLLpJ!-yoMXWk?YufmVYJ^1LR8>V(+-3BB;4M#8~by-}lC@z)|Yny8m+)XMXkjT%px zHC|1t(W3aHa!Cu-SjIJ?^1K$K#xKko52e*;Rs2V{P(#0!$$cr+W5*u zj(Vp2B_cgZ96YRF!|8^@cgbJ5NfK`-X!5*+?y|=4tAvX@uicI8w(JK;y4k$VZpfFs zc;{_(#}n{ZpI7DPYbNA*QMa&X%;%?Ccl`VOqrn|Nc2f8>6oH$F^>8Sievto&iCOWl zBaJ~H^c0pt-fCCI23I)KMcVO1w;EiBfF%xlqgnSgOObzL$Z0*Sm*=f_NadgL+@O>i zT(3^5a6@n19QuUx)_k`e&}J&)^S6W=Pn2|vB6%k ziS%$;s?B{=ZMIi6-RrVo!#f3&2YegFo z)xXx~k4P&9avK}CjkRVQ8>L9x`9HO>(QIR**~ZIG(Z)K_M!6bT=L?ieEB=J{T#VkB zZB$B;MgL>2Hi2Da`i+F?CTn*3@*drq1dEAfQbb%d9zcu>jLvdR}g4!j)QV{q+qeU^QpU zUHjtCWPc2%KA*p}bf7>a@q6MYe%fXIEk1uksaJG6egWh)*hT!THo;p@w;}Bk!;3_f4@cb z=%26S{O6CjGJLz001c-?U6z)Y&}5aKCzp7g>ZVH|+wcOHR&1oNzMWF!E`(Ilp1xbl z)*w);0gpCyuv?p%O1RE5V z&eZ%9uvY|XiEdPRJj-iQ_7$axcci?_!GrxVy~HJ~m;*pyoAMbXD&-AQc1e*5$l_P; zP`2Y0$u(}`!lY@i{qwt6O)MfxuV?Y?1Nbc;OY#~0Kbh28A*aYC?cM4CB@h#mhZ=6D z>I&a$fDj=g_Gi<07BGtd<4f12VU|Po0V}5>;1Sj zh3an4F#OulJ?K~}?O5BE{0Zjj<3)iK5Uj~ zK$&oxnID{XFdn_o1llA?z`6?CbbzRW2R2x%sEk*@E97dp@W7J?Zs{b1dqEKTuN@qu zDTbI@;dxg*N}cbhR5pd}w;n}&oaIThs{Urs&O6jePK~2ZaBpx(5nL12nV%H?g;Lq` z-Nsoa4Xa4j#(6p1BXLoee)k{f1IHp43qKBcPiuvDYqM`t3UAX2XDYL2YO^ORg_E_y z@yhJ++Vqjy>@iB=7_BfznN7dF^@Vry1~5HGDf9|jiSIhefz0tgp5VW7+@TS3N@Nk= z_{xny@I_eFafkW?8s>xQ1MVYrz%2A}XF<{-l^sW(pZ9$59}Qh;)DM-r)vJ-v@k5pa z7|N9bO5!uszj+(5&;ym!*&imYR;^kaQnfP7TB&$@Obe7oSRFZ!OfU;7*|N2q|LkF6 zFgtNj7>tF^SGwewD=hUmPM5o!p$D0+Iz#QSvLDN>As!Mcl0R{U-{o^kVmVS7ykw4W z{>nk2u}{+%=`@-)Q+{;(s3GJt{;TD`j6nF&Aa*YFM2fgYH51he+?eIGL>oFRZV>J2~a1?|q zZ?-G+yUs$)hm;f)h57Jc<#e-;`6bNVT2&6bpzf7^ha|(i``jcJ!RB1j0&%aTH8Ftd z<%J${hx!wr^3^Q*;{yOJU0=`-{t+{C z7BT##2O&o(t8sFpW*JfyD@EmE43yw2*gHAw!%sjQxB0AFVU4-)){Tv9<5{tdA$7?I~y7%)F@^@ItLgkbsr z^EH`;YQfzt-{dj?cesR(3~0NFys z#vq%41kRHUJ-In$D8N~w1sB&zNRdYzDY!Km2HaZJOg?KW`E7=h|A!0Le(x>X&M+ek1;Czm2$Kqa1JtndEN&!eHs)2HOU46AC+?l0s|9Et|ddHtVYu>8|e zEwuR89f4L>*V|ZKXDaizI!GERX_4nOyTJ@Olq1;WAPqF!0M(taEBifO`l}rNjWo5a z?Ketg7jwytj^GCQIgpJz{?bX|$6(<3T?5Zd;29dx7mnBU!m%bkJ87Ix8Y%QiF5uKK z6(o0K_+jreKN0rvw}3}UC8lt!{Zo@8J_}phYak>Vr_uJ0RgU<_VEeCy#K)2Lj~gBF zd$3FSH#lHGSmKT^#lG;`d{Opvd)W<+_(4u~vfdF~C(nzx;|@HM%<5k&&ntJwpE!=H z;1U_3kF07W(q?kGwM%Q)nj5eD+8tc1-YP}{ugdlB7ES-!-ZaU_!%p<#f2{8=fvM!v z)nJ5K5m$y%Er0AH84o<`s8fnO?uOE_N+=ymgyDqbZY9_Z+ez3hY$wFGA`Yp1j+;vn zAA{OvDEDimNP#=$Xd^|=bQ>N!E{45Uz+PkOCTAHiiNBT;%z?~o*QkMV==_G#vrdY< z?y|#t#AU$56?g_W6jmID`8$_@xg0!OD*r9($m`VLavPqchhJ)kS>~muP8vEX(w`aW zhKp!Ok0=w}2K%xp=+K5Tzkc_}rrqY}?hGvs2%TU8}I{j^q(47n_H%Y(@KFRYJ z`kt^AT|#vKG-=%TeUBU`4?&n24uhGBw`CzvBnY1m$vy&nonoV{j7gg;p zfz>X4OR5f!dHkVnqfS$N5nD{RI*QLHlGCQqB{C<7By1Kjafvz^*HLR;tN+vmlqyWsJkluv*QSYlOi{8 z%_XUt%(&tckN1w3Vg7eFu@dCNAQl*_01G^QF-T6NN6}5vBmgpDyvPAy}pc?F;n#}dp z8TC2T3RYxA@Qx zf0YubB)*2cK>sB^RTe(9^LADfMmM322}x~6GKI^eK5!Xh?DIYGxsUMKs)V6S{V(Ww zYYLz6MqwM1B0)9)Cbd}xN(F?{gcM2zCQ6sF9@PV%2T$NcI=q>PdF+3K%r&G55;7G> z>ID)UuU(kbW*bNp5)xBWNEDh#j63DH=%Z*)H|%|XP4Cab-}mTCVrg%r;-inFe?8`5 z)p6_o0xLehz8t*r@B_#NKHR)1=;ozKTu4Jia)sgHFfB{q)?+|IBlX3{(6Mobi}VFc zMO5t{%B-NfIThN36NY2NgcC-*vyuOv8(;7Me2Ny``4k!v$HgrD^BO+7{RC#sM7zj1mazkG#X)LMp{&5z6YM4 zlfAOTVcnros}yEa9nHyTbATo(>_o3vzwR={ug59RCB(4^1N)-_2Q-f4H-E zr27gvnPdwN`w>&WL`w2tG_fuf?=!&iG1lbDUV#GF%ZRYa-IE)QGmqSkv4CCX8O)!G z@gatHyC(l=r%BN_8x*a{x8WBxi})Nt5pev*s7YmuyBTma?qL39^}K&>C+jSP6?KR4 zihqTq(Bc*t0WDl=K?4TiC5g=z1gVS}l-a5H)qroKv9o?_)eSKwSHg~tIDdV`4_z63 z`itKk!Rr3QeZpTn$ag)9oDmby^;4-G~@sU$v_jnhxqnYFS@^Q$9|>M`EYhh%IO1 z6lK#QK54Su=HYM8o0ub&ai(6bqBJWHjzn<;)>uL9y>NG6E>kZ58(tDxwKs$V$LtFo#0J%?3wBRhR1(4=^~t`f{w`IulJ;7; zq>`#GG7aOEM%CN`BG`G51&qoJGs|QeW%}uHaa32948M;n-RH&d^C`j(r{Azt^Jz?=iLKd< z;`(*=6l`FBwMMq0Y<6>ICH7Ri((qJc|1?C#z~mi&=49H%ZE5tl^x$%_ZlR?4m&3~N z;1W>iQ}?iy;R2;v#3{0qg;aJYOr0b>;Ba1X4?-MMV7a!*G`WVGd>ypIuzA$m8Ose~(}6(hh} z40~>1v(021bDRozr=vIUDiiqA4iorRX~kN0IAV*Qsdq$ecH3E}Y~sN_nrJYaINxfb zR$4KHn`q`HkhinhX1Cp$aVq%#%IFQh)r9|8h6%q#S^2NV3d~RG}Yc}yP?jQ9>sa(_--dcK&n4I|1ZkDRdVw{;$_HU+Qn|| z7GeLTjgI)QdwlTpfcH4NHEnRjKRS{A;T+TP>8CwDJZ|_u#oI`$Sz61y$k?83rT%a{ zy;k>e+x;oRKH3h>75xo3*FS&h$`ErL`M%3EbDGA`R>=3+t~6t4KdV$PW2gb=b>32i z<+C-^n6iAnehSN{QSWD5Z=+G~os^lg<`ia5qn?}VZMN5o!j^z~!loIuIpL=2J>^K9 zoEY_l0kg*R!R=wdH0n)pq|QW)dQEJntT~09(x}IN-G))psMmr`6!nBXvL)RfY1DgE z$cFZMF+Q-UG3|~qo86Hsg$j8kwTAYoV}zaZOGokBX;wxKo->V&?K;#1`moQmG+KV< zBHmpTZdct-gqa4B9r90!cTfG5Mv0b7;>B+&fpe0?Bi~fw(QZRH{H8*17!-MVzoAeY zbuT{Re<-vVg^qWBbD;}SXm2;C5`G|qJ*d8^IF3`|Pj&Y#--@KG`jy3;|7?yc19zk0 ziVjR>$XtbO2vpDaKqD}x_cp#ry)Bfljxp@yU*i1AKEGK48?Q0H$B&!yJ34KCskQuU zv(518+-Tx}knghk>JoB=M$&JTNsDK{djab|cUrgaOwPB*dqM==k-=9zk(M6gw#~^fFP+lIJ#2=6_LW*EJ)U*jKv54-IvEc$%5mg$(^nE; zr5f&6jmqSF;U%^0R;v*tFKSjq`OIXGd<@3@a7vw;pReaWfT8=z9kAesMyM;-ipvN& z$oZc6jQzm0`x2B6@jJc*`9*RY&4?lET9~4--0h`r4gk+<{QZ}qX^%B0_Ui7}Xbq8+>SV{W^;xn8K7 zzr{g!S7t8t@=imv@JI^QW|AA^lFbC`L58&s z_Fn<(F_#5vwQyT5*Id0|-RrVoZ6(b@F4+pFI=qCh%vJ-|V5bGEp8@Nnvlpy{q1#re z;i{Bd80+ZR`K!!MIxJu%P5~_38`vWTum-h6_?XqgYPHZ|>bbQkKeM1CH5Feu#8iCl zuula;{BBBZZ-%?KaL3JY;M|L3gH-4mG6|dTer~|Kxi>tH6f@$-RQ4`I?_SLi@Y+%l zWRKb4y_+H6ArD3xyiiDld|hJrI~R{l|9rZ#LkXOSCo7y8WWP3*c0sw zcHx3KgMH9czV5Ti^gg?kb@a9F_}jw2jM^oQ8Im}+E&cXl`c3Ui@_F>b!a<6_H#LPv zJi|D5;QD{-PSt;`+o->yJFPy#OP0&mP?Zgt9CnZq8lsl8sk347mA`OTf8kWdK1LcCUe3ZLFG~@<(qCEN zQD(T+`5wc*l}9Rbwtfy&A>fQEYnujz}SQMo;9H zFmm1f{x8V+fZX**$^Cyu z6pjT3qU+Vb`d$OMmLxRz8D7pi?7Eb(cu)#Km%GO>u4U{Fy8h4DL2fs&tL%ZA8m?rE z^hWGrOIf|%n6eDt>awuA!DYwpYPDp8dJRXxa~&^e`{rhye)pYZE+3j78tfhx76 zO7m(0#er^Zs)t5za~Z9btx{yCQ`mLFTY00+Cssw6zr)BG(*tZ$K!@O^EMuWJc2Yyk3-){DN^zsczgvxZrFYd066Ml~v_)YU@ z_qvzHP5h>~)ydWr2M9kt^t^$mxYahru)zmgwMh;)jPQiRooqj7PKB3GNa1&7DrE6$ zHQdBODtu{-8pZ{7jNAf7?n`&|mrlj|%Bhg+F?gJrDBvah${N+n#eEK%_hoAk7h#gy zmDg}POMFAh{;1&vZT^BCa+o3f_7!$l4lO|5DcagUafK(sQDXoN;Lm{$wS+m28FM`T zcbvVoP25(6cte^;lARfff%WusltbsJ8V7Hba6Ag+?lw+?G#CLX^V;3=b3l!ygjvjR zn%pq`(^x~wc%0qV*^8Y;3z9T+h%_ZtI0S(GAJWG6@hV)2orxrFhP9ae8`neV!1jrg zgq_%Uo&&FPo9^zX8-4}m5Yq5zQwO>gMme#t!W5Y9(6x_CD2a0k}}1^&Mq-yKzht!=q!wwITY4ixz3|N?hZzdz33z6NW{Np;c1DRUDLOs z+`MvnSniGwItl|KHcKO(&bGb4vbt-VV49b0C6(V)_$ zzuv*fy=cp>FTN$7F!l9*$OvmX-Kj(L-_F5Ey)csm3|ikr*8Wx_QrPrr-ZTloNuMlf z*W9Z?CDd1K<=q1_GRzaq23kmPdCqcJ>kaxryF;Dmg;j5S7Ll;8&@GjHDQt(z_K^U( z@)ADy%@V<#>h!F74k=~SIa;({M&s1vV$+8uEf!RYh`f8P_VkLc)^cJ%5oPG>2wkeG z2--97D)J~RIl{0;@fd-KyL}zu&qZ`2yYht|6tQ3I#r=0-v;Ov<;j%rY zGtgfAR;*Cto&y>roajNfp=H_0*^=9Gqr^^djT8<)8MG#g{^MWEXHeX$(w5kc<2uXl zX2uCl9b?R2S!3y7BYWVzw^~7JCAEoVxL6gfkRo+eMkx|e>eFw98v)u#{L%RP`@ZB& z`QUs~@zg*whK-iS3|ua7?gmH5hf8C}s`;+Gi7ui$xpuy^B`W+IgDtSw&hS82pAKnb zh!Q-UmlYZ&#sLX2=G*LZ^1Q;P7_04TlSW!>io}4wc;|4%GiA z$PC(-^!CA@*#k6HcS zz?YCL|Ux)os zWNqoA|0j(8pXk;96K4NUr1$?sul8HfzJi0qlC?^B4Y%KF^?wcf33JwsKKgI8e|@j^ zeP;V((%ZkFNBf?#&6|nxxWMFOtaj4Nmk6T;VT8~Fh9|&6l5v)d6ik&a_xA-;$H6_*&&f^^VyHh zTk7$MGXkxmm41b$X%qF_#!(&By6czGXPr?J8Q*Rbwicpp8Zk;LOY#!uW9AMohQe!}tJ zQ(deSO3NRj0-@5^Ifc;(!@j&zdf{u@S58+BDIL|v&OdV0R~^1w`C94j^m`r3k?V3(^QDc$GSQR<*d-7`zM+4$Mcj1atcTu3|OP#wL)NQGmsjuGy92;Vg?SAEa^06Ko__8}H$JgrY54pB zfCd2{T8qoO%`k!g5T7Z=H|e40Y1+;C^LNDmd;)&iw(n1zO#A)_`)#LD@}DqJ>6H91 zUfC%5L1WuLB^^I&5cx!yL?Rb)c%|?G>CitvDu9Ur9B@2s0LRC>c&yULZ}ZXKy*!clwP0zsg8?c^Lp(5%2g7ai`x1Z+S+_`^$jW4tS@EI~Bl&^#v@H zYlNLvi?GveJyI$5H&ZFjsYpCw+I=wMb1G=eMcn&q)*OhuoMyR(i{1&TDUE9b>*~U845)KI6~1KXYzCe^%zF`*YoG zp$$7oPnWJ!bl|7o+yOpT?V|(h5PLF_1KSQ2GK)9DFDll-$YZd(-@% z>yOSrf8M-?@8|TG*Z4N1-^#h;I`dAQ&_rpA|MT(pgnqnu^7!vc5xBUFpCiDFTkSPj z+1Xn`@l0o@Ize|m?)4l$KfFWR)Ruc9nHb1qw5f{JYrWs~unDXAu>UUVVgJ3JeWvEH zjk(3N`X=`xT6*XE{Ov+!`pPC)di7&^GHFGD#TOa=0{W*q-#-6A&v>Vsr|~VaGmUae zmwvRB^sC>QZa|x+60Y%^O+TXCsQw3nl=zcf|5|!bT-hy7P{nDg6!{5JyEqx;tc@Zd zfTpQgj=AJ6M<|G-V%L)1?Nzx(=R~(Fe6cunRW;6>WLX$pfHg*W8QE*{E)V^%Vrgv! zTN&AD_+=E%o8=D26H%ikQpJVdS8s6T6~S^TiW|mD5(-wl)E@?J@FX*@$Z~b&!)_%Q zG2O_^rO49$IIoJ7b%rX`a5-*MGH{n7i*Q=r<&+}%{n7LA>8d}1gAu9hcDDJHtAR)g z{rOM^FIQehqMp1lQW-+DfW=LjR-PFv|HxW_$0`$#HKh0OY5pq6ZLD{N*QDXHq@RJy zW0@u{s{}54*{O34;wCIyLj4$*@Dd>Ma<@R_r~NX_@B`Cdf1|*|%5b_ticDsmc0J^u zMeN?PAq|f;ZUc|c`Qhx255cVd8O(%fzEq;IW0XKD8mxz{2C0L*Nkw9ysm+9{=EA ziw-*;9Rd&C#N(iVuLg9`=`D=M!8AO^I1D^yJ54-vfyZ|lkAqY{HW zFdl~)gYaQ>QKeg*`Vvk+BMrh{h_+)8_-CgW&Cj{fhaKGLz|IM1vFf;Kn)Ee??m#>3 zJpZsuc9!0l+o=Sa5<`vqo!Uz$s{STe7^%k0m)zL7bSFC^hd+$p%kkP^IPf2e+z!Yl z-yx2}iQTZh`42ltVeti9N^ii(P+to?=)??|Th zkC}d;vcJQjLUE3kj>mKo2@u=@PaO7rj$dgt;M5%J4d;0q93vZUCE(P8qy-$=$cskr z1e^!^fHTJirWR_#1uxC8g8A zHi^{=_=#f%{8om)2=J><*x;`+;NRW{{Aou;=3k`3F2g2J`ZMegw5JH*nO6V!F27aL z_<7xi{u{34_Pl7X@wlzMh|%7muHNl^*oF3%Q+vyOW!N*N71gLD_C^lMGg@{Z744Yq zB79J^yP4Zv)rEGCS?!wT23h#6=W=(W+*!TLU2TyHmfB-A-)dEbU+;H$I8C*7?7A|9c_d|NecKb^p62KYs=ZNDF_NOm5@b?d!z( zwf@Sl;DN1F!;~)<;}|Q@uHQG8#xUy8r~DG<1MSGJUEooQJtF+eg9v)JQt0k+vy*5a zq9kt8&eFfdSQLHVyi-@r&%&j;{&r0sHjI!tNUdyh*^&8 zM2cm#)T1{W?>Edv5&`(3$PNdPob2s=p}bwbSN7hhKU@IBUKz_b2;x9reg^p5La>aC z@%1pCN1fp9?WLzFHA;iN;+GsG!1wqOCeuAipiRHdK;weB;;?%UhHAQpul#P)FEzfp z#MiP;Wr8PkDW{bz9l6zM$zL;UcL>as3%wnv%zTQ^mLpTlRVqXFwanj7^dKi_|N zg}DDPKx0Y+`fYUJacXay+diQC=h_Aoi$Q;Ej=<^Hzc48QW9sEQ|GXI42aE#KQU&1B zVhykA&*s9}D14n!_<~Rk`|YOo^E#HqoH;$0#QI;@8gHj1 zq2F#aewD59c51vwn|=eRF4z2_JI!nPipl43o6a))St+nv^W zoaNEvb4gW_<>A>_jigAfy^{kPl!+c*t=?~5t#c}D`KLC(IClTFz;a!#k#91bgB@lX zy95?yvaf~_sVEs^Xir|Sp z)VnQswQ5NfDP~Wa9*`txr{LB039r_G*Ff+@XJ2qx@S0SA1L>kqnjVXR1{=JlKH)VP z@R}|BUUFLST1n)l@gsO5(trf;6uj0x;k6p@+N|+=*s2)zW49(qZtd#SO5}3PMlQ!X`7>AeK6N3DO6W9Ncgk*MM`FjE3Xuc* zYi!gv@d=qrIG*L@ZNjPw?aSK)0uSxV+k}lLRG+sAOFi^P-llT=eMPA9dGp<&jd`0U z1)6~trMiOfi6E6goN)}5qpiV+1*?}ocZKieX$uWh_9}-G zEf^Pp-&eqo@BShD*vONYx1I5OFK;{J_fFn+#_z4X?Tp`RdD|Jkmks=i-JxglwljWz zRc3jWLwpG~;g@uVe+N{?DFLLIIg5VFUpdrCTVeb8QeVXG2TD!&b2SiE_Qvlp>=2BX zROY8Pf!oIhZj(8AW}XV%qzJP2=BZ6=Z8(R27xR0Ge`oW17ymBj-yGsB@SW_IBJiWk zQz!GMHa<6s5f4>^G0rflETmASkeol6AtUC9D@W1@H81)|+ z%Zt&UohJ)~v(cg~5ccqIf$)iA_$?6b;NJq_c4!|eBRqi+egJ+zfxnMG34|d9BY_hT zu8qHrr*Nx9C3mL~{#gp)Sq8%Y5-vnU67lC!1Ov5$N|m`d87{UGd0a-X8OV3pJM`eu zREO?4n(EN)M^hb|bu`tXDM!r?`Ou-fqp1#k?iX2U?urE_9>{Btp@g;^m$|!tZ zigyf6@eYr0DvbYKIM&hI_~l9KCseE6`7zZJFLKxfkR(aX(BHlaa!S`FA}(mYM>%w9 zFx%ISI~lSh?MbTHnV;uKHVq$b_s{Wy#XB zlyHmc{vGXb%A`lL>^v;QM`* zT;ulDE&d8-C0w}{QzvG*CVG{7J#y5gOz@HfmAa*4PKB?eRa)@~pNg~+bf?mxsmOaJ zcR3)W24bNB+DbpJ`VPkO!mZlMzwe|iW}vTLTlq5mD)|NW@q5Q=>gzjUxe2+nY1zu6 zk;93XD4~%#gr~S@Jl`^WH+1ub$6hLx&9{`W89b89$vdrkS$y4+R)>K6JA}Wdw(_~1 z*v}G=^cDYZT+-lgleYN1`uBX8n_Dh+Wt96>b)d+Tqh&v=1U4wabqa|PoUsX^8*0fq z&e+u7cCmuAC7^cJILiZ1g@&kM&v&L?J}}ZqPtuC@;!XtiZhAfyhq{sDP!V+d2R6X1 zWqFh19GcH?2Kgta3Gy`t`Fa}2*QFJAI#VF$r?OvdMP73bz`dC{ zXaxu0GDwF7@^uFJMjFUBq!pLjK(-j6vr#o1<c#@hf7NJZtga?;#Z zfIwaw0k?(YaU9mwj12c(hWmLM+|Q*IoRPzT`&ax%M6JU22_!BPcounl!5E2cB_8SZ zMtGi2<#cSiOXS(OPJRxhA!gp8@+BIGu|amM&uFt#0ugHb^G<)nNs?kPLQuXl^(tz8 z@l&{t6Zd6%M<#FRE{ld=$&K1>5g>V6d>$`8hd#Fabdax$!(ax3WtKE?UaX{4_6!@6 zq6iCtyU;|A8L4n{-oPHv!VQVv^?X&!H_P;RJEwvc0Qxj2*8dO^vGkhEm+${9beg#5N&gPP_8n1Y zyYKtJcWA*rWOrzTS|!OxJ*Am)tV52{1~O{5_Sll+I3(Re7xCxSBr-N2>pNTQqVx z?;s<^=4SboalTglTyAg*H<+c$Rp{O(*Dg`fM+ycfIi%l#@A0Z)za&2Y^=KlwLLV%7>x{{A~@N4dxmLIA41!)36K+3t_j*Io_;8b<(usUl5-{x!90d#l@ zF=rB_u_Dt*&1eyKBt=#_5n>Y6ZyODXiL;>K$iGQ-AQwt*lyh23k+(P*;+IWGF@cnb znwq`KxLU531P;@$tqJ)?LEzaV^`D3~aF*7e`EiyyuCqT0e&_HxPdjQPc>YJ#E8%wf z6u!FNJrZ=H|Nb&F7i2jinyyBw$O5-|rs|ZtGD2sTyra4Et7FblHL8=Uj;g21p*JgX zqqP4j^@$Od9X+Pr3ofKz_#HlCiu@5fc{o;<41bD`gVn3l{z^$3vMwNFAr`^VITf__ z@6Ib}s|d}3JwUGas)d{;hvSg~?d)GLbtKGB!nFV)V)_fCO_X2D;6NCRHO*`?*s2Z_ zo)W{tf5({_3B_aCKghq8$l=jB6-s@42F~C~SMCb`gh#PK4OD?R)rmPwnG>_kBr%0n zJ9RwdEykSM+Yu==sT+gg7IXs#_ccjnxWB=eN@Bel!%T4j0i}NR3=X?~?QLO~p;;(dD<cj6lbqeQ&PoXy9$=;K#9WU;4kW~L zSn{_1@6VkXORN8Uu1mO%cxWXyYD;g?P9)=%%ztZ$gUAQRvVW;tzxI1rSo5iPXa1}u zp)sK94WrmnDV!ZSkDL}ftjXhZP9*iaPw)btEZ2^`ne!{d06d(Oas3AV68=nIcrpLD zNQ5Syr^#D;Ic+>S+8jUq`io6>mGHBgoU^O9JIcb*I7Bh-0jc*Rh&V&!pfT@O=2S*Y;uzMON8DQdN`;4p_7TLSMX;z>8;gZ>iJ&OmEbcOq^HYlpxq*>=|I6 zX3AJzdL*C>`IcA&q48Fp*cO=aNz*xEOENsoaAY_Ahxm5AITdn$hti$cQ(;f>+MG{f z(Mx^E|Fj?LS6znT`^7o9v8|2j*ivFEtMk!w9!7mT%S}qzBvww5Cq}8UrPgH`Q*031 zuQfJ^98B>du|bR;C903->WTwSEtwHo0j+ROx{gvnD(wx=!wJ7uMr_Kzq zzu&08{vFU>A_u!WNi8>~ugjws^13`-uFX!#CG@aONIM6KyWD(h{0ectZ{_pSf5|`} z&B4j#2{r6RYWNj`HJvSLske493?qHl*N6+#c1w-e!nRz*{;ONT#?5%LQ^>!B zTq?KvK&}xVhLvwM*^rF)7{*Zj1FDRuuY`y@ z%y%U|5wA(c;HQ}e>sv5KZq+)UDtwX0+lx~DCzi&06uS@ zXRY)=U;BQEcj+hSFo9CXp83E_B;!+`pEbuUe6=+q=Koueyzr~v`5<5$|4pZZ@CUkluGRIuOn`}c zlO8@i1-|QuBPQy4@h@agEIFZ;ctj3GEgaMTG!m%q7~(?yVM1M6b|S+fh_5pQLF~rS z=Py7moIg3$jhilHU%6b;8su@#1+)9YCHq2S-5BVQDyCNsw@71pPrn2;V92mG-E!$;~Lp2MM_>2v^e{(b>_H9wG|gBx7p-sF5& z{5D?weat^q+QyS#=!s_~&Ha$(es8}sj6a7AB0P9q?7{v+l%=+B;GVSROC zRE6kdokcP~0OC_ph#wrm)iX5z5lir;*JWq3aiLH88J{fo9|`YFtTO54%Rb{1N<8|b z7qb6*7L$QUzpEo3s@{3N(4^W!Gvtz(v-EmRb`wIcJB3vn^JV$#4})EA2jLFP$KdL{ zpYsF<+ie#+U}G}$ciNlm_NWOswAlmi8QKFUz2s&G%h=*S+lz7Bmsh0MR^0;=@64%C zXE>>qvv85M8~2X5lY2-Q*j|x%$n-~TgZArh)t@<^4@YU^QEzZ2b|UwHDSyU)nIh1h z_l;tF9=HJG^EV0c&{;0&k?--ooh8>e)v@~^0-WdI47Hl~-(s)2<%|=Y^5KZGldt!R zCeF9!r-5etUinK8%w&9zWH5?@Z`@zG+wJJUC{8sK+a|Mc`t5HZC0Cu=;Ks3NpxN=Y z5@_)`!kamRM6K%Htxe_wNN+RZZ`?c7nLFHSpha;YOBdP;Ra7Y5xay-*Evc0v$bJND z-HfeL5+ywANNGx3f_S_ruDUcEt3_kYK1XOeV;q`KIyhq+?Gsy?!q;hch&##}6%VoM z$-K$W$VqIFYZsXtx)F!kLJ-lKw;AP=jD4+zeKTVpt{}+j#Bufc*(^{_94F7sa;Q_X z5TJkEIi`ffc_Gs@{BzGXC6zl}EaVNxn*020vj#GX*%I-NCKcQW+b6|aq~e8>5&M2A z1zse&oRx(!otDiQw~b4{H-i-`q^9!+W;|=lCyBA=&heHi67iMgyx1nn?hr)~8#QCRO_n{v z;%~Vn^tS@upHMj1YO~-NcPoWkF(s@Qd(!_FfupQtlnE-aAsAFv1u(`AfI2 zV?m*^D{-d5PwF#yKnq9UQ{8=|kq|EQMQWlyQZucoPA_|Z3r!>EbWpND0#UazVPt$- z+TBVQb=#hVob)^uuqTUt_j@$7FA_)Ae|e6%=KA+(b@O4zt4j&txuBRfqz}L4gvpu( zqOcEMj;3vKc6_{U%Ib3}5;c9^r_*!}`+pAL>>pTpL63T$m(zf_^HvHcfaj^tofBt! zq{!z&*pZ{zW>D4lhYDhUp0gIW!=y#?Gkpk-U)oi6aPdudi%hwi9BmWxH~lRB&bPgD z@IOEt0&**{T@v?5WSji|fo$;^77<^4_$xKw;RIMUfBjeLqiQ`|~}86AOq;)sa4 zGZ#DCBGunwY=GG$rG@T>bF6iRl_W+;2{ti#HzDJQa7)zWHGSw$59Gk1GF6J`ZUSfQ z`#o=+EwHa(Pi@9UV&TUKuKq8KMX-rbDL4C4Ha4|=s&cGbSfz~f^Py-V{v*piJj2CD zW4SOZ>ra}%LYr6`r}n33l{F$>qU?Frv*M2mEh&C)w{T1FqIdd%Gr1zsrkd~MMCH`T zpk$ByUsmJMlV`AG zSH8MS9J)YLrxQ2gLd52^I;dFrel~UXy#5gWG3O&bhycAJ#4RPFdWPgz0!({+&n8ulj0;y-a%DTX z$De@symm)L{8J;oXVHtod6o1z7lS;PME0J*uC~rys0*6~{>apn-i6SQ3H=XyqYwCw z&}xER-Fs+0<%qTLv+*B`^$joEWX?(}5xblp`J7KdH@6B3EC2VYXt3-zEc>^JMh3YAz0?^5 zNe#8z8j2;ZAQXlxhk6f7(+NZF@N-^3@Z6;iF?Xjx?HMNN;+=h=6<(tTV*;g1xd)-A zdXeuHMn3e=@ZQ*5eZq=!`ik?v+-W#$^i9b~0YIeiZl9F=Cso=&G)#I%zL0@88V=&5 zqCr&%;LZxY2`R3BPxO$YPsMRc`h4QJjXrNVC4Juazo5@+j|=)V*AZ@BYvIVj8GK_} zn7T2IpltRlS=HdAaAuJ@MLOB3`d2 zytWg4zyGNS`0Jr>k4NHwphtHN!R9e014b1$B5h32W&)8SILCq+WF#s4d1|oDvRhEeOR3eeWcbF!EhgQ;jv+-x zIE2ZRmki*&Kav|wyp5}5SU!rZVSTI}=Lg~zOyMyQQ_nQ5_;aC7SqkS6D6Uh$ z{vgiJ$RR3n)COgiz}ZZX+^>1SHjBxNrS@<~QZrp~jUmN@?Jq|=PNGY)F%jDwn*0jYzUy{Fj^ zJaFJNeq^pVMNtQuwuIkh;IdNVxM_WxVKI{;@LA@Fvs_a3at@Gu`T57eoEZC^OfaEoW1&Lx%l)J3MhOkM0V$hz1^#I>X!wx9A` zWPK*_;XQLI><3`RnV4RDAr0PD#(9mY1)B0=Ss(W0$!X^e`GZ*gJK@aG3bMH60#@f{ zdDK~6rCytO+*cne)FvLIKlw`6sAgs231O>HuRN8tLfPcyjK=9=HOsvf2Tbp*&v*6h zodxB5en!fpOU*E(_(xoJZG7ozEYq`5u$RB}Xk4&8=X5^*JMOfdq+FUhNf}`~NfD|P zpQijJ!)`o3=QP`Cic?y)2nZqbcqnX(Q71XZQ2*}9g}O47Xwa~akI$mAF1f!$zpbB8 zS~=N9GIU37G_^J*03&kpxAWSxY^k>M7pFS*%mtC$WMT{E`94?tZnk>BS925$dt%Wi zo0a;+stWZ%SK=Y$4@w=-iL@$g7)Hk?4rE20^s+?toC?CH#ki?gzv*(Kr=OkroJAjy zcFyvTUjFX6oi~bWhxPW;Fav{+(F{!V5TP7%F1YNJ=TQ}aOPrcykgRyS!N)lZXr5Z? zR*sVN!KWKHfnn2JuzZu-S=Jan2gebg^Kg&#QTfy4OozxkgEn0cENAucpUBS$bZN^OT?f zgfH3_(6-1#&FL1@Tcc*0=>OnUHJ*>_`pMM~=573}D(GUoG4Jblo zFC(`$>FR8@FF2?R?{uHyz7&I6whREZe0s#97Fw@)Sfoe<*MkTUbHhY{TM+*PBA}&v z$XdGBsMFoZb#K6W$|R@)cD^B4=fR9*fgA5bR3OsF8q`TNB`xbd zt$4YexopFU>7Qg64TT>g04v$xut=D6XZPbzi6sVoNs;$hRqd0;USxZZVSjo@tQ5=s zq|_u<8uvQ43)XZGK94s(LkOzp35maI=)JQUc|#SHoy$fsAv#=LNnEuQL?ijdqn7VbvwIpB|}%M z1!J|990wB(xwN8eY0JQ?)Dyd43;pag$avx_f79e{)4~ORLY(lLIio~lOKaDfo>}V4 zXjQIr+|@Z;?#_^wzdP7S!XTCX^)$h0+)m+_wv`>nUK%VU4^s(KU&DLs4Z}}%C&iJ0 zN4OKZ4cqIrpkrt(o_mUX+b&DJk?&_SM6%8;o| zS-pz?U2e^@hECm8H{8W2YNZZoOLngES`~_wZKQvf9Q#puk+;6A(f}zf!|n81flDbv zA(cl(o90wB_G8qlgm2jxXLZb@a4k_p+A`JCt?~;;!;)iIV(p3A45UOxSF0ZJ*zRtmFK4INfr<79MkQv9#e#y+I-C+qwq4`ixngCp>2sOA6;4{uRon6@z3W}-1n6;+N22yg$uc4nqrAIzM>M=M6BuXeJ!on#7~i)L%JMspz>=dcrw|Yq=vYa@EAM zks7bJi6hiShj+9rIQBkU)luhj6c43027D=OEyk2GIU z4^=H1z{y4)JmS3B)v`fRstOrNOGvduwVwOR}+Qwp`L%pgf? zAo|KHTJTpk_3%26xb6v#Aq{wCcu}FR-EgMNcWad^b!Jh;_td3<7TT;r_ zGdHZV)`1CUk|Sy3mIeoPbc^Y9RI6NZK()fp@tw!;eTw(4mp3rxF9Y*(0kD*Iw+Bww zLSr0)AxT@lmbNUv;@~IXP^cYgEEfx{>}ND+OPC~nC6(=EEv=ul?0QI8Ng9HQ{3Da( zv*ds|6||$V)N>clr@@}3Ez<|lvL}$!2Zh~rg@b;sTy>;w1QiSqQ6J3Wdp2>f!3)+Q zf0iH0x$EW4DV*yH2K~IgAd9FoxrBF|jN%za;^JF4%NbTRoK2LDC6grwe+o(BCsYeJ ze%4KtTzrfhzXaJnlO*2-v0*3sOA#1U)Rk^=#nCN7IuIeTYUx<0kJ@w^uUzHORVyJ6 zguT+1>l|09C+TgdQt3<1?jI)&X60;j#?{8uO z$X_K!yo%Q{uO~}FVy;oPrrVT@AUE^kSh8>ssYtMS$qTbiN|7f}upyTKL=9%ZNi3u? z&J)i(b`nj|l47d%&{fc&inEg84`eRx5CVcP^jg*826g6ZO+<@D>S{ErO?PNxH6aNy zS7hRG9CE!3bP|J^FV?t;8`HcDrzy_6s^p(y>r!@!JQ_<){?8qpD7r8DDT_{u?NxB4 z;XbirmqF;3U#k@8u^_gpCPLfzzcE^&)8*H&WHY4|HwtGCw|QKU{V%2gA<;#KBM~U` zFm*LIQk`A4r}Qe7SGOkL*vy)_klqac`qHd!DN>5`jRjf!qTV6b4fin#EdE$s4Ix7r ztTNZd+4?f4T})n0&8tF8R)v_X3Nd*+DKctL0iA|}Rs7!^#~Qi8an;I`EcK5%OfUP< zKT1b@HvJKzjl&deR$O!h*k9Ug8r05dKD9w@vNO$~<{nwT8uxYUc^&rM=Q7&gr7ip= zUf&7E9})X#*`K@3_TBN77)T}-$ofCz&4B6B`&w#_MFB^Hivti#Av2l^gkjO_Qse($kH z*O40C17F%lcUNa>bdlmh;OSz1X=3}Df$eKm@x72vCb$)!QjlfPwW2ZDZyzBl;-5t0 z$bM0T?W@`op9PPeX1O6tq2&bbco)lt*)RBlbm zpSa~?_(8klif;idYq#3=8(Eaf_z-NW%HT4J*dTcSG}bvUEkj~E0NTPG}Ld&(M92Lmon#*ljkkCOgYN?%*z`>5<0p3$WEKNyM-N<77m%nA@4h9ezOPl0~PZ%{{|MHRD3=(5LF;Y$2kk zH)IdkA^6kjr_IPFWgQoQ(61%M-jdKzA4_ndO-fO=xK!uq3JXnzIl+Q9X$!M0zV_zb z&yVc8;8>yo{F#Ru%j0aY+1K!Np0unT;(`X$*#4j*JJSj0> z99Uf}mXx^Gpm9yoxauHF>;lR$9J0KG*XC^pp&uAG9fZEyU| zRLdvnBcHe5t&sKNuM#8Lw$NqOe1>YqcXgQp{a==CIsD*hO97WiXweZNs%O5q806Q?cc6n@W| z%xMe!?TIWwmm(h=WRRs-8~F-EZu|!crmtI_g?t6a7VJ~H|o|dYhE_7Ojk*A<8+^H6%@)Q(!k=H)hrflLzr)guIQ;|wi zaHs=YK9{n6Pvv_Uua=J1TMl7#93MORLQYQ7fV{>^jnY9J9xOpW8=^z$Sas&>xTW}V zwQ9S!9gM+zGeVu>K7!1(4k?0j@THCPPX{h(o%Fi6rIjF~ND@WLa4uDSbhxsk`V*JD zBRb$1^2{Br%TTI69$sDqFMc`dR01)ovh-v4T@Ik%ff&J4s692ve%)&wU(-BxRy#sJ zSB@&jBi=PAV^=&*kW;JN{BPY@6n%h+=)}AAiiMpGH4pnP~J!IzU8K zA38JsBO>|u)I>s5L8EaD2i#I*KTmQXX7r~#SYIC4SC^rw0goJCvh*l8$%3EKgzp;| zte1D>Q*V3D{!hf!+Wl2OZBGl&vC%^9;B;Cbakw+TzdO`smGLIthyQ>HehG*(;87+M z^h`kpe^sZAqsdXgA1qQZ{2@_m&gSO!mw_QixuB)bY0m^ zomYb~K`KlmM6gk3d2nAm(arjoa+C&#Xjl;N47WN31Z>VG(Q%-jvmXok*^5NkaJcPF zKh$pc!qkupDne^6v{uq>*uUkH*y6<_?d2x%_y=O;lU>yLsGIPKPh%lmlnK-mQ4u}C z6#=A0bOnf)cK5iCv06m%a>N-tC&FFIUR(!!I6M?bR2?dPp?Ajly|P2;Py!u#HVL+B zpo2Efi%3M-;0S+P^&eIaDFj2D_YkuL z8(a#OdOxO1NnUCcoM0XxBQKLuvlLg1xRs;CY0LI#DC7xc@?WpMd5~BSJ^hY}-?EbZfJWaIp$$aQ2-^%v*IFB5(Nz3F&&=n62q0*f7jK#4fP z>RK#*Ce}k8DX#GyOxrz}XZ&fgzO45VEC)d8A79aJ_y=8LqYq5-K7COFa|g?(z^Vk5|4RF{y^bF^QYLOsK`bYs^z!hD^B8 zJ~oY+Qfn;-h~H$3-|V1~)_+1$A!8<7$}x|##$a;4Hu*}tzu`AD%_ICFcs6&3 zrMi5_c$$yIdSf3ux_Ggd-YpU{n$YNXm6(^r()4&m!=FDM$CM0fbQGVEVpl8xWAm? zNCarV784v=V2DpVrGYlRB@X`7CN_>CLVozUIayd|pS!h5KBqofI1wo%1^kO(&SamKhEe=`DO6rRTvTw=5a{kUrJZCuUaS z+hXK9rV7rbwP-}_w}r^L>6Y`8ZbgGkq+dP|@^u>mLrG-CnY_v$h&)!X52wFY{|S#y z8xl@UQx#V}z9I^wpJo3*zyjN?_ee z1uU$s5{o{pP)jx=VQ63@AUIWjTYbLB3RCDc#=!9BP4!2g3r|3QGxwyKds4QibRqD6 z0#irt{7nLXOQnEI2VMQ9=O%~oQHoRL>csHf+Zn5LN7I#fhbwaw? zjx-NM%74Lzcclk-M;Y&^iTAz0`!je#(K~;YiFX6zJso&QfOmNs-ak@%EUXt@xUeJYB+*wgm2W2FAqTcWFPouFuofY-wh_di-7NyjPC};zuv@mE93iP z!uMrtJcROVNZp?pX~new@0--%dJFHZCf-OSmBM>{3U8HRs0WArnTIMIw$}T&HDXy%<(~k0IX+*WR+ZW*6qBx?m=Yt<{~} z4gSPesu(>f<10?knV+FEMMh_EzggmZG_q51YE6dy!IY5U)N6% z;HP_4(ch_+?)U`DVb8vQ-o*aTpI}$m+w8RNTR{F`KE8uz6mf1V ziu13~uY{*gjw<8mSR+Nia9W-;GCM63*zLv@db;*L8^cDaD>>tIFcz8yAFxIAY2tzI z-jQ+@`duG&Cleo3AUPL<`hG7bM&v|F)SLIpm=4(Adckn)zmk}Ip6FIdEVK~mevNcE zi$)r*=$32s>mLCJj@%F~(84BP(sb%`kH7Rh_t3A~XSXKi5lD6r4L_SYihK6sh zpsWsqvdsKnd%MjziOAJZd`oayXPyi)6ZfX&asD}}jPqSg9}hhSId%wRbz(jaeYu)y z-b#st0l}^MUs^HgTg6HFaCqpb%ilEbk@1csIU4SvfvtMZ3AWmb`+>INu#=D43Pvb_ zCN2A|E-c+(i?))pX#|_WiAq`$9$~lm!ejY~P8&%}L@jA@?DqM>pAmWFEp(IoTGFie z12Llke}fXNs!$ieC3v_d{~Uwmucb!wW|_Ct z!d4vqCskChA*w5B4)3n8{2t6mM$6yxH|F)BwxHR}54vsH#92RX*8g&663k~W+ZX$~ zinICsv|56GO2?NarE>*z8-8)vKvq$)Zo@8B;~@f4w@?_vT#%lH`M!^ zU;|Hh4gKy55A(0$d(`P8X@YXY|3rT4@aL+(N)1O9hy3fYxF3(S)3fG?6Ytf`=0+%C zlL!+1=2Y-}hjIxB<~rQKpuSMUO?mga!=I?(DkT??68lWKBpgjV%lEQ1#gR*|zL3v3 zku8+-NmA#|!odx9E&gq5UDA9EMvl7r_yNCr zMp6;lwft=&69#f_X2TJql@FhgyuJyu`rv!UZaSQ5=6fAIW5td94(^d7=#M^nFZ9kP zCSNJS`MGID_*?2Hirs&&GLbmcqU;mNdMCFt(F3+Q#alm--3;m{W{W>L;?Hm%4aST; zwv8=*^?o2#d_h`H&-n;A*}ThnX}%uo!>))UF({`@Q?==x!EcY5Bc)Op`jwP=#==9Y4) zrLxZYe9nC$MR4sZHme3PAaIWe#y;@JTGb|?J3gvx$IHYpj??6GJ>(&8Ra@w-BdHc- z9k{hYznri*K+L{of3!6}YyYk7`~B_vi?R;Lhlfzvngc8GcfWiB|L!>O$w#pR??3Ut z7*)*>Nm0Mss^b1uquxp`)_CA!Dz^WL1-=8Vi8FZI546(HfpaSGm*cL9Swk71w_fqx z;E%?(abUkDKiAA2OvZ*ygo`E*+%nQ@2J4;4EF&~56&V*z-EaLeA}+p9<0|ekf3nZ~ zC>!@;T=&;v2FF`TCCv%@d}lWYndNpOB}j*TKhuBHEVfX-rD|}6I?F>_cL7%7m9!~# z=y#dytQN|FzZq2QZ-OQeZc*wCIRxvsnPn@Mc$$uLGJ zbT*eOG$Nr}I3HRIf2mZ%Ew+>x*Rs9ZN{JEweoEd7x5O___Bapla2U@xeep?zpEjo5 z-!87sMw0g8_b_IEf76+vZ<$96;@(}hkudY{i1E1cq&Xhe8cXF{?_pn_I9flCAzx3B zJ11s))X9X*C2GDWG|`ORkRs~=`-ZWa%<&r}9cmM^g*3YELm`bizXn(9Y44}88LMt$ zD4n6(`-ae9K!|oQU#wy}Z45Uk!)O;g4c-Pt*-AZC871z+$&LDUgtF8JJ(Z5mNmpfg zLhdn9Wrs4$omg6t8)aoj&G+gP-eGfTVRmjbkGZV0I-1zu*ZqH!N!c)lga%~3S3kW4 z19DZ3Gb1nTC8lxfVd`00oTpl33Omk}uoE-`ruB<3;$(B0Ig6=SO6Q7?(=G z0IlKg86t-T*xf4`edo|Hj2;6IcjJb)I;l+Og1|*p$J4)gp78h8?L|YGUle(imG}gW zka*qYL|NlRVP&6LJhWd~iQ;m#L*Z9Y6myN#8uGk0z7}K()}x`d&FPhIq4

wsIXi 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≪rGhPwSFD6Ko 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

JAF2P6g8ut4v%o{A--m?mu4 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

&XL|jH{D#u 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 page. Enter your name and last 8 digits of the credit card number separated by a comma: Your Name,12341234 + +If you've purchased books with more than one credit card, separate the info with a colon: Your Name,12341234:Other Name,23452345 (NOTE: Do NOT put quotes around your name like you do with the original script!!) + +Troubleshooting: +If you find that it's not working for you (imported pdb's are not converted to pmlz format), you can save a lot of time and trouble by trying to add the pdb to Calibre with the command line tools. This will print out a lot of helpful debugging info that can be copied into any online help requests. I'm going to ask you to do it first, anyway, so you might +as well get used to it. ;) + +Open a command prompt (terminal) and change to the directory where the ebook you're trying to import resides. Then type the command "calibredb add your_ebook.pdb". Don't type the quotes and obviously change the 'your_ebook.pdb' to whatever the filename of your book is. Copy the resulting output and paste it into any online help request you make. + +** Note: the Mac version of Calibre doesn't install the command line tools by default. If you go to the 'Preferences' page and click on the miscellaneous button, you'll see the option to install the command line tools. diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/eReaderPDB2PML_plugin.py b/Calibre_Plugins/eReaderPDB2PML_plugin/eReaderPDB2PML_plugin.py new file mode 100644 index 0000000..64b3019 --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/eReaderPDB2PML_plugin.py @@ -0,0 +1,148 @@ +#!/usr/bin/env python + +# eReaderPDB2PML_v01_plugin.py +# Released under the terms of the GNU General Public Licence, version 3 or +# later. +# +# All credit given to The Dark Reverser for the original standalone script. +# I had the much easier job of converting it to Calibre a plugin. +# +# This plugin is meant to convert secure Ereader files (PDB) to unsecured PMLZ files. +# Calibre can then convert it to whatever format you desire. +# It is meant to function without having to install any dependencies... +# other than having Calibre installed, of course. I've included the psyco libraries +# (compiled for each platform) for speed. If your system can use them, great! +# Otherwise, they won't be used and things will just work slower. +# +# Installation: +# Go to Calibre's Preferences page... click on the Plugins button. Use the file +# dialog button to select the plugin's zip file (eReaderPDB2PML_vXX_plugin.zip) and +# click the 'Add' button. You're done. +# +# Configuration: +# Highlight the plugin (eReader PDB 2 PML) and click the +# "Customize Plugin" button on Calibre's Preferences->Plugins page. +# Enter your name and the last 8 digits of the credit card number separated by +# a comma: Your Name,12341234 +# +# If you've purchased books with more than one credit card, separate the info with +# a colon: Your Name,12341234:Other Name,23452345 +# NOTE: Do NOT put quotes around your name like you do with the original script!! +# +# Revision history: +# 0.1 - Initial release + +import sys, os + +from calibre.customize import FileTypePlugin + +class eRdrDeDRM(FileTypePlugin): + name = 'eReader PDB 2 PML' # Name of the plugin + description = 'Removes DRM from secure pdb files. \ + Credit given to The Dark Reverser for the original standalone script.' + supported_platforms = ['linux', 'osx', 'windows'] # Platforms this plugin will run on + author = 'DiapDealer' # The author of this plugin + version = (0, 0, 1) # The version number of this plugin + file_types = set(['pdb']) # The file types that this plugin will be applied to + on_import = True # Run this plugin during the import + + def run(self, path_to_ebook): + from calibre.ptempfile import PersistentTemporaryDirectory + from calibre.constants import iswindows, isosx + pdir = 'windows' if iswindows else 'osx' if isosx else 'linux' + ppath = os.path.join(self.sys_insertion_path, pdir) + sys.path.insert(0, ppath) + #sys.path.append(ppath) + + global bookname, erdr2pml + import erdr2pml + + if 'psyco' in sys.modules: + print 'Using psyco acceleration for %s.' % pdir + else: + print 'NOT using psyco acceleration for %s. Conversion may be slow.' % pdir + + infile = path_to_ebook + bookname = os.path.splitext(os.path.basename(infile))[0] + outdir = PersistentTemporaryDirectory() + pmlzfile = self.temporary_file(bookname + '.pmlz') + + if self.site_customization: + keydata = self.site_customization + ar = keydata.split(':') + for i in ar: + try: + name, cc = i.split(',') + except ValueError: + sys.path.remove(ppath) + print ' Error parsing user supplied data.' + return path_to_ebook + + try: + print "Processing..." + import time + start_time = time.time() + pmlfilepath = self.convertEreaderToPml(infile, name, cc, outdir) + + if pmlfilepath and pmlfilepath != 1: + import zipfile + import shutil + print " Creating PMLZ file" + myZipFile = zipfile.ZipFile(pmlzfile.name,'w',zipfile.ZIP_STORED, False) + list = os.listdir(outdir) + for file in list: + localname = file + filePath = os.path.join(outdir,file) + if os.path.isfile(filePath): + myZipFile.write(filePath, localname) + elif os.path.isdir(filePath): + imageList = os.listdir(filePath) + localimgdir = os.path.basename(filePath) + for image in imageList: + localname = os.path.join(localimgdir,image) + imagePath = os.path.join(filePath,image) + if os.path.isfile(imagePath): + myZipFile.write(imagePath, localname) + myZipFile.close() + end_time = time.time() + search_time = end_time - start_time + print 'elapsed time: %.2f seconds' % (search_time, ) + print "done" + return pmlzfile.name + else: + raise ValueError('Error Creating PML file.') + except ValueError, e: + print "Error: %s" % e + pass + raise Exception('Couldn\'t decrypt pdb file.') + else: + raise Exception('No name and CC# provided.') + + def convertEreaderToPml(self, infile, name, cc, outdir): + + print " Decoding File" + sect = erdr2pml.Sectionizer(infile, 'PNRdPPrs') + er = erdr2pml.EreaderProcessor(sect.loadSection, name, cc) + + if er.getNumImages() > 0: + print " Extracting images" + #imagedir = bookname + '_img/' + imagedir = 'images/' + imagedirpath = os.path.join(outdir,imagedir) + if not os.path.exists(imagedirpath): + os.makedirs(imagedirpath) + for i in xrange(er.getNumImages()): + name, contents = er.getImage(i) + file(os.path.join(imagedirpath, name), 'wb').write(contents) + + print " Extracting pml" + pml_string = er.getText() + pmlfilename = bookname + ".pml" + try: + file(os.path.join(outdir, pmlfilename),'wb').write(erdr2pml.cleanPML(pml_string)) + return os.path.join(outdir, pmlfilename) + except: + return 1 + + def customization_help(self, gui=False): + return 'Enter Account Name & Last 8 digits of Credit Card number (separate with a comma)' diff --git a/eReader_Tools/lib/erdr2pml.py b/Calibre_Plugins/eReaderPDB2PML_plugin/erdr2pml.py similarity index 100% rename from eReader_Tools/lib/erdr2pml.py rename to Calibre_Plugins/eReaderPDB2PML_plugin/erdr2pml.py diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/all-wcprops b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/all-wcprops new file mode 100644 index 0000000..881cf30 --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/all-wcprops @@ -0,0 +1,47 @@ +K 25 +svn:wc:ra_dav:version-url +V 41 +/svn/!svn/ver/70200/psyco/dist/py-support +END +core.py +K 25 +svn:wc:ra_dav:version-url +V 49 +/svn/!svn/ver/70200/psyco/dist/py-support/core.py +END +support.py +K 25 +svn:wc:ra_dav:version-url +V 52 +/svn/!svn/ver/49315/psyco/dist/py-support/support.py +END +classes.py +K 25 +svn:wc:ra_dav:version-url +V 52 +/svn/!svn/ver/35003/psyco/dist/py-support/classes.py +END +__init__.py +K 25 +svn:wc:ra_dav:version-url +V 53 +/svn/!svn/ver/35003/psyco/dist/py-support/__init__.py +END +logger.py +K 25 +svn:wc:ra_dav:version-url +V 51 +/svn/!svn/ver/23284/psyco/dist/py-support/logger.py +END +kdictproxy.py +K 25 +svn:wc:ra_dav:version-url +V 55 +/svn/!svn/ver/35003/psyco/dist/py-support/kdictproxy.py +END +profiler.py +K 25 +svn:wc:ra_dav:version-url +V 53 +/svn/!svn/ver/70200/psyco/dist/py-support/profiler.py +END diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/dir-prop-base b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/dir-prop-base new file mode 100644 index 0000000..a87157b --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/dir-prop-base @@ -0,0 +1,7 @@ +K 10 +svn:ignore +V 14 +*~ +*.pyc +*.pyo +END diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/entries b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/entries new file mode 100644 index 0000000..936b265 --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/entries @@ -0,0 +1,266 @@ +10 + +dir +78269 +http://codespeak.net/svn/psyco/dist/py-support +http://codespeak.net/svn + + + +2009-12-18T16:35:35.119276Z +70200 +arigo +has-props + + + + + + + + + + + + + +fd0d7bf2-dfb6-0310-8d31-b7ecfe96aada + +core.py +file + + + + +2010-10-25T15:10:42.000000Z +3b362177a839893c9e867880b3a7cef3 +2009-12-18T16:35:35.119276Z +70200 +arigo +has-props + + + + + + + + + + + + + + + + + + + + +8144 + +support.py +file + + + + +2010-10-25T15:10:42.000000Z +b0551e975d774f2f7f58a29ed4b6b90e +2007-12-03T12:27:25.632574Z +49315 +arigo +has-props + + + + + + + + + + + + + + + + + + + + +6043 + +classes.py +file + + + + +2010-10-25T15:10:42.000000Z +5932ed955198d16ec17285dfb195d341 +2006-11-26T13:03:26.949973Z +35003 +arigo +has-props + + + + + + + + + + + + + + + + + + + + +1440 + +__init__.py +file + + + + +2010-10-25T15:10:42.000000Z +219582b5182dfa38a9119d059a71965f +2006-11-26T13:03:26.949973Z +35003 +arigo +has-props + + + + + + + + + + + + + + + + + + + + +1895 + +logger.py +file + + + + +2010-10-25T15:10:42.000000Z +aa21f905df036af43082e1ea2a2561ee +2006-02-13T15:02:51.744168Z +23284 +arigo +has-props + + + + + + + + + + + + + + + + + + + + +2678 + +kdictproxy.py +file + + + + +2010-10-25T15:10:42.000000Z +1c8611748dcee5b29848bf25be3ec473 +2006-11-26T13:03:26.949973Z +35003 +arigo +has-props + + + + + + + + + + + + + + + + + + + + +4369 + +profiler.py +file + + + + +2010-10-25T15:10:42.000000Z +858162366cbc39cd9e249e35e6f510c4 +2009-12-18T16:35:35.119276Z +70200 +arigo +has-props + + + + + + + + + + + + + + + + + + + + +11238 + diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/__init__.py.svn-base b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/__init__.py.svn-base new file mode 100644 index 0000000..7b57b30 --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/__init__.py.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 23 +Author Date Id Revision +END diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/classes.py.svn-base b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/classes.py.svn-base new file mode 100644 index 0000000..7b57b30 --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/classes.py.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 23 +Author Date Id Revision +END diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/core.py.svn-base b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/core.py.svn-base new file mode 100644 index 0000000..7b57b30 --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/core.py.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 23 +Author Date Id Revision +END diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/kdictproxy.py.svn-base b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/kdictproxy.py.svn-base new file mode 100644 index 0000000..7b57b30 --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/kdictproxy.py.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 23 +Author Date Id Revision +END diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/logger.py.svn-base b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/logger.py.svn-base new file mode 100644 index 0000000..7b57b30 --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/logger.py.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 23 +Author Date Id Revision +END diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/profiler.py.svn-base b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/profiler.py.svn-base new file mode 100644 index 0000000..7b57b30 --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/profiler.py.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 23 +Author Date Id Revision +END diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/support.py.svn-base b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/support.py.svn-base new file mode 100644 index 0000000..7b57b30 --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/prop-base/support.py.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 23 +Author Date Id Revision +END diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/__init__.py.svn-base b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/__init__.py.svn-base new file mode 100644 index 0000000..d25e197 --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/__init__.py.svn-base @@ -0,0 +1,54 @@ +########################################################################### +# +# Psyco top-level file of the Psyco package. +# Copyright (C) 2001-2002 Armin Rigo et.al. + +"""Psyco -- the Python Specializing Compiler. + +Typical usage: add the following lines to your application's main module, +preferably after the other imports: + +try: + import psyco + psyco.full() +except ImportError: + print 'Psyco not installed, the program will just run slower' +""" +########################################################################### + + +# +# This module is present to make 'psyco' a package and to +# publish the main functions and variables. +# +# More documentation can be found in core.py. +# + + +# Try to import the dynamic-loading _psyco and report errors +try: + import _psyco +except ImportError, e: + extramsg = '' + import sys, imp + try: + file, filename, (suffix, mode, type) = imp.find_module('_psyco', __path__) + except ImportError: + ext = [suffix for suffix, mode, type in imp.get_suffixes() + if type == imp.C_EXTENSION] + if ext: + extramsg = (" (cannot locate the compiled extension '_psyco%s' " + "in the package path '%s')" % (ext[0], '; '.join(__path__))) + else: + extramsg = (" (check that the compiled extension '%s' is for " + "the correct Python version; this is Python %s)" % + (filename, sys.version.split()[0])) + raise ImportError, str(e) + extramsg + +# Publish important data by importing them in the package +from support import __version__, error, warning, _getrealframe, _getemulframe +from support import version_info, __version__ as hexversion +from core import full, profile, background, runonly, stop, cannotcompile +from core import log, bind, unbind, proxy, unproxy, dumpcodebuf +from _psyco import setfilter +from _psyco import compact, compacttype diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/classes.py.svn-base b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/classes.py.svn-base new file mode 100644 index 0000000..0563f84 --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/classes.py.svn-base @@ -0,0 +1,42 @@ +########################################################################### +# +# Psyco class support module. +# Copyright (C) 2001-2002 Armin Rigo et.al. + +"""Psyco class support module. + +'psyco.classes.psyobj' is an alternate Psyco-optimized root for classes. +Any class inheriting from it or using the metaclass '__metaclass__' might +get optimized specifically for Psyco. It is equivalent to call +psyco.bind() on the class object after its creation. + +Importing everything from psyco.classes in a module will import the +'__metaclass__' name, so all classes defined after a + + from psyco.classes import * + +will automatically use the Psyco-optimized metaclass. +""" +########################################################################### + +__all__ = ['psyobj', 'psymetaclass', '__metaclass__'] + + +from _psyco import compacttype +import core +from types import FunctionType + +class psymetaclass(compacttype): + "Psyco-optimized meta-class. Turns all methods into Psyco proxies." + + def __new__(cls, name, bases, dict): + bindlist = dict.get('__psyco__bind__') + if bindlist is None: + bindlist = [key for key, value in dict.items() + if isinstance(value, FunctionType)] + for attr in bindlist: + dict[attr] = core.proxy(dict[attr]) + return super(psymetaclass, cls).__new__(cls, name, bases, dict) + +psyobj = psymetaclass("psyobj", (), {}) +__metaclass__ = psymetaclass diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/core.py.svn-base b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/core.py.svn-base new file mode 100644 index 0000000..995c9ae --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/core.py.svn-base @@ -0,0 +1,231 @@ +########################################################################### +# +# Psyco main functions. +# Copyright (C) 2001-2002 Armin Rigo et.al. + +"""Psyco main functions. + +Here are the routines that you can use from your applications. +These are mostly interfaces to the C core, but they depend on +the Python version. + +You can use these functions from the 'psyco' module instead of +'psyco.core', e.g. + + import psyco + psyco.log('/tmp/psyco.log') + psyco.profile() +""" +########################################################################### + +import _psyco +import types +from support import * + +newfunction = types.FunctionType +newinstancemethod = types.MethodType + + +# Default charge profiler values +default_watermark = 0.09 # between 0.0 (0%) and 1.0 (100%) +default_halflife = 0.5 # seconds +default_pollfreq_profile = 20 # Hz +default_pollfreq_background = 100 # Hz -- a maximum for sleep's resolution +default_parentframe = 0.25 # should not be more than 0.5 (50%) + + +def full(memory=None, time=None, memorymax=None, timemax=None): + """Compile as much as possible. + +Typical use is for small scripts performing intensive computations +or string handling.""" + import profiler + p = profiler.FullCompiler() + p.run(memory, time, memorymax, timemax) + + +def profile(watermark = default_watermark, + halflife = default_halflife, + pollfreq = default_pollfreq_profile, + parentframe = default_parentframe, + memory=None, time=None, memorymax=None, timemax=None): + """Turn on profiling. + +The 'watermark' parameter controls how easily running functions will +be compiled. The smaller the value, the more functions are compiled.""" + import profiler + p = profiler.ActivePassiveProfiler(watermark, halflife, + pollfreq, parentframe) + p.run(memory, time, memorymax, timemax) + + +def background(watermark = default_watermark, + halflife = default_halflife, + pollfreq = default_pollfreq_background, + parentframe = default_parentframe, + memory=None, time=None, memorymax=None, timemax=None): + """Turn on passive profiling. + +This is a very lightweight mode in which only intensively computing +functions can be detected. The smaller the 'watermark', the more functions +are compiled.""" + import profiler + p = profiler.PassiveProfiler(watermark, halflife, pollfreq, parentframe) + p.run(memory, time, memorymax, timemax) + + +def runonly(memory=None, time=None, memorymax=None, timemax=None): + """Nonprofiler. + +XXX check if this is useful and document.""" + import profiler + p = profiler.RunOnly() + p.run(memory, time, memorymax, timemax) + + +def stop(): + """Turn off all automatic compilation. bind() calls remain in effect.""" + import profiler + profiler.go([]) + + +def log(logfile='', mode='w', top=10): + """Enable logging to the given file. + +If the file name is unspecified, a default name is built by appending +a 'log-psyco' extension to the main script name. + +Mode is 'a' to append to a possibly existing file or 'w' to overwrite +an existing file. Note that the log file may grow quickly in 'a' mode.""" + import profiler, logger + if not logfile: + import os + logfile, dummy = os.path.splitext(sys.argv[0]) + if os.path.basename(logfile): + logfile += '.' + logfile += 'log-psyco' + if hasattr(_psyco, 'VERBOSE_LEVEL'): + print >> sys.stderr, 'psyco: logging to', logfile + # logger.current should be a real file object; subtle problems + # will show up if its write() and flush() methods are written + # in Python, as Psyco will invoke them while compiling. + logger.current = open(logfile, mode) + logger.print_charges = top + profiler.logger = logger + logger.writedate('Logging started') + cannotcompile(logger.psycowrite) + _psyco.statwrite(logger=logger.psycowrite) + + +def bind(x, rec=None): + """Enable compilation of the given function, method, or class object. + +If C is a class (or anything with a '__dict__' attribute), bind(C) will +rebind all functions and methods found in C.__dict__ (which means, for +classes, all methods defined in the class but not in its parents). + +The optional second argument specifies the number of recursive +compilation levels: all functions called by func are compiled +up to the given depth of indirection.""" + if isinstance(x, types.MethodType): + x = x.im_func + if isinstance(x, types.FunctionType): + if rec is None: + x.func_code = _psyco.proxycode(x) + else: + x.func_code = _psyco.proxycode(x, rec) + return + if hasattr(x, '__dict__'): + funcs = [o for o in x.__dict__.values() + if isinstance(o, types.MethodType) + or isinstance(o, types.FunctionType)] + if not funcs: + raise error, ("nothing bindable found in %s object" % + type(x).__name__) + for o in funcs: + bind(o, rec) + return + raise TypeError, "cannot bind %s objects" % type(x).__name__ + + +def unbind(x): + """Reverse of bind().""" + if isinstance(x, types.MethodType): + x = x.im_func + if isinstance(x, types.FunctionType): + try: + f = _psyco.unproxycode(x.func_code) + except error: + pass + else: + x.func_code = f.func_code + return + if hasattr(x, '__dict__'): + for o in x.__dict__.values(): + if (isinstance(o, types.MethodType) + or isinstance(o, types.FunctionType)): + unbind(o) + return + raise TypeError, "cannot unbind %s objects" % type(x).__name__ + + +def proxy(x, rec=None): + """Return a Psyco-enabled copy of the function. + +The original function is still available for non-compiled calls. +The optional second argument specifies the number of recursive +compilation levels: all functions called by func are compiled +up to the given depth of indirection.""" + if isinstance(x, types.FunctionType): + if rec is None: + code = _psyco.proxycode(x) + else: + code = _psyco.proxycode(x, rec) + return newfunction(code, x.func_globals, x.func_name) + if isinstance(x, types.MethodType): + p = proxy(x.im_func, rec) + return newinstancemethod(p, x.im_self, x.im_class) + raise TypeError, "cannot proxy %s objects" % type(x).__name__ + + +def unproxy(proxy): + """Return a new copy of the original function of method behind a proxy. +The result behaves like the original function in that calling it +does not trigger compilation nor execution of any compiled code.""" + if isinstance(proxy, types.FunctionType): + return _psyco.unproxycode(proxy.func_code) + if isinstance(proxy, types.MethodType): + f = unproxy(proxy.im_func) + return newinstancemethod(f, proxy.im_self, proxy.im_class) + raise TypeError, "%s objects cannot be proxies" % type(proxy).__name__ + + +def cannotcompile(x): + """Instruct Psyco never to compile the given function, method +or code object.""" + if isinstance(x, types.MethodType): + x = x.im_func + if isinstance(x, types.FunctionType): + x = x.func_code + if isinstance(x, types.CodeType): + _psyco.cannotcompile(x) + else: + raise TypeError, "unexpected %s object" % type(x).__name__ + + +def dumpcodebuf(): + """Write in file psyco.dump a copy of the emitted machine code, +provided Psyco was compiled with a non-zero CODE_DUMP. +See py-utils/httpxam.py to examine psyco.dump.""" + if hasattr(_psyco, 'dumpcodebuf'): + _psyco.dumpcodebuf() + + +########################################################################### +# Psyco variables +# error * the error raised by Psyco +# warning * the warning raised by Psyco +# __in_psyco__ * a new built-in variable which is always zero, but which +# Psyco special-cases by returning 1 instead. So +# __in_psyco__ can be used in a function to know if +# that function is being executed by Psyco or not. diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/kdictproxy.py.svn-base b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/kdictproxy.py.svn-base new file mode 100644 index 0000000..c764e5e --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/kdictproxy.py.svn-base @@ -0,0 +1,133 @@ +########################################################################### +# +# Support code for the 'psyco.compact' type. + +from __future__ import generators + +try: + from UserDict import DictMixin +except ImportError: + + # backported from Python 2.3 to Python 2.2 + class DictMixin: + # Mixin defining all dictionary methods for classes that already have + # a minimum dictionary interface including getitem, setitem, delitem, + # and keys. Without knowledge of the subclass constructor, the mixin + # does not define __init__() or copy(). In addition to the four base + # methods, progressively more efficiency comes with defining + # __contains__(), __iter__(), and iteritems(). + + # second level definitions support higher levels + def __iter__(self): + for k in self.keys(): + yield k + def has_key(self, key): + try: + value = self[key] + except KeyError: + return False + return True + def __contains__(self, key): + return self.has_key(key) + + # third level takes advantage of second level definitions + def iteritems(self): + for k in self: + yield (k, self[k]) + def iterkeys(self): + return self.__iter__() + + # fourth level uses definitions from lower levels + def itervalues(self): + for _, v in self.iteritems(): + yield v + def values(self): + return [v for _, v in self.iteritems()] + def items(self): + return list(self.iteritems()) + def clear(self): + for key in self.keys(): + del self[key] + def setdefault(self, key, default): + try: + return self[key] + except KeyError: + self[key] = default + return default + def pop(self, key, *args): + if len(args) > 1: + raise TypeError, "pop expected at most 2 arguments, got "\ + + repr(1 + len(args)) + try: + value = self[key] + except KeyError: + if args: + return args[0] + raise + del self[key] + return value + def popitem(self): + try: + k, v = self.iteritems().next() + except StopIteration: + raise KeyError, 'container is empty' + del self[k] + return (k, v) + def update(self, other): + # Make progressively weaker assumptions about "other" + if hasattr(other, 'iteritems'): # iteritems saves memory and lookups + for k, v in other.iteritems(): + self[k] = v + elif hasattr(other, '__iter__'): # iter saves memory + for k in other: + self[k] = other[k] + else: + for k in other.keys(): + self[k] = other[k] + def get(self, key, default=None): + try: + return self[key] + except KeyError: + return default + def __repr__(self): + return repr(dict(self.iteritems())) + def __cmp__(self, other): + if other is None: + return 1 + if isinstance(other, DictMixin): + other = dict(other.iteritems()) + return cmp(dict(self.iteritems()), other) + def __len__(self): + return len(self.keys()) + +########################################################################### + +from _psyco import compact + + +class compactdictproxy(DictMixin): + + def __init__(self, ko): + self._ko = ko # compact object of which 'self' is the dict + + def __getitem__(self, key): + return compact.__getslot__(self._ko, key) + + def __setitem__(self, key, value): + compact.__setslot__(self._ko, key, value) + + def __delitem__(self, key): + compact.__delslot__(self._ko, key) + + def keys(self): + return compact.__members__.__get__(self._ko) + + def clear(self): + keys = self.keys() + keys.reverse() + for key in keys: + del self[key] + + def __repr__(self): + keys = ', '.join(self.keys()) + return '' % (keys,) diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/logger.py.svn-base b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/logger.py.svn-base new file mode 100644 index 0000000..a3c5219 --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/logger.py.svn-base @@ -0,0 +1,96 @@ +########################################################################### +# +# Psyco logger. +# Copyright (C) 2001-2002 Armin Rigo et.al. + +"""Psyco logger. + +See log() in core.py. +""" +########################################################################### + + +import _psyco +from time import time, localtime, strftime + + +current = None +print_charges = 10 +dump_delay = 0.2 +dump_last = 0.0 + +def write(s, level): + t = time() + f = t-int(t) + try: + current.write("%s.%02d %-*s%s\n" % ( + strftime("%X", localtime(int(t))), + int(f*100.0), 63-level, s, + "%"*level)) + current.flush() + except (OSError, IOError): + pass + +def psycowrite(s): + t = time() + f = t-int(t) + try: + current.write("%s.%02d %-*s%s\n" % ( + strftime("%X", localtime(int(t))), + int(f*100.0), 60, s.strip(), + "% %")) + current.flush() + except (OSError, IOError): + pass + +##def writelines(lines, level=0): +## if lines: +## t = time() +## f = t-int(t) +## timedesc = strftime("%x %X", localtime(int(t))) +## print >> current, "%s.%03d %-*s %s" % ( +## timedesc, int(f*1000), +## 50-level, lines[0], +## "+"*level) +## timedesc = " " * (len(timedesc)+5) +## for line in lines[1:]: +## print >> current, timedesc, line + +def writememory(): + write("memory usage: %d+ kb" % _psyco.memory(), 1) + +def dumpcharges(): + global dump_last + if print_charges: + t = time() + if not (dump_last <= t < dump_last+dump_delay): + if t <= dump_last+1.5*dump_delay: + dump_last += dump_delay + else: + dump_last = t + #write("%s: charges:" % who, 0) + lst = _psyco.stattop(print_charges) + if lst: + f = t-int(t) + lines = ["%s.%02d ______\n" % ( + strftime("%X", localtime(int(t))), + int(f*100.0))] + i = 1 + for co, charge in lst: + detail = co.co_filename + if len(detail) > 19: + detail = '...' + detail[-17:] + lines.append(" #%-3d |%4.1f %%| %-26s%20s:%d\n" % + (i, charge*100.0, co.co_name, detail, + co.co_firstlineno)) + i += 1 + current.writelines(lines) + current.flush() + +def writefinalstats(): + dumpcharges() + writememory() + writedate("program exit") + +def writedate(msg): + write('%s, %s' % (msg, strftime("%x")), 20) diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/profiler.py.svn-base b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/profiler.py.svn-base new file mode 100644 index 0000000..f1d06f1 --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/profiler.py.svn-base @@ -0,0 +1,379 @@ +########################################################################### +# +# Psyco profiler (Python part). +# Copyright (C) 2001-2002 Armin Rigo et.al. + +"""Psyco profiler (Python part). + +The implementation of the non-time-critical parts of the profiler. +See profile() and full() in core.py for the easy interface. +""" +########################################################################### + +import _psyco +from support import * +import math, time, types, atexit +now = time.time +try: + import thread +except ImportError: + import dummy_thread as thread + + +# current profiler instance +current = None + +# enabled profilers, in order of priority +profilers = [] + +# logger module (when enabled by core.log()) +logger = None + +# a lock for a thread-safe go() +go_lock = thread.allocate_lock() + +def go(stop=0): + # run the highest-priority profiler in 'profilers' + global current + go_lock.acquire() + try: + prev = current + if stop: + del profilers[:] + if prev: + if profilers and profilers[0] is prev: + return # best profiler already running + prev.stop() + current = None + for p in profilers[:]: + if p.start(): + current = p + if logger: # and p is not prev: + logger.write("%s: starting" % p.__class__.__name__, 5) + return + finally: + go_lock.release() + # no profiler is running now + if stop: + if logger: + logger.writefinalstats() + else: + tag2bind() + +atexit.register(go, 1) + + +def buildfncache(globals, cache): + if hasattr(types.IntType, '__dict__'): + clstypes = (types.ClassType, types.TypeType) + else: + clstypes = types.ClassType + for x in globals.values(): + if isinstance(x, types.MethodType): + x = x.im_func + if isinstance(x, types.FunctionType): + cache[x.func_code] = x, '' + elif isinstance(x, clstypes): + for y in x.__dict__.values(): + if isinstance(y, types.MethodType): + y = y.im_func + if isinstance(y, types.FunctionType): + cache[y.func_code] = y, x.__name__ + +# code-to-function mapping (cache) +function_cache = {} + +def trytobind(co, globals, log=1): + try: + f, clsname = function_cache[co] + except KeyError: + buildfncache(globals, function_cache) + try: + f, clsname = function_cache[co] + except KeyError: + if logger: + logger.write('warning: cannot find function %s in %s' % + (co.co_name, globals.get('__name__', '?')), 3) + return # give up + if logger and log: + modulename = globals.get('__name__', '?') + if clsname: + modulename += '.' + clsname + logger.write('bind function: %s.%s' % (modulename, co.co_name), 1) + f.func_code = _psyco.proxycode(f) + + +# the list of code objects that have been tagged +tagged_codes = [] + +def tag(co, globals): + if logger: + try: + f, clsname = function_cache[co] + except KeyError: + buildfncache(globals, function_cache) + try: + f, clsname = function_cache[co] + except KeyError: + clsname = '' # give up + modulename = globals.get('__name__', '?') + if clsname: + modulename += '.' + clsname + logger.write('tag function: %s.%s' % (modulename, co.co_name), 1) + tagged_codes.append((co, globals)) + _psyco.turbo_frame(co) + _psyco.turbo_code(co) + +def tag2bind(): + if tagged_codes: + if logger: + logger.write('profiling stopped, binding %d functions' % + len(tagged_codes), 2) + for co, globals in tagged_codes: + trytobind(co, globals, 0) + function_cache.clear() + del tagged_codes[:] + + +class Profiler: + MemoryTimerResolution = 0.103 + + def run(self, memory, time, memorymax, timemax): + self.memory = memory + self.memorymax = memorymax + self.time = time + if timemax is None: + self.endtime = None + else: + self.endtime = now() + timemax + self.alarms = [] + profilers.append(self) + go() + + def start(self): + curmem = _psyco.memory() + memlimits = [] + if self.memorymax is not None: + if curmem >= self.memorymax: + if logger: + logger.writememory() + return self.limitreached('memorymax') + memlimits.append(self.memorymax) + if self.memory is not None: + if self.memory <= 0: + if logger: + logger.writememory() + return self.limitreached('memory') + memlimits.append(curmem + self.memory) + self.memory_at_start = curmem + + curtime = now() + timelimits = [] + if self.endtime is not None: + if curtime >= self.endtime: + return self.limitreached('timemax') + timelimits.append(self.endtime - curtime) + if self.time is not None: + if self.time <= 0.0: + return self.limitreached('time') + timelimits.append(self.time) + self.time_at_start = curtime + + try: + self.do_start() + except error, e: + if logger: + logger.write('%s: disabled by psyco.error:' % ( + self.__class__.__name__), 4) + logger.write(' %s' % str(e), 3) + return 0 + + if memlimits: + self.memlimits_args = (time.sleep, (self.MemoryTimerResolution,), + self.check_memory, (min(memlimits),)) + self.alarms.append(_psyco.alarm(*self.memlimits_args)) + if timelimits: + self.alarms.append(_psyco.alarm(time.sleep, (min(timelimits),), + self.time_out)) + return 1 + + def stop(self): + for alarm in self.alarms: + alarm.stop(0) + for alarm in self.alarms: + alarm.stop(1) # wait for parallel threads to stop + del self.alarms[:] + if self.time is not None: + self.time -= now() - self.time_at_start + if self.memory is not None: + self.memory -= _psyco.memory() - self.memory_at_start + + try: + self.do_stop() + except error: + return 0 + return 1 + + def check_memory(self, limit): + if _psyco.memory() < limit: + return self.memlimits_args + go() + + def time_out(self): + self.time = 0.0 + go() + + def limitreached(self, limitname): + try: + profilers.remove(self) + except ValueError: + pass + if logger: + logger.write('%s: disabled (%s limit reached)' % ( + self.__class__.__name__, limitname), 4) + return 0 + + +class FullCompiler(Profiler): + + def do_start(self): + _psyco.profiling('f') + + def do_stop(self): + _psyco.profiling('.') + + +class RunOnly(Profiler): + + def do_start(self): + _psyco.profiling('n') + + def do_stop(self): + _psyco.profiling('.') + + +class ChargeProfiler(Profiler): + + def __init__(self, watermark, parentframe): + self.watermark = watermark + self.parent2 = parentframe * 2.0 + self.lock = thread.allocate_lock() + + def init_charges(self): + _psyco.statwrite(watermark = self.watermark, + parent2 = self.parent2) + + def do_stop(self): + _psyco.profiling('.') + _psyco.statwrite(callback = None) + + +class ActiveProfiler(ChargeProfiler): + + def active_start(self): + _psyco.profiling('p') + + def do_start(self): + self.init_charges() + self.active_start() + _psyco.statwrite(callback = self.charge_callback) + + def charge_callback(self, frame, charge): + tag(frame.f_code, frame.f_globals) + + +class PassiveProfiler(ChargeProfiler): + + initial_charge_unit = _psyco.statread('unit') + reset_stats_after = 120 # half-lives (maximum 200!) + reset_limit = initial_charge_unit * (2.0 ** reset_stats_after) + + def __init__(self, watermark, halflife, pollfreq, parentframe): + ChargeProfiler.__init__(self, watermark, parentframe) + self.pollfreq = pollfreq + # self.progress is slightly more than 1.0, and computed so that + # do_profile() will double the change_unit every 'halflife' seconds. + self.progress = 2.0 ** (1.0 / (halflife * pollfreq)) + + def reset(self): + _psyco.statwrite(unit = self.initial_charge_unit, callback = None) + _psyco.statreset() + if logger: + logger.write("%s: resetting stats" % self.__class__.__name__, 1) + + def passive_start(self): + self.passivealarm_args = (time.sleep, (1.0 / self.pollfreq,), + self.do_profile) + self.alarms.append(_psyco.alarm(*self.passivealarm_args)) + + def do_start(self): + tag2bind() + self.init_charges() + self.passive_start() + + def do_profile(self): + _psyco.statcollect() + if logger: + logger.dumpcharges() + nunit = _psyco.statread('unit') * self.progress + if nunit > self.reset_limit: + self.reset() + else: + _psyco.statwrite(unit = nunit, callback = self.charge_callback) + return self.passivealarm_args + + def charge_callback(self, frame, charge): + trytobind(frame.f_code, frame.f_globals) + + +class ActivePassiveProfiler(PassiveProfiler, ActiveProfiler): + + def do_start(self): + self.init_charges() + self.active_start() + self.passive_start() + + def charge_callback(self, frame, charge): + tag(frame.f_code, frame.f_globals) + + + +# +# we register our own version of sys.settrace(), sys.setprofile() +# and thread.start_new_thread(). +# + +def psyco_settrace(*args, **kw): + "This is the Psyco-aware version of sys.settrace()." + result = original_settrace(*args, **kw) + go() + return result + +def psyco_setprofile(*args, **kw): + "This is the Psyco-aware version of sys.setprofile()." + result = original_setprofile(*args, **kw) + go() + return result + +def psyco_thread_stub(callable, args, kw): + _psyco.statcollect() + if kw is None: + return callable(*args) + else: + return callable(*args, **kw) + +def psyco_start_new_thread(callable, args, kw=None): + "This is the Psyco-aware version of thread.start_new_thread()." + return original_start_new_thread(psyco_thread_stub, (callable, args, kw)) + +original_settrace = sys.settrace +original_setprofile = sys.setprofile +original_start_new_thread = thread.start_new_thread +sys.settrace = psyco_settrace +sys.setprofile = psyco_setprofile +thread.start_new_thread = psyco_start_new_thread +# hack to patch threading._start_new_thread if the module is +# already loaded +if ('threading' in sys.modules and + hasattr(sys.modules['threading'], '_start_new_thread')): + sys.modules['threading']._start_new_thread = psyco_start_new_thread diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/support.py.svn-base b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/support.py.svn-base new file mode 100644 index 0000000..387321a --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/.svn/text-base/support.py.svn-base @@ -0,0 +1,191 @@ +########################################################################### +# +# Psyco general support module. +# Copyright (C) 2001-2002 Armin Rigo et.al. + +"""Psyco general support module. + +For internal use. +""" +########################################################################### + +import sys, _psyco, __builtin__ + +error = _psyco.error +class warning(Warning): + pass + +_psyco.NoLocalsWarning = warning + +def warn(msg): + from warnings import warn + warn(msg, warning, stacklevel=2) + +# +# Version checks +# +__version__ = 0x010600f0 +if _psyco.PSYVER != __version__: + raise error, "version mismatch between Psyco parts, reinstall it" + +version_info = (__version__ >> 24, + (__version__ >> 16) & 0xff, + (__version__ >> 8) & 0xff, + {0xa0: 'alpha', + 0xb0: 'beta', + 0xc0: 'candidate', + 0xf0: 'final'}[__version__ & 0xf0], + __version__ & 0xf) + + +VERSION_LIMITS = [0x02020200, # 2.2.2 + 0x02030000, # 2.3 + 0x02040000] # 2.4 + +if ([v for v in VERSION_LIMITS if v <= sys.hexversion] != + [v for v in VERSION_LIMITS if v <= _psyco.PYVER ]): + if sys.hexversion < VERSION_LIMITS[0]: + warn("Psyco requires Python version 2.2.2 or later") + else: + warn("Psyco version does not match Python version. " + "Psyco must be updated or recompiled") + + +if hasattr(_psyco, 'ALL_CHECKS') and hasattr(_psyco, 'VERBOSE_LEVEL'): + print >> sys.stderr, ('psyco: running in debugging mode on %s' % + _psyco.PROCESSOR) + + +########################################################################### +# sys._getframe() gives strange results on a mixed Psyco- and Python-style +# stack frame. Psyco provides a replacement that partially emulates Python +# frames from Psyco frames. The new sys._getframe() may return objects of +# a custom "Psyco frame" type, which is a subtype of the normal frame type. +# +# The same problems require some other built-in functions to be replaced +# as well. Note that the local variables are not available in any +# dictionary with Psyco. + + +class Frame: + pass + + +class PythonFrame(Frame): + + def __init__(self, frame): + self.__dict__.update({ + '_frame': frame, + }) + + def __getattr__(self, attr): + if attr == 'f_back': + try: + result = embedframe(_psyco.getframe(self._frame)) + except ValueError: + result = None + except error: + warn("f_back is skipping dead Psyco frames") + result = self._frame.f_back + self.__dict__['f_back'] = result + return result + else: + return getattr(self._frame, attr) + + def __setattr__(self, attr, value): + setattr(self._frame, attr, value) + + def __delattr__(self, attr): + delattr(self._frame, attr) + + +class PsycoFrame(Frame): + + def __init__(self, tag): + self.__dict__.update({ + '_tag' : tag, + 'f_code' : tag[0], + 'f_globals': tag[1], + }) + + def __getattr__(self, attr): + if attr == 'f_back': + try: + result = embedframe(_psyco.getframe(self._tag)) + except ValueError: + result = None + elif attr == 'f_lineno': + result = self.f_code.co_firstlineno # better than nothing + elif attr == 'f_builtins': + result = self.f_globals['__builtins__'] + elif attr == 'f_restricted': + result = self.f_builtins is not __builtins__ + elif attr == 'f_locals': + raise AttributeError, ("local variables of functions run by Psyco " + "cannot be accessed in any way, sorry") + else: + raise AttributeError, ("emulated Psyco frames have " + "no '%s' attribute" % attr) + self.__dict__[attr] = result + return result + + def __setattr__(self, attr, value): + raise AttributeError, "Psyco frame objects are read-only" + + def __delattr__(self, attr): + if attr == 'f_trace': + # for bdb which relies on CPython frames exhibiting a slightly + # buggy behavior: you can 'del f.f_trace' as often as you like + # even without having set it previously. + return + raise AttributeError, "Psyco frame objects are read-only" + + +def embedframe(result): + if type(result) is type(()): + return PsycoFrame(result) + else: + return PythonFrame(result) + +def _getframe(depth=0): + """Return a frame object from the call stack. This is a replacement for +sys._getframe() which is aware of Psyco frames. + +The returned objects are instances of either PythonFrame or PsycoFrame +instead of being real Python-level frame object, so that they can emulate +the common attributes of frame objects. + +The original sys._getframe() ignoring Psyco frames altogether is stored in +psyco._getrealframe(). See also psyco._getemulframe().""" + # 'depth+1' to account for this _getframe() Python function + return embedframe(_psyco.getframe(depth+1)) + +def _getemulframe(depth=0): + """As _getframe(), but the returned objects are real Python frame objects +emulating Psyco frames. Some of their attributes can be wrong or missing, +however.""" + # 'depth+1' to account for this _getemulframe() Python function + return _psyco.getframe(depth+1, 1) + +def patch(name, module=__builtin__): + f = getattr(_psyco, name) + org = getattr(module, name) + if org is not f: + setattr(module, name, f) + setattr(_psyco, 'original_' + name, org) + +_getrealframe = sys._getframe +sys._getframe = _getframe +patch('globals') +patch('eval') +patch('execfile') +patch('locals') +patch('vars') +patch('dir') +patch('input') +_psyco.original_raw_input = raw_input +__builtin__.__in_psyco__ = 0==1 # False + +if hasattr(_psyco, 'compact'): + import kdictproxy + _psyco.compactdictproxy = kdictproxy.compactdictproxy diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/__init__.py b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/__init__.py new file mode 100644 index 0000000..d25e197 --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/__init__.py @@ -0,0 +1,54 @@ +########################################################################### +# +# Psyco top-level file of the Psyco package. +# Copyright (C) 2001-2002 Armin Rigo et.al. + +"""Psyco -- the Python Specializing Compiler. + +Typical usage: add the following lines to your application's main module, +preferably after the other imports: + +try: + import psyco + psyco.full() +except ImportError: + print 'Psyco not installed, the program will just run slower' +""" +########################################################################### + + +# +# This module is present to make 'psyco' a package and to +# publish the main functions and variables. +# +# More documentation can be found in core.py. +# + + +# Try to import the dynamic-loading _psyco and report errors +try: + import _psyco +except ImportError, e: + extramsg = '' + import sys, imp + try: + file, filename, (suffix, mode, type) = imp.find_module('_psyco', __path__) + except ImportError: + ext = [suffix for suffix, mode, type in imp.get_suffixes() + if type == imp.C_EXTENSION] + if ext: + extramsg = (" (cannot locate the compiled extension '_psyco%s' " + "in the package path '%s')" % (ext[0], '; '.join(__path__))) + else: + extramsg = (" (check that the compiled extension '%s' is for " + "the correct Python version; this is Python %s)" % + (filename, sys.version.split()[0])) + raise ImportError, str(e) + extramsg + +# Publish important data by importing them in the package +from support import __version__, error, warning, _getrealframe, _getemulframe +from support import version_info, __version__ as hexversion +from core import full, profile, background, runonly, stop, cannotcompile +from core import log, bind, unbind, proxy, unproxy, dumpcodebuf +from _psyco import setfilter +from _psyco import compact, compacttype diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/classes.py b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/classes.py new file mode 100644 index 0000000..0563f84 --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/classes.py @@ -0,0 +1,42 @@ +########################################################################### +# +# Psyco class support module. +# Copyright (C) 2001-2002 Armin Rigo et.al. + +"""Psyco class support module. + +'psyco.classes.psyobj' is an alternate Psyco-optimized root for classes. +Any class inheriting from it or using the metaclass '__metaclass__' might +get optimized specifically for Psyco. It is equivalent to call +psyco.bind() on the class object after its creation. + +Importing everything from psyco.classes in a module will import the +'__metaclass__' name, so all classes defined after a + + from psyco.classes import * + +will automatically use the Psyco-optimized metaclass. +""" +########################################################################### + +__all__ = ['psyobj', 'psymetaclass', '__metaclass__'] + + +from _psyco import compacttype +import core +from types import FunctionType + +class psymetaclass(compacttype): + "Psyco-optimized meta-class. Turns all methods into Psyco proxies." + + def __new__(cls, name, bases, dict): + bindlist = dict.get('__psyco__bind__') + if bindlist is None: + bindlist = [key for key, value in dict.items() + if isinstance(value, FunctionType)] + for attr in bindlist: + dict[attr] = core.proxy(dict[attr]) + return super(psymetaclass, cls).__new__(cls, name, bases, dict) + +psyobj = psymetaclass("psyobj", (), {}) +__metaclass__ = psymetaclass diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/core.py b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/core.py new file mode 100644 index 0000000..995c9ae --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/core.py @@ -0,0 +1,231 @@ +########################################################################### +# +# Psyco main functions. +# Copyright (C) 2001-2002 Armin Rigo et.al. + +"""Psyco main functions. + +Here are the routines that you can use from your applications. +These are mostly interfaces to the C core, but they depend on +the Python version. + +You can use these functions from the 'psyco' module instead of +'psyco.core', e.g. + + import psyco + psyco.log('/tmp/psyco.log') + psyco.profile() +""" +########################################################################### + +import _psyco +import types +from support import * + +newfunction = types.FunctionType +newinstancemethod = types.MethodType + + +# Default charge profiler values +default_watermark = 0.09 # between 0.0 (0%) and 1.0 (100%) +default_halflife = 0.5 # seconds +default_pollfreq_profile = 20 # Hz +default_pollfreq_background = 100 # Hz -- a maximum for sleep's resolution +default_parentframe = 0.25 # should not be more than 0.5 (50%) + + +def full(memory=None, time=None, memorymax=None, timemax=None): + """Compile as much as possible. + +Typical use is for small scripts performing intensive computations +or string handling.""" + import profiler + p = profiler.FullCompiler() + p.run(memory, time, memorymax, timemax) + + +def profile(watermark = default_watermark, + halflife = default_halflife, + pollfreq = default_pollfreq_profile, + parentframe = default_parentframe, + memory=None, time=None, memorymax=None, timemax=None): + """Turn on profiling. + +The 'watermark' parameter controls how easily running functions will +be compiled. The smaller the value, the more functions are compiled.""" + import profiler + p = profiler.ActivePassiveProfiler(watermark, halflife, + pollfreq, parentframe) + p.run(memory, time, memorymax, timemax) + + +def background(watermark = default_watermark, + halflife = default_halflife, + pollfreq = default_pollfreq_background, + parentframe = default_parentframe, + memory=None, time=None, memorymax=None, timemax=None): + """Turn on passive profiling. + +This is a very lightweight mode in which only intensively computing +functions can be detected. The smaller the 'watermark', the more functions +are compiled.""" + import profiler + p = profiler.PassiveProfiler(watermark, halflife, pollfreq, parentframe) + p.run(memory, time, memorymax, timemax) + + +def runonly(memory=None, time=None, memorymax=None, timemax=None): + """Nonprofiler. + +XXX check if this is useful and document.""" + import profiler + p = profiler.RunOnly() + p.run(memory, time, memorymax, timemax) + + +def stop(): + """Turn off all automatic compilation. bind() calls remain in effect.""" + import profiler + profiler.go([]) + + +def log(logfile='', mode='w', top=10): + """Enable logging to the given file. + +If the file name is unspecified, a default name is built by appending +a 'log-psyco' extension to the main script name. + +Mode is 'a' to append to a possibly existing file or 'w' to overwrite +an existing file. Note that the log file may grow quickly in 'a' mode.""" + import profiler, logger + if not logfile: + import os + logfile, dummy = os.path.splitext(sys.argv[0]) + if os.path.basename(logfile): + logfile += '.' + logfile += 'log-psyco' + if hasattr(_psyco, 'VERBOSE_LEVEL'): + print >> sys.stderr, 'psyco: logging to', logfile + # logger.current should be a real file object; subtle problems + # will show up if its write() and flush() methods are written + # in Python, as Psyco will invoke them while compiling. + logger.current = open(logfile, mode) + logger.print_charges = top + profiler.logger = logger + logger.writedate('Logging started') + cannotcompile(logger.psycowrite) + _psyco.statwrite(logger=logger.psycowrite) + + +def bind(x, rec=None): + """Enable compilation of the given function, method, or class object. + +If C is a class (or anything with a '__dict__' attribute), bind(C) will +rebind all functions and methods found in C.__dict__ (which means, for +classes, all methods defined in the class but not in its parents). + +The optional second argument specifies the number of recursive +compilation levels: all functions called by func are compiled +up to the given depth of indirection.""" + if isinstance(x, types.MethodType): + x = x.im_func + if isinstance(x, types.FunctionType): + if rec is None: + x.func_code = _psyco.proxycode(x) + else: + x.func_code = _psyco.proxycode(x, rec) + return + if hasattr(x, '__dict__'): + funcs = [o for o in x.__dict__.values() + if isinstance(o, types.MethodType) + or isinstance(o, types.FunctionType)] + if not funcs: + raise error, ("nothing bindable found in %s object" % + type(x).__name__) + for o in funcs: + bind(o, rec) + return + raise TypeError, "cannot bind %s objects" % type(x).__name__ + + +def unbind(x): + """Reverse of bind().""" + if isinstance(x, types.MethodType): + x = x.im_func + if isinstance(x, types.FunctionType): + try: + f = _psyco.unproxycode(x.func_code) + except error: + pass + else: + x.func_code = f.func_code + return + if hasattr(x, '__dict__'): + for o in x.__dict__.values(): + if (isinstance(o, types.MethodType) + or isinstance(o, types.FunctionType)): + unbind(o) + return + raise TypeError, "cannot unbind %s objects" % type(x).__name__ + + +def proxy(x, rec=None): + """Return a Psyco-enabled copy of the function. + +The original function is still available for non-compiled calls. +The optional second argument specifies the number of recursive +compilation levels: all functions called by func are compiled +up to the given depth of indirection.""" + if isinstance(x, types.FunctionType): + if rec is None: + code = _psyco.proxycode(x) + else: + code = _psyco.proxycode(x, rec) + return newfunction(code, x.func_globals, x.func_name) + if isinstance(x, types.MethodType): + p = proxy(x.im_func, rec) + return newinstancemethod(p, x.im_self, x.im_class) + raise TypeError, "cannot proxy %s objects" % type(x).__name__ + + +def unproxy(proxy): + """Return a new copy of the original function of method behind a proxy. +The result behaves like the original function in that calling it +does not trigger compilation nor execution of any compiled code.""" + if isinstance(proxy, types.FunctionType): + return _psyco.unproxycode(proxy.func_code) + if isinstance(proxy, types.MethodType): + f = unproxy(proxy.im_func) + return newinstancemethod(f, proxy.im_self, proxy.im_class) + raise TypeError, "%s objects cannot be proxies" % type(proxy).__name__ + + +def cannotcompile(x): + """Instruct Psyco never to compile the given function, method +or code object.""" + if isinstance(x, types.MethodType): + x = x.im_func + if isinstance(x, types.FunctionType): + x = x.func_code + if isinstance(x, types.CodeType): + _psyco.cannotcompile(x) + else: + raise TypeError, "unexpected %s object" % type(x).__name__ + + +def dumpcodebuf(): + """Write in file psyco.dump a copy of the emitted machine code, +provided Psyco was compiled with a non-zero CODE_DUMP. +See py-utils/httpxam.py to examine psyco.dump.""" + if hasattr(_psyco, 'dumpcodebuf'): + _psyco.dumpcodebuf() + + +########################################################################### +# Psyco variables +# error * the error raised by Psyco +# warning * the warning raised by Psyco +# __in_psyco__ * a new built-in variable which is always zero, but which +# Psyco special-cases by returning 1 instead. So +# __in_psyco__ can be used in a function to know if +# that function is being executed by Psyco or not. diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/kdictproxy.py b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/kdictproxy.py new file mode 100644 index 0000000..c764e5e --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/kdictproxy.py @@ -0,0 +1,133 @@ +########################################################################### +# +# Support code for the 'psyco.compact' type. + +from __future__ import generators + +try: + from UserDict import DictMixin +except ImportError: + + # backported from Python 2.3 to Python 2.2 + class DictMixin: + # Mixin defining all dictionary methods for classes that already have + # a minimum dictionary interface including getitem, setitem, delitem, + # and keys. Without knowledge of the subclass constructor, the mixin + # does not define __init__() or copy(). In addition to the four base + # methods, progressively more efficiency comes with defining + # __contains__(), __iter__(), and iteritems(). + + # second level definitions support higher levels + def __iter__(self): + for k in self.keys(): + yield k + def has_key(self, key): + try: + value = self[key] + except KeyError: + return False + return True + def __contains__(self, key): + return self.has_key(key) + + # third level takes advantage of second level definitions + def iteritems(self): + for k in self: + yield (k, self[k]) + def iterkeys(self): + return self.__iter__() + + # fourth level uses definitions from lower levels + def itervalues(self): + for _, v in self.iteritems(): + yield v + def values(self): + return [v for _, v in self.iteritems()] + def items(self): + return list(self.iteritems()) + def clear(self): + for key in self.keys(): + del self[key] + def setdefault(self, key, default): + try: + return self[key] + except KeyError: + self[key] = default + return default + def pop(self, key, *args): + if len(args) > 1: + raise TypeError, "pop expected at most 2 arguments, got "\ + + repr(1 + len(args)) + try: + value = self[key] + except KeyError: + if args: + return args[0] + raise + del self[key] + return value + def popitem(self): + try: + k, v = self.iteritems().next() + except StopIteration: + raise KeyError, 'container is empty' + del self[k] + return (k, v) + def update(self, other): + # Make progressively weaker assumptions about "other" + if hasattr(other, 'iteritems'): # iteritems saves memory and lookups + for k, v in other.iteritems(): + self[k] = v + elif hasattr(other, '__iter__'): # iter saves memory + for k in other: + self[k] = other[k] + else: + for k in other.keys(): + self[k] = other[k] + def get(self, key, default=None): + try: + return self[key] + except KeyError: + return default + def __repr__(self): + return repr(dict(self.iteritems())) + def __cmp__(self, other): + if other is None: + return 1 + if isinstance(other, DictMixin): + other = dict(other.iteritems()) + return cmp(dict(self.iteritems()), other) + def __len__(self): + return len(self.keys()) + +########################################################################### + +from _psyco import compact + + +class compactdictproxy(DictMixin): + + def __init__(self, ko): + self._ko = ko # compact object of which 'self' is the dict + + def __getitem__(self, key): + return compact.__getslot__(self._ko, key) + + def __setitem__(self, key, value): + compact.__setslot__(self._ko, key, value) + + def __delitem__(self, key): + compact.__delslot__(self._ko, key) + + def keys(self): + return compact.__members__.__get__(self._ko) + + def clear(self): + keys = self.keys() + keys.reverse() + for key in keys: + del self[key] + + def __repr__(self): + keys = ', '.join(self.keys()) + return '' % (keys,) diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/logger.py b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/logger.py new file mode 100644 index 0000000..a3c5219 --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/logger.py @@ -0,0 +1,96 @@ +########################################################################### +# +# Psyco logger. +# Copyright (C) 2001-2002 Armin Rigo et.al. + +"""Psyco logger. + +See log() in core.py. +""" +########################################################################### + + +import _psyco +from time import time, localtime, strftime + + +current = None +print_charges = 10 +dump_delay = 0.2 +dump_last = 0.0 + +def write(s, level): + t = time() + f = t-int(t) + try: + current.write("%s.%02d %-*s%s\n" % ( + strftime("%X", localtime(int(t))), + int(f*100.0), 63-level, s, + "%"*level)) + current.flush() + except (OSError, IOError): + pass + +def psycowrite(s): + t = time() + f = t-int(t) + try: + current.write("%s.%02d %-*s%s\n" % ( + strftime("%X", localtime(int(t))), + int(f*100.0), 60, s.strip(), + "% %")) + current.flush() + except (OSError, IOError): + pass + +##def writelines(lines, level=0): +## if lines: +## t = time() +## f = t-int(t) +## timedesc = strftime("%x %X", localtime(int(t))) +## print >> current, "%s.%03d %-*s %s" % ( +## timedesc, int(f*1000), +## 50-level, lines[0], +## "+"*level) +## timedesc = " " * (len(timedesc)+5) +## for line in lines[1:]: +## print >> current, timedesc, line + +def writememory(): + write("memory usage: %d+ kb" % _psyco.memory(), 1) + +def dumpcharges(): + global dump_last + if print_charges: + t = time() + if not (dump_last <= t < dump_last+dump_delay): + if t <= dump_last+1.5*dump_delay: + dump_last += dump_delay + else: + dump_last = t + #write("%s: charges:" % who, 0) + lst = _psyco.stattop(print_charges) + if lst: + f = t-int(t) + lines = ["%s.%02d ______\n" % ( + strftime("%X", localtime(int(t))), + int(f*100.0))] + i = 1 + for co, charge in lst: + detail = co.co_filename + if len(detail) > 19: + detail = '...' + detail[-17:] + lines.append(" #%-3d |%4.1f %%| %-26s%20s:%d\n" % + (i, charge*100.0, co.co_name, detail, + co.co_firstlineno)) + i += 1 + current.writelines(lines) + current.flush() + +def writefinalstats(): + dumpcharges() + writememory() + writedate("program exit") + +def writedate(msg): + write('%s, %s' % (msg, strftime("%x")), 20) diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/profiler.py b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/profiler.py new file mode 100644 index 0000000..f1d06f1 --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/profiler.py @@ -0,0 +1,379 @@ +########################################################################### +# +# Psyco profiler (Python part). +# Copyright (C) 2001-2002 Armin Rigo et.al. + +"""Psyco profiler (Python part). + +The implementation of the non-time-critical parts of the profiler. +See profile() and full() in core.py for the easy interface. +""" +########################################################################### + +import _psyco +from support import * +import math, time, types, atexit +now = time.time +try: + import thread +except ImportError: + import dummy_thread as thread + + +# current profiler instance +current = None + +# enabled profilers, in order of priority +profilers = [] + +# logger module (when enabled by core.log()) +logger = None + +# a lock for a thread-safe go() +go_lock = thread.allocate_lock() + +def go(stop=0): + # run the highest-priority profiler in 'profilers' + global current + go_lock.acquire() + try: + prev = current + if stop: + del profilers[:] + if prev: + if profilers and profilers[0] is prev: + return # best profiler already running + prev.stop() + current = None + for p in profilers[:]: + if p.start(): + current = p + if logger: # and p is not prev: + logger.write("%s: starting" % p.__class__.__name__, 5) + return + finally: + go_lock.release() + # no profiler is running now + if stop: + if logger: + logger.writefinalstats() + else: + tag2bind() + +atexit.register(go, 1) + + +def buildfncache(globals, cache): + if hasattr(types.IntType, '__dict__'): + clstypes = (types.ClassType, types.TypeType) + else: + clstypes = types.ClassType + for x in globals.values(): + if isinstance(x, types.MethodType): + x = x.im_func + if isinstance(x, types.FunctionType): + cache[x.func_code] = x, '' + elif isinstance(x, clstypes): + for y in x.__dict__.values(): + if isinstance(y, types.MethodType): + y = y.im_func + if isinstance(y, types.FunctionType): + cache[y.func_code] = y, x.__name__ + +# code-to-function mapping (cache) +function_cache = {} + +def trytobind(co, globals, log=1): + try: + f, clsname = function_cache[co] + except KeyError: + buildfncache(globals, function_cache) + try: + f, clsname = function_cache[co] + except KeyError: + if logger: + logger.write('warning: cannot find function %s in %s' % + (co.co_name, globals.get('__name__', '?')), 3) + return # give up + if logger and log: + modulename = globals.get('__name__', '?') + if clsname: + modulename += '.' + clsname + logger.write('bind function: %s.%s' % (modulename, co.co_name), 1) + f.func_code = _psyco.proxycode(f) + + +# the list of code objects that have been tagged +tagged_codes = [] + +def tag(co, globals): + if logger: + try: + f, clsname = function_cache[co] + except KeyError: + buildfncache(globals, function_cache) + try: + f, clsname = function_cache[co] + except KeyError: + clsname = '' # give up + modulename = globals.get('__name__', '?') + if clsname: + modulename += '.' + clsname + logger.write('tag function: %s.%s' % (modulename, co.co_name), 1) + tagged_codes.append((co, globals)) + _psyco.turbo_frame(co) + _psyco.turbo_code(co) + +def tag2bind(): + if tagged_codes: + if logger: + logger.write('profiling stopped, binding %d functions' % + len(tagged_codes), 2) + for co, globals in tagged_codes: + trytobind(co, globals, 0) + function_cache.clear() + del tagged_codes[:] + + +class Profiler: + MemoryTimerResolution = 0.103 + + def run(self, memory, time, memorymax, timemax): + self.memory = memory + self.memorymax = memorymax + self.time = time + if timemax is None: + self.endtime = None + else: + self.endtime = now() + timemax + self.alarms = [] + profilers.append(self) + go() + + def start(self): + curmem = _psyco.memory() + memlimits = [] + if self.memorymax is not None: + if curmem >= self.memorymax: + if logger: + logger.writememory() + return self.limitreached('memorymax') + memlimits.append(self.memorymax) + if self.memory is not None: + if self.memory <= 0: + if logger: + logger.writememory() + return self.limitreached('memory') + memlimits.append(curmem + self.memory) + self.memory_at_start = curmem + + curtime = now() + timelimits = [] + if self.endtime is not None: + if curtime >= self.endtime: + return self.limitreached('timemax') + timelimits.append(self.endtime - curtime) + if self.time is not None: + if self.time <= 0.0: + return self.limitreached('time') + timelimits.append(self.time) + self.time_at_start = curtime + + try: + self.do_start() + except error, e: + if logger: + logger.write('%s: disabled by psyco.error:' % ( + self.__class__.__name__), 4) + logger.write(' %s' % str(e), 3) + return 0 + + if memlimits: + self.memlimits_args = (time.sleep, (self.MemoryTimerResolution,), + self.check_memory, (min(memlimits),)) + self.alarms.append(_psyco.alarm(*self.memlimits_args)) + if timelimits: + self.alarms.append(_psyco.alarm(time.sleep, (min(timelimits),), + self.time_out)) + return 1 + + def stop(self): + for alarm in self.alarms: + alarm.stop(0) + for alarm in self.alarms: + alarm.stop(1) # wait for parallel threads to stop + del self.alarms[:] + if self.time is not None: + self.time -= now() - self.time_at_start + if self.memory is not None: + self.memory -= _psyco.memory() - self.memory_at_start + + try: + self.do_stop() + except error: + return 0 + return 1 + + def check_memory(self, limit): + if _psyco.memory() < limit: + return self.memlimits_args + go() + + def time_out(self): + self.time = 0.0 + go() + + def limitreached(self, limitname): + try: + profilers.remove(self) + except ValueError: + pass + if logger: + logger.write('%s: disabled (%s limit reached)' % ( + self.__class__.__name__, limitname), 4) + return 0 + + +class FullCompiler(Profiler): + + def do_start(self): + _psyco.profiling('f') + + def do_stop(self): + _psyco.profiling('.') + + +class RunOnly(Profiler): + + def do_start(self): + _psyco.profiling('n') + + def do_stop(self): + _psyco.profiling('.') + + +class ChargeProfiler(Profiler): + + def __init__(self, watermark, parentframe): + self.watermark = watermark + self.parent2 = parentframe * 2.0 + self.lock = thread.allocate_lock() + + def init_charges(self): + _psyco.statwrite(watermark = self.watermark, + parent2 = self.parent2) + + def do_stop(self): + _psyco.profiling('.') + _psyco.statwrite(callback = None) + + +class ActiveProfiler(ChargeProfiler): + + def active_start(self): + _psyco.profiling('p') + + def do_start(self): + self.init_charges() + self.active_start() + _psyco.statwrite(callback = self.charge_callback) + + def charge_callback(self, frame, charge): + tag(frame.f_code, frame.f_globals) + + +class PassiveProfiler(ChargeProfiler): + + initial_charge_unit = _psyco.statread('unit') + reset_stats_after = 120 # half-lives (maximum 200!) + reset_limit = initial_charge_unit * (2.0 ** reset_stats_after) + + def __init__(self, watermark, halflife, pollfreq, parentframe): + ChargeProfiler.__init__(self, watermark, parentframe) + self.pollfreq = pollfreq + # self.progress is slightly more than 1.0, and computed so that + # do_profile() will double the change_unit every 'halflife' seconds. + self.progress = 2.0 ** (1.0 / (halflife * pollfreq)) + + def reset(self): + _psyco.statwrite(unit = self.initial_charge_unit, callback = None) + _psyco.statreset() + if logger: + logger.write("%s: resetting stats" % self.__class__.__name__, 1) + + def passive_start(self): + self.passivealarm_args = (time.sleep, (1.0 / self.pollfreq,), + self.do_profile) + self.alarms.append(_psyco.alarm(*self.passivealarm_args)) + + def do_start(self): + tag2bind() + self.init_charges() + self.passive_start() + + def do_profile(self): + _psyco.statcollect() + if logger: + logger.dumpcharges() + nunit = _psyco.statread('unit') * self.progress + if nunit > self.reset_limit: + self.reset() + else: + _psyco.statwrite(unit = nunit, callback = self.charge_callback) + return self.passivealarm_args + + def charge_callback(self, frame, charge): + trytobind(frame.f_code, frame.f_globals) + + +class ActivePassiveProfiler(PassiveProfiler, ActiveProfiler): + + def do_start(self): + self.init_charges() + self.active_start() + self.passive_start() + + def charge_callback(self, frame, charge): + tag(frame.f_code, frame.f_globals) + + + +# +# we register our own version of sys.settrace(), sys.setprofile() +# and thread.start_new_thread(). +# + +def psyco_settrace(*args, **kw): + "This is the Psyco-aware version of sys.settrace()." + result = original_settrace(*args, **kw) + go() + return result + +def psyco_setprofile(*args, **kw): + "This is the Psyco-aware version of sys.setprofile()." + result = original_setprofile(*args, **kw) + go() + return result + +def psyco_thread_stub(callable, args, kw): + _psyco.statcollect() + if kw is None: + return callable(*args) + else: + return callable(*args, **kw) + +def psyco_start_new_thread(callable, args, kw=None): + "This is the Psyco-aware version of thread.start_new_thread()." + return original_start_new_thread(psyco_thread_stub, (callable, args, kw)) + +original_settrace = sys.settrace +original_setprofile = sys.setprofile +original_start_new_thread = thread.start_new_thread +sys.settrace = psyco_settrace +sys.setprofile = psyco_setprofile +thread.start_new_thread = psyco_start_new_thread +# hack to patch threading._start_new_thread if the module is +# already loaded +if ('threading' in sys.modules and + hasattr(sys.modules['threading'], '_start_new_thread')): + sys.modules['threading']._start_new_thread = psyco_start_new_thread diff --git a/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/support.py b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/support.py new file mode 100644 index 0000000..387321a --- /dev/null +++ b/Calibre_Plugins/eReaderPDB2PML_plugin/osx/psyco/support.py @@ -0,0 +1,191 @@ +########################################################################### +# +# Psyco general support module. +# Copyright (C) 2001-2002 Armin Rigo et.al. + +"""Psyco general support module. + +For internal use. +""" +########################################################################### + +import sys, _psyco, __builtin__ + +error = _psyco.error +class warning(Warning): + pass + +_psyco.NoLocalsWarning = warning + +def warn(msg): + from warnings import warn + warn(msg, warning, stacklevel=2) + +# +# Version checks +# +__version__ = 0x010600f0 +if _psyco.PSYVER != __version__: + raise error, "version mismatch between Psyco parts, reinstall it" + +version_info = (__version__ >> 24, + (__version__ >> 16) & 0xff, + (__version__ >> 8) & 0xff, + {0xa0: 'alpha', + 0xb0: 'beta', + 0xc0: 'candidate', + 0xf0: 'final'}[__version__ & 0xf0], + __version__ & 0xf) + + +VERSION_LIMITS = [0x02020200, # 2.2.2 + 0x02030000, # 2.3 + 0x02040000] # 2.4 + +if ([v for v in VERSION_LIMITS if v <= sys.hexversion] != + [v for v in VERSION_LIMITS if v <= _psyco.PYVER ]): + if sys.hexversion < VERSION_LIMITS[0]: + warn("Psyco requires Python version 2.2.2 or later") + else: + warn("Psyco version does not match Python version. " + "Psyco must be updated or recompiled") + + +if hasattr(_psyco, 'ALL_CHECKS') and hasattr(_psyco, 'VERBOSE_LEVEL'): + print >> sys.stderr, ('psyco: running in debugging mode on %s' % + _psyco.PROCESSOR) + + +########################################################################### +# sys._getframe() gives strange results on a mixed Psyco- and Python-style +# stack frame. Psyco provides a replacement that partially emulates Python +# frames from Psyco frames. The new sys._getframe() may return objects of +# a custom "Psyco frame" type, which is a subtype of the normal frame type. +# +# The same problems require some other built-in functions to be replaced +# as well. Note that the local variables are not available in any +# dictionary with Psyco. + + +class Frame: + pass + + +class PythonFrame(Frame): + + def __init__(self, frame): + self.__dict__.update({ + '_frame': frame, + }) + + def __getattr__(self, attr): + if attr == 'f_back': + try: + result = embedframe(_psyco.getframe(self._frame)) + except ValueError: + result = None + except error: + warn("f_back is skipping dead Psyco frames") + result = self._frame.f_back + self.__dict__['f_back'] = result + return result + else: + return getattr(self._frame, attr) + + def __setattr__(self, attr, value): + setattr(self._frame, attr, value) + + def __delattr__(self, attr): + delattr(self._frame, attr) + + +class PsycoFrame(Frame): + + def __init__(self, tag): + self.__dict__.update({ + '_tag' : tag, + 'f_code' : tag[0], + 'f_globals': tag[1], + }) + + def __getattr__(self, attr): + if attr == 'f_back': + try: + result = embedframe(_psyco.getframe(self._tag)) + except ValueError: + result = None + elif attr == 'f_lineno': + result = self.f_code.co_firstlineno # better than nothing + elif attr == 'f_builtins': + result = self.f_globals['__builtins__'] + elif attr == 'f_restricted': + result = self.f_builtins is not __builtins__ + elif attr == 'f_locals': + raise AttributeError, ("local variables of functions run by Psyco " + "cannot be accessed in any way, sorry") + else: + raise AttributeError, ("emulated Psyco frames have " + "no '%s' attribute" % attr) + self.__dict__[attr] = result + return result + + def __setattr__(self, attr, value): + raise AttributeError, "Psyco frame objects are read-only" + + def __delattr__(self, attr): + if attr == 'f_trace': + # for bdb which relies on CPython frames exhibiting a slightly + # buggy behavior: you can 'del f.f_trace' as often as you like + # even without having set it previously. + return + raise AttributeError, "Psyco frame objects are read-only" + + +def embedframe(result): + if type(result) is type(()): + return PsycoFrame(result) + else: + return PythonFrame(result) + +def _getframe(depth=0): + """Return a frame object from the call stack. This is a replacement for +sys._getframe() which is aware of Psyco frames. + +The returned objects are instances of either PythonFrame or PsycoFrame +instead of being real Python-level frame object, so that they can emulate +the common attributes of frame objects. + +The original sys._getframe() ignoring Psyco frames altogether is stored in +psyco._getrealframe(). See also psyco._getemulframe().""" + # 'depth+1' to account for this _getframe() Python function + return embedframe(_psyco.getframe(depth+1)) + +def _getemulframe(depth=0): + """As _getframe(), but the returned objects are real Python frame objects +emulating Psyco frames. Some of their attributes can be wrong or missing, +however.""" + # 'depth+1' to account for this _getemulframe() Python function + return _psyco.getframe(depth+1, 1) + +def patch(name, module=__builtin__): + f = getattr(_psyco, name) + org = getattr(module, name) + if org is not f: + setattr(module, name, f) + setattr(_psyco, 'original_' + name, org) + +_getrealframe = sys._getframe +sys._getframe = _getframe +patch('globals') +patch('eval') +patch('execfile') +patch('locals') +patch('vars') +patch('dir') +patch('input') +_psyco.original_raw_input = raw_input +__builtin__.__in_psyco__ = 0==1 # False + +if hasattr(_psyco, 'compact'): + import kdictproxy + _psyco.compactdictproxy = kdictproxy.compactdictproxy diff --git a/Calibre_Plugins/k4mobidedrm_plugin.zip b/Calibre_Plugins/k4mobidedrm_plugin.zip new file mode 100644 index 0000000000000000000000000000000000000000..c2f4a717b4a6650492cf83374582f21897a54e58 GIT binary patch literal 15485 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 literal 0 HcmV?d00001 diff --git a/Calibre_Plugins/k4mobidedrm_plugin/k4mobidedrm_plugin.py b/Calibre_Plugins/k4mobidedrm_plugin/k4mobidedrm_plugin.py new file mode 100644 index 0000000..6a5c071 --- /dev/null +++ b/Calibre_Plugins/k4mobidedrm_plugin/k4mobidedrm_plugin.py @@ -0,0 +1,490 @@ +#!/usr/bin/env python + +# engine to remove drm from Kindle for Mac and Kindle for PC books +# for personal use for archiving and converting your ebooks + +# PLEASE DO NOT PIRATE EBOOKS! + +# We want all authors and publishers, and eBook stores to live +# long and prosperous lives but at the same time we just want to +# be able to read OUR books on whatever device we want and to keep +# readable for a long, long time + +# This borrows very heavily from works by CMBDTC, IHeartCabbages, skindle, +# unswindle, DarkReverser, ApprenticeAlf, DiapDealer, some_updates +# and many many others + +# It can run standalone to convert K4M/K4PC/Mobi files, or it can be installed as a +# plugin for Calibre (http://calibre-ebook.com/about) so that importing +# K4 or Mobi with DRM is no londer a multi-step process. +# +# ***NOTE*** If you are using this script as a calibre plugin for a K4M or K4PC ebook +# then calibre must be installed on the same machine and in the same account as K4PC or K4M +# for the plugin version to function properly. +# +# To create a Calibre plugin, rename this file so that the filename +# ends in '_plugin.py', put it into a ZIP file with all its supporting python routines +# and import that ZIP into Calibre using its plugin configuration GUI. + +from __future__ import with_statement + +__version__ = '1.1' + +class Unbuffered: + def __init__(self, stream): + self.stream = stream + def write(self, data): + self.stream.write(data) + self.stream.flush() + def __getattr__(self, attr): + return getattr(self.stream, attr) + +import sys +import os, csv, getopt +import binascii +import zlib +from struct import pack, unpack, unpack_from + + +#Exception Handling +class DrmException(Exception): + pass + +# +# crypto digestroutines +# + +import hashlib + +def MD5(message): + ctx = hashlib.md5() + ctx.update(message) + return ctx.digest() + +def SHA1(message): + ctx = hashlib.sha1() + ctx.update(message) + return ctx.digest() + +# determine if we are running as a calibre plugin +if 'calibre' in sys.modules: + inCalibre = True + global openKindleInfo, CryptUnprotectData, GetUserName, GetVolumeSerialNumber, charMap1, charMap2, charMap3, charMap4 +else: + inCalibre = False + +# +# start of Kindle specific routines +# + +if not inCalibre: + import mobidedrm + if sys.platform.startswith('win'): + from k4pcutils import openKindleInfo, CryptUnprotectData, GetUserName, GetVolumeSerialNumber, charMap1, charMap2, charMap3, charMap4 + if sys.platform.startswith('darwin'): + from k4mutils import openKindleInfo, CryptUnprotectData, GetUserName, GetVolumeSerialNumber, charMap1, charMap2, charMap3, charMap4 + +global kindleDatabase + +# Encode the bytes in data with the characters in map +def encode(data, map): + result = "" + for char in data: + value = ord(char) + Q = (value ^ 0x80) // len(map) + R = value % len(map) + result += map[Q] + result += map[R] + return result + +# Hash the bytes in data and then encode the digest with the characters in map +def encodeHash(data,map): + return encode(MD5(data),map) + +# Decode the string in data with the characters in map. Returns the decoded bytes +def decode(data,map): + result = "" + for i in range (0,len(data)-1,2): + high = map.find(data[i]) + low = map.find(data[i+1]) + if (high == -1) or (low == -1) : + break + value = (((high * len(map)) ^ 0x80) & 0xFF) + low + result += pack("B",value) + return result + + +# Parse the Kindle.info file and return the records as a list of key-values +def parseKindleInfo(): + DB = {} + infoReader = openKindleInfo() + infoReader.read(1) + data = infoReader.read() + if sys.platform.startswith('win'): + items = data.split('{') + else : + items = data.split('[') + for item in items: + splito = item.split(':') + DB[splito[0]] =splito[1] + return DB + +# Get a record from the Kindle.info file for the key "hashedKey" (already hashed and encoded). Return the decoded and decrypted record +def getKindleInfoValueForHash(hashedKey): + global kindleDatabase + encryptedValue = decode(kindleDatabase[hashedKey],charMap2) + if sys.platform.startswith('win'): + return CryptUnprotectData(encryptedValue,"") + else: + cleartext = CryptUnprotectData(encryptedValue) + return decode(cleartext, charMap1) + +# Get a record from the Kindle.info file for the string in "key" (plaintext). Return the decoded and decrypted record +def getKindleInfoValueForKey(key): + return getKindleInfoValueForHash(encodeHash(key,charMap2)) + +# Find if the original string for a hashed/encoded string is known. If so return the original string othwise return an empty string. +def findNameForHash(hash): + names = ["kindle.account.tokens","kindle.cookie.item","eulaVersionAccepted","login_date","kindle.token.item","login","kindle.key.item","kindle.name.info","kindle.device.info", "MazamaRandomNumber"] + result = "" + for name in names: + if hash == encodeHash(name, charMap2): + result = name + break + return result + +# Print all the records from the kindle.info file (option -i) +def printKindleInfo(): + for record in kindleDatabase: + name = findNameForHash(record) + if name != "" : + print (name) + print ("--------------------------") + else : + print ("Unknown Record") + print getKindleInfoValueForHash(record) + print "\n" + +# +# PID generation routines +# + +# Returns two bit at offset from a bit field +def getTwoBitsFromBitField(bitField,offset): + byteNumber = offset // 4 + bitPosition = 6 - 2*(offset % 4) + return ord(bitField[byteNumber]) >> bitPosition & 3 + +# Returns the six bits at offset from a bit field +def getSixBitsFromBitField(bitField,offset): + offset *= 3 + value = (getTwoBitsFromBitField(bitField,offset) <<4) + (getTwoBitsFromBitField(bitField,offset+1) << 2) +getTwoBitsFromBitField(bitField,offset+2) + return value + +# 8 bits to six bits encoding from hash to generate PID string +def encodePID(hash): + global charMap3 + PID = "" + for position in range (0,8): + PID += charMap3[getSixBitsFromBitField(hash,position)] + return PID + +# Encryption table used to generate the device PID +def generatePidEncryptionTable() : + table = [] + for counter1 in range (0,0x100): + value = counter1 + for counter2 in range (0,8): + if (value & 1 == 0) : + value = value >> 1 + else : + value = value >> 1 + value = value ^ 0xEDB88320 + table.append(value) + return table + +# Seed value used to generate the device PID +def generatePidSeed(table,dsn) : + value = 0 + for counter in range (0,4) : + index = (ord(dsn[counter]) ^ value) &0xFF + value = (value >> 8) ^ table[index] + return value + +# Generate the device PID +def generateDevicePID(table,dsn,nbRoll): + seed = generatePidSeed(table,dsn) + pidAscii = "" + pid = [(seed >>24) &0xFF,(seed >> 16) &0xff,(seed >> 8) &0xFF,(seed) & 0xFF,(seed>>24) & 0xFF,(seed >> 16) &0xff,(seed >> 8) &0xFF,(seed) & 0xFF] + index = 0 + for counter in range (0,nbRoll): + pid[index] = pid[index] ^ ord(dsn[counter]) + index = (index+1) %8 + for counter in range (0,8): + index = ((((pid[counter] >>5) & 3) ^ pid[counter]) & 0x1f) + (pid[counter] >> 7) + pidAscii += charMap4[index] + return pidAscii + +# convert from 8 digit PID to 10 digit PID with checksum +def checksumPid(s): + letters = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789" + crc = (~binascii.crc32(s,-1))&0xFFFFFFFF + crc = crc ^ (crc >> 16) + res = s + l = len(letters) + for i in (0,1): + b = crc & 0xff + pos = (b // l) ^ (b % l) + res += letters[pos%l] + crc >>= 8 + return res + + +class MobiPeek: + def loadSection(self, section): + before, after = self.sections[section:section+2] + self.f.seek(before) + return self.f.read(after - before) + def __init__(self, filename): + self.f = file(filename, 'rb') + self.header = self.f.read(78) + self.ident = self.header[0x3C:0x3C+8] + if self.ident != 'BOOKMOBI' and self.ident != 'TEXtREAd': + raise DrmException('invalid file format') + self.num_sections, = unpack_from('>H', self.header, 76) + sections = self.f.read(self.num_sections*8) + self.sections = unpack_from('>%dL' % (self.num_sections*2), sections, 0)[::2] + (0xfffffff, ) + self.sect0 = self.loadSection(0) + self.f.close() + def getBookTitle(self): + # get book title + toff, tlen = unpack('>II', self.sect0[0x54:0x5c]) + tend = toff + tlen + title = self.sect0[toff:tend] + return title + def getexthData(self): + # if exth region exists then grab it + # get length of this header + length, type, codepage, unique_id, version = unpack('>LLLLL', self.sect0[20:40]) + exth_flag, = unpack('>L', self.sect0[0x80:0x84]) + exth = '' + if exth_flag & 0x40: + exth = self.sect0[16 + length:] + return exth + def isNotEncrypted(self): + lock_type, = unpack('>H', self.sect0[0xC:0xC+2]) + if lock_type == 0: + return True + return False + +# DiapDealer's stuff: Parse the EXTH header records and parse the Kindleinfo +# file to calculate the book pid. +def getK4Pids(exth, title): + global kindleDatabase + try: + kindleDatabase = parseKindleInfo() + except Exception as message: + print(message) + + if kindleDatabase != None : + # Get the Mazama Random number + MazamaRandomNumber = getKindleInfoValueForKey("MazamaRandomNumber") + + # Get the HDD serial + encodedSystemVolumeSerialNumber = encodeHash(GetVolumeSerialNumber(),charMap1) + + # Get the current user name + encodedUsername = encodeHash(GetUserName(),charMap1) + + # concat, hash and encode to calculate the DSN + DSN = encode(SHA1(MazamaRandomNumber+encodedSystemVolumeSerialNumber+encodedUsername),charMap1) + + print("\nDSN: " + DSN) + + # Compute the device PID (for which I can tell, is used for nothing). + # But hey, stuff being printed out is apparently cool. + table = generatePidEncryptionTable() + devicePID = generateDevicePID(table,DSN,4) + + print("Device PID: " + checksumPid(devicePID)) + + # Compute book PID + exth_records = {} + nitems, = unpack('>I', exth[8:12]) + pos = 12 + # Parse the exth records, storing data indexed by type + for i in xrange(nitems): + type, size = unpack('>II', exth[pos: pos + 8]) + content = exth[pos + 8: pos + size] + + exth_records[type] = content + pos += size + + # Grab the contents of the type 209 exth record + if exth_records[209] != None: + data = exth_records[209] + else: + raise DrmException("\nNo EXTH record type 209 - Perhaps not a K4 file?") + + # Parse the 209 data to find the the exth record with the token data. + # The last character of the 209 data points to the record with the token. + # Always 208 from my experience, but I'll leave the logic in case that changes. + for i in xrange(len(data)): + if ord(data[i]) != 0: + if exth_records[ord(data[i])] != None: + token = exth_records[ord(data[i])] + + # Get the kindle account token + kindleAccountToken = getKindleInfoValueForKey("kindle.account.tokens") + + print("Account Token: " + kindleAccountToken) + + pidHash = SHA1(DSN+kindleAccountToken+exth_records[209]+token) + + bookPID = encodePID(pidHash) + bookPID = checksumPid(bookPID) + + if exth_records[503] != None: + print "Pid for " + exth_records[503] + ": " + bookPID + else: + print "Pid for " + title + ":" + bookPID + return bookPID + + raise DrmException("\nCould not access K4 data - Perhaps K4 is not installed/configured?") + return null + +# +# Main +# +def main(argv=sys.argv): + global kindleDatabase + import mobidedrm + print ('K4MobiDeDrm v%(__version__)s ' + 'provided by the work of many including DiapDealer, SomeUpdates, IHeartCabbages, CMBDTC, Skindle, DarkReverser, ApprenticeAlf, etc .' % globals()) + + if len(argv)<3: + print "Removes DRM protection from K4PC, K4M, and Mobi ebooks" + print "Usage:" + print " %s []" % argv[0] + return 1 + + if len(argv) == 4: + pidnums = argv[3] + + if len(argv) == 3: + pidnums = "" + + kindleDatabase = None + infile = argv[1] + outfile = argv[2] + try: + # first try with K4PC/K4M + ex = MobiPeek(infile) + if ex.isNotEncrypted(): + print "File was Not Encrypted" + return 2 + title = ex.getBookTitle() + exth = ex.getexthData() + pid = getK4Pids(exth, title) + unlocked_file = mobidedrm.getUnencryptedBook(infile, pid) + except DrmException: + pass + except mobidedrm.DrmException: + pass + else: + file(outfile, 'wb').write(unlocked_file) + return 0 + + # now try from the pid list + pids = pidnums.split(',') + for pid in pids: + try: + print 'Trying: "'+ pid + '"' + unlocked_file = mobidedrm.getUnencryptedBook(infile, pid) + except mobidedrm.DrmException: + pass + else: + file(outfile, 'wb').write(unlocked_file) + return 0 + + # we could not unencrypt book + print "Error: Could Not Unencrypt Book" + return 1 + + +if __name__ == '__main__': + sys.stdout=Unbuffered(sys.stdout) + sys.exit(main()) + + +if not __name__ == "__main__" and inCalibre: + from calibre.customize import FileTypePlugin + + class K4DeDRM(FileTypePlugin): + name = 'K4PC, K4Mac, Mobi DeDRM' # Name of the plugin + description = 'Removes DRM from K4PC, K4Mac, and Mobi files. \ + Provided by the work of many including DiapDealer, SomeUpdates, IHeartCabbages, CMBDTC, Skindle, DarkReverser, ApprenticeAlf, etc.' + supported_platforms = ['osx', 'windows', 'linux'] # Platforms this plugin will run on + author = 'DiapDealer, SomeUpdates' # The author of this plugin + version = (0, 0, 1) # The version number of this plugin + file_types = set(['prc','mobi','azw']) # The file types that this plugin will be applied to + on_import = True # Run this plugin during the import + priority = 200 # run this plugin before mobidedrm, k4pcdedrm, k4dedrm + + def run(self, path_to_ebook): + from calibre.gui2 import is_ok_to_use_qt + from PyQt4.Qt import QMessageBox + global kindleDatabase + global openKindleInfo, CryptUnprotectData, GetUserName, GetVolumeSerialNumber, charMap1, charMap2, charMap3, charMap4 + if sys.platform.startswith('win'): + from k4pcutils import openKindleInfo, CryptUnprotectData, GetUserName, GetVolumeSerialNumber, charMap1, charMap2, charMap3, charMap4 + if sys.platform.startswith('darwin'): + from k4mutils import openKindleInfo, CryptUnprotectData, GetUserName, GetVolumeSerialNumber, charMap1, charMap2, charMap3, charMap4 + import mobidedrm + + pidnums = self.site_customization + + # first try with book specifc pid from K4PC or K4M + try: + kindleDatabase = None + ex = MobiPeek(path_to_ebook) + if ex.isNotEncrypted(): + return path_to_ebook + title = ex.getBookTitle() + exth = ex.getexthData() + pid = getK4Pids(exth, title) + unlocked_file = mobidedrm.getUnencryptedBook(path_to_ebook,pid) + except DrmException: + pass + except mobidedrm.DrmException: + pass + else: + of = self.temporary_file('.mobi') + of.write(unlocked_file) + of.close() + return of.name + + # now try from the pid list + pids = pidnums.split(',') + for pid in pids: + try: + unlocked_file = mobidedrm.getUnencryptedBook(path_to_ebook, pid) + except mobidedrm.DrmException: + pass + else: + of = self.temporary_file('.mobi') + of.write(unlocked_file) + of.close() + return of.name + + #if you reached here then no luck raise and exception + if is_ok_to_use_qt(): + d = QMessageBox(QMessageBox.Warning, "K4MobiDeDRM Plugin", "Error decoding: %s\n" % path_to_ebook) + d.show() + d.raise_() + d.exec_() + raise Exception("K4MobiDeDRM plugin could not decode the file") + return "" + + def customization_help(self, gui=False): + return 'Enter each 10 character PID separated by a comma (no spaces).' diff --git a/Calibre_Plugins/k4mobidedrm_plugin/k4mutils.py b/Calibre_Plugins/k4mobidedrm_plugin/k4mutils.py new file mode 100644 index 0000000..cb13e5f --- /dev/null +++ b/Calibre_Plugins/k4mobidedrm_plugin/k4mutils.py @@ -0,0 +1,319 @@ +# standlone set of Mac OSX specific routines needed for K4DeDRM + +from __future__ import with_statement + +import sys +import os + +#Exception Handling +class K4MDrmException(Exception): + pass + +import signal +import threading +import subprocess +from subprocess import Popen, PIPE, STDOUT + +# **heavily** chopped up and modfied version of asyncproc.py +# to make it actually work on Windows as well as Mac/Linux +# For the original see: +# "http://www.lysator.liu.se/~bellman/download/" +# author is "Thomas Bellman " +# available under GPL version 3 or Later + +# create an asynchronous subprocess whose output can be collected in +# a non-blocking manner + +# What a mess! Have to use threads just to get non-blocking io +# in a cross-platform manner + +# luckily all thread use is hidden within this class + +class Process(object): + def __init__(self, *params, **kwparams): + if len(params) <= 3: + kwparams.setdefault('stdin', subprocess.PIPE) + if len(params) <= 4: + kwparams.setdefault('stdout', subprocess.PIPE) + if len(params) <= 5: + kwparams.setdefault('stderr', subprocess.PIPE) + self.__pending_input = [] + self.__collected_outdata = [] + self.__collected_errdata = [] + self.__exitstatus = None + self.__lock = threading.Lock() + self.__inputsem = threading.Semaphore(0) + self.__quit = False + + self.__process = subprocess.Popen(*params, **kwparams) + + if self.__process.stdin: + self.__stdin_thread = threading.Thread( + name="stdin-thread", + target=self.__feeder, args=(self.__pending_input, + self.__process.stdin)) + self.__stdin_thread.setDaemon(True) + self.__stdin_thread.start() + + if self.__process.stdout: + self.__stdout_thread = threading.Thread( + name="stdout-thread", + target=self.__reader, args=(self.__collected_outdata, + self.__process.stdout)) + self.__stdout_thread.setDaemon(True) + self.__stdout_thread.start() + + if self.__process.stderr: + self.__stderr_thread = threading.Thread( + name="stderr-thread", + target=self.__reader, args=(self.__collected_errdata, + self.__process.stderr)) + self.__stderr_thread.setDaemon(True) + self.__stderr_thread.start() + + def pid(self): + return self.__process.pid + + def kill(self, signal): + self.__process.send_signal(signal) + + # check on subprocess (pass in 'nowait') to act like poll + def wait(self, flag): + if flag.lower() == 'nowait': + rc = self.__process.poll() + else: + rc = self.__process.wait() + if rc != None: + if self.__process.stdin: + self.closeinput() + if self.__process.stdout: + self.__stdout_thread.join() + if self.__process.stderr: + self.__stderr_thread.join() + return self.__process.returncode + + def terminate(self): + if self.__process.stdin: + self.closeinput() + self.__process.terminate() + + # thread gets data from subprocess stdout + def __reader(self, collector, source): + while True: + data = os.read(source.fileno(), 65536) + self.__lock.acquire() + collector.append(data) + self.__lock.release() + if data == "": + source.close() + break + return + + # thread feeds data to subprocess stdin + def __feeder(self, pending, drain): + while True: + self.__inputsem.acquire() + self.__lock.acquire() + if not pending and self.__quit: + drain.close() + self.__lock.release() + break + data = pending.pop(0) + self.__lock.release() + drain.write(data) + + # non-blocking read of data from subprocess stdout + def read(self): + self.__lock.acquire() + outdata = "".join(self.__collected_outdata) + del self.__collected_outdata[:] + self.__lock.release() + return outdata + + # non-blocking read of data from subprocess stderr + def readerr(self): + self.__lock.acquire() + errdata = "".join(self.__collected_errdata) + del self.__collected_errdata[:] + self.__lock.release() + return errdata + + # non-blocking write to stdin of subprocess + def write(self, data): + if self.__process.stdin is None: + raise ValueError("Writing to process with stdin not a pipe") + self.__lock.acquire() + self.__pending_input.append(data) + self.__inputsem.release() + self.__lock.release() + + # close stdinput of subprocess + def closeinput(self): + self.__lock.acquire() + self.__quit = True + self.__inputsem.release() + self.__lock.release() + + +# interface to needed routines in openssl's libcrypto +def _load_crypto_libcrypto(): + from ctypes import CDLL, byref, POINTER, c_void_p, c_char_p, c_int, c_long, \ + Structure, c_ulong, create_string_buffer, addressof, string_at, cast + from ctypes.util import find_library + + libcrypto = find_library('crypto') + if libcrypto is None: + raise K4MDrmException('libcrypto not found') + libcrypto = CDLL(libcrypto) + + AES_MAXNR = 14 + c_char_pp = POINTER(c_char_p) + c_int_p = POINTER(c_int) + + class AES_KEY(Structure): + _fields_ = [('rd_key', c_long * (4 * (AES_MAXNR + 1))), ('rounds', c_int)] + AES_KEY_p = POINTER(AES_KEY) + + def F(restype, name, argtypes): + func = getattr(libcrypto, name) + func.restype = restype + func.argtypes = argtypes + return func + + AES_cbc_encrypt = F(None, 'AES_cbc_encrypt',[c_char_p, c_char_p, c_ulong, AES_KEY_p, c_char_p,c_int]) + + AES_set_decrypt_key = F(c_int, 'AES_set_decrypt_key',[c_char_p, c_int, AES_KEY_p]) + + PKCS5_PBKDF2_HMAC_SHA1 = F(c_int, 'PKCS5_PBKDF2_HMAC_SHA1', + [c_char_p, c_ulong, c_char_p, c_ulong, c_ulong, c_ulong, c_char_p]) + + class LibCrypto(object): + def __init__(self): + self._blocksize = 0 + self._keyctx = None + self.iv = 0 + + def set_decrypt_key(self, userkey, iv): + self._blocksize = len(userkey) + if (self._blocksize != 16) and (self._blocksize != 24) and (self._blocksize != 32) : + raise K4MDrmException('AES improper key used') + return + keyctx = self._keyctx = AES_KEY() + self.iv = iv + rv = AES_set_decrypt_key(userkey, len(userkey) * 8, keyctx) + if rv < 0: + raise K4MDrmException('Failed to initialize AES key') + + def decrypt(self, data): + out = create_string_buffer(len(data)) + rv = AES_cbc_encrypt(data, out, len(data), self._keyctx, self.iv, 0) + if rv == 0: + raise K4MDrmException('AES decryption failed') + return out.raw + + def keyivgen(self, passwd): + salt = '16743' + saltlen = 5 + passlen = len(passwd) + iter = 0x3e8 + keylen = 80 + out = create_string_buffer(keylen) + rv = PKCS5_PBKDF2_HMAC_SHA1(passwd, passlen, salt, saltlen, iter, keylen, out) + return out.raw + return LibCrypto + +def _load_crypto(): + LibCrypto = None + try: + LibCrypto = _load_crypto_libcrypto() + except (ImportError, K4MDrmException): + pass + return LibCrypto + +LibCrypto = _load_crypto() + +# +# Utility Routines +# + +# uses a sub process to get the Hard Drive Serial Number using ioreg +# returns with the first found serial number in that class +def GetVolumeSerialNumber(): + cmdline = '/usr/sbin/ioreg -r -c AppleAHCIDiskDriver' + cmdline = cmdline.encode(sys.getfilesystemencoding()) + p = Process(cmdline, shell=True, bufsize=1, stdin=None, stdout=PIPE, stderr=PIPE, close_fds=False) + poll = p.wait('wait') + results = p.read() + reslst = results.split('\n') + sernum = '9999999999' + cnt = len(reslst) + for j in xrange(cnt): + resline = reslst[j] + pp = resline.find('"Serial Number" = "') + if pp >= 0: + sernum = resline[pp+19:] + sernum = sernum[:-1] + sernum = sernum.lstrip() + break + return sernum + +# uses unix env to get username instead of using sysctlbyname +def GetUserName(): + username = os.getenv('USER') + return username + +# Various character maps used to decrypt books. Probably supposed to act as obfuscation +charMap1 = "n5Pr6St7Uv8Wx9YzAb0Cd1Ef2Gh3Jk4M" +charMap2 = "ZB0bYyc1xDdW2wEV3Ff7KkPpL8UuGA4gz-Tme9Nn_tHh5SvXCsIiR6rJjQaqlOoM" +charMap3 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" +charMap4 = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789" + +def encode(data, map): + result = "" + for char in data: + value = ord(char) + Q = (value ^ 0x80) // len(map) + R = value % len(map) + result += map[Q] + result += map[R] + return result + +import hashlib + +def SHA256(message): + ctx = hashlib.sha256() + ctx.update(message) + return ctx.digest() + +# implements an Pseudo Mac Version of Windows built-in Crypto routine +def CryptUnprotectData(encryptedData): + sp = GetVolumeSerialNumber() + '!@#' + GetUserName() + passwdData = encode(SHA256(sp),charMap1) + crp = LibCrypto() + key_iv = crp.keyivgen(passwdData) + key = key_iv[0:32] + iv = key_iv[32:48] + crp.set_decrypt_key(key,iv) + cleartext = crp.decrypt(encryptedData) + return cleartext + +# Locate and open the .kindle-info file +def openKindleInfo(): + home = os.getenv('HOME') + cmdline = 'find "' + home + '/Library/Application Support" -name ".kindle-info"' + cmdline = cmdline.encode(sys.getfilesystemencoding()) + p1 = Process(cmdline, shell=True, bufsize=1, stdin=None, stdout=PIPE, stderr=PIPE, close_fds=False) + poll = p1.wait('wait') + results = p1.read() + reslst = results.split('\n') + kinfopath = 'NONE' + cnt = len(reslst) + for j in xrange(cnt): + resline = reslst[j] + pp = resline.find('.kindle-info') + if pp >= 0: + kinfopath = resline + break + if not os.path.exists(kinfopath): + raise K4MDrmException('Error: .kindle-info file can not be found') + return open(kinfopath,'r') diff --git a/Calibre_Plugins/k4mobidedrm_plugin/k4pcutils.py b/Calibre_Plugins/k4mobidedrm_plugin/k4pcutils.py new file mode 100644 index 0000000..777376d --- /dev/null +++ b/Calibre_Plugins/k4mobidedrm_plugin/k4pcutils.py @@ -0,0 +1,107 @@ +# K4PC Windows specific routines + +from __future__ import with_statement + +import sys, os + +from ctypes import windll, c_char_p, c_wchar_p, c_uint, POINTER, byref, \ + create_unicode_buffer, create_string_buffer, CFUNCTYPE, addressof, \ + string_at, Structure, c_void_p, cast + +import _winreg as winreg + +import traceback + +MAX_PATH = 255 + +kernel32 = windll.kernel32 +advapi32 = windll.advapi32 +crypt32 = windll.crypt32 + + +# +# Various character maps used to decrypt books. Probably supposed to act as obfuscation +# +charMap1 = "n5Pr6St7Uv8Wx9YzAb0Cd1Ef2Gh3Jk4M" +charMap2 = "AaZzB0bYyCc1XxDdW2wEeVv3FfUuG4g-TtHh5SsIiR6rJjQq7KkPpL8lOoMm9Nn_" +charMap3 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" +charMap4 = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789" + +# +# Exceptions for all the problems that might happen during the script +# +class DrmException(Exception): + pass + + +class DataBlob(Structure): + _fields_ = [('cbData', c_uint), + ('pbData', c_void_p)] +DataBlob_p = POINTER(DataBlob) + + +def GetSystemDirectory(): + GetSystemDirectoryW = kernel32.GetSystemDirectoryW + GetSystemDirectoryW.argtypes = [c_wchar_p, c_uint] + GetSystemDirectoryW.restype = c_uint + def GetSystemDirectory(): + buffer = create_unicode_buffer(MAX_PATH + 1) + GetSystemDirectoryW(buffer, len(buffer)) + return buffer.value + return GetSystemDirectory +GetSystemDirectory = GetSystemDirectory() + +def GetVolumeSerialNumber(): + GetVolumeInformationW = kernel32.GetVolumeInformationW + GetVolumeInformationW.argtypes = [c_wchar_p, c_wchar_p, c_uint, + POINTER(c_uint), POINTER(c_uint), + POINTER(c_uint), c_wchar_p, c_uint] + GetVolumeInformationW.restype = c_uint + def GetVolumeSerialNumber(path = GetSystemDirectory().split('\\')[0] + '\\'): + vsn = c_uint(0) + GetVolumeInformationW(path, None, 0, byref(vsn), None, None, None, 0) + return str(vsn.value) + return GetVolumeSerialNumber +GetVolumeSerialNumber = GetVolumeSerialNumber() + + +def GetUserName(): + GetUserNameW = advapi32.GetUserNameW + GetUserNameW.argtypes = [c_wchar_p, POINTER(c_uint)] + GetUserNameW.restype = c_uint + def GetUserName(): + buffer = create_unicode_buffer(32) + size = c_uint(len(buffer)) + while not GetUserNameW(buffer, byref(size)): + buffer = create_unicode_buffer(len(buffer) * 2) + size.value = len(buffer) + return buffer.value.encode('utf-16-le')[::2] + return GetUserName +GetUserName = GetUserName() + + +def CryptUnprotectData(): + _CryptUnprotectData = crypt32.CryptUnprotectData + _CryptUnprotectData.argtypes = [DataBlob_p, c_wchar_p, DataBlob_p, + c_void_p, c_void_p, c_uint, DataBlob_p] + _CryptUnprotectData.restype = c_uint + def CryptUnprotectData(indata, entropy): + indatab = create_string_buffer(indata) + indata = DataBlob(len(indata), cast(indatab, c_void_p)) + entropyb = create_string_buffer(entropy) + entropy = DataBlob(len(entropy), cast(entropyb, c_void_p)) + outdata = DataBlob() + if not _CryptUnprotectData(byref(indata), None, byref(entropy), + None, None, 0, byref(outdata)): + raise DrmException("Failed to Unprotect Data") + return string_at(outdata.pbData, outdata.cbData) + return CryptUnprotectData +CryptUnprotectData = CryptUnprotectData() + +# +# Locate and open the Kindle.info file. +# +def openKindleInfo(): + regkey = winreg.OpenKey(winreg.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\") + path = winreg.QueryValueEx(regkey, 'Local AppData')[0] + return open(path+'\\Amazon\\Kindle For PC\\{AMAwzsaPaaZAzmZzZQzgZCAkZ3AjA_AY}\\kindle.info','r') diff --git a/Kindle_Mobi_Tools/lib/mobidedrm.py b/Calibre_Plugins/k4mobidedrm_plugin/mobidedrm.py similarity index 89% rename from Kindle_Mobi_Tools/lib/mobidedrm.py rename to Calibre_Plugins/k4mobidedrm_plugin/mobidedrm.py index 07d5f6f..5ed58a5 100644 --- a/Kindle_Mobi_Tools/lib/mobidedrm.py +++ b/Calibre_Plugins/k4mobidedrm_plugin/mobidedrm.py @@ -39,8 +39,12 @@ # trailing data byte flags - version 5 and higher AND header size >= 0xE4. # 0.15 - Now outputs 'hearbeat', and is also quicker for long files. # 0.16 - And reverts to 'done' not 'done.' at the end for unswindle compatibility. +# 0.17 - added modifications to support its use as an imported python module +# both inside calibre and also in other places (ie K4DeDRM tools) +# 0.17a - disabled the standalone plugin feature since a plugin can not import +# a plugin -__version__ = '0.16' +__version__ = '0.17' import sys import struct @@ -248,7 +252,42 @@ class DrmStripper: def getResult(self): return self.data_file -if not __name__ == "__main__": +def getUnencryptedBook(infile,pid): + sys.stdout=Unbuffered(sys.stdout) + data_file = file(infile, 'rb').read() + strippedFile = DrmStripper(data_file, pid) + return strippedFile.getResult() + +def main(argv=sys.argv): + sys.stdout=Unbuffered(sys.stdout) + print ('MobiDeDrm v%(__version__)s. ' + 'Copyright 2008-2010 The Dark Reverser.' % globals()) + if len(argv)<4: + print "Removes protection from Mobipocket books" + print "Usage:" + print " %s " % sys.argv[0] + return 1 + else: + infile = argv[1] + outfile = argv[2] + pid = argv[3] + try: + stripped_file = getUnencryptedBook(infile, pid) + file(outfile, 'wb').write(stripped_file) + except DrmException, e: + print "Error: %s" % e + return 1 + return 0 + + +if __name__ == "__main__": + sys.exit(main()) + +#if not __name__ == "__main__": +if False: + + # note a calibre plugin can not import code with another calibre plugin + # in it as it ends up registering two different plugins from calibre.customize import FileTypePlugin class MobiDeDRM(FileTypePlugin): @@ -256,7 +295,7 @@ if not __name__ == "__main__": description = 'Removes DRM from secure Mobi files' supported_platforms = ['linux', 'osx', 'windows'] # Platforms this plugin will run on author = 'The Dark Reverser' # The author of this plugin - version = (0, 1, 6) # The version number of this plugin + version = (0, 1, 7) # The version number of this plugin file_types = set(['prc','mobi','azw']) # The file types that this plugin will be applied to on_import = True # Run this plugin during the import @@ -270,41 +309,17 @@ if not __name__ == "__main__": try: unlocked_file = DrmStripper(data_file, i).getResult() except DrmException: - # ignore the error - pass + if is_ok_to_use_qt(): + d = QMessageBox(QMessageBox.Warning, "MobiDeDRM Plugin", "Error decoding: %s\n" % path_to_ebook) + d.show() + d.raise_() + d.exec_() + raise Exception("MobiDeDRM Plugin: Error decoding ebook") else: of = self.temporary_file('.mobi') of.write(unlocked_file) of.close() return of.name - if is_ok_to_use_qt(): - d = QMessageBox(QMessageBox.Warning, "MobiDeDRM Plugin", "Couldn't decode: %s\n\nImporting encrypted version." % path_to_ebook) - d.show() - d.raise_() - d.exec_() - return path_to_ebook def customization_help(self, gui=False): return 'Enter PID (separate multiple PIDs with comma)' - -if __name__ == "__main__": - sys.stdout=Unbuffered(sys.stdout) - print ('MobiDeDrm v%(__version__)s. ' - 'Copyright 2008-2010 The Dark Reverser.' % globals()) - if len(sys.argv)<4: - print "Removes protection from Mobipocket books" - print "Usage:" - print " %s " % sys.argv[0] - sys.exit(1) - else: - infile = sys.argv[1] - outfile = sys.argv[2] - pid = sys.argv[3] - data_file = file(infile, 'rb').read() - try: - strippedFile = DrmStripper(data_file, pid) - file(outfile, 'wb').write(strippedFile.getResult()) - except DrmException, e: - print "Error: %s" % e - sys.exit(1) - sys.exit(0) \ No newline at end of file diff --git a/Kindle_4_PC_Tools/K4PCDeDRM.pyw b/Kindle_4_PC_Tools/K4PCDeDRM.pyw deleted file mode 100644 index 87009c5..0000000 --- a/Kindle_4_PC_Tools/K4PCDeDRM.pyw +++ /dev/null @@ -1,186 +0,0 @@ -#!/usr/bin/env python -# vim:ts=4:sw=4:softtabstop=4:smarttab:expandtab - -import sys -sys.path.append('lib') -import os, os.path, urllib -import subprocess -from subprocess import Popen, PIPE, STDOUT -import subasyncio -from subasyncio import Process -import Tkinter -import Tkconstants -import tkFileDialog -import tkMessageBox -from scrolltextwidget import ScrolledText - -class MainDialog(Tkinter.Frame): - def __init__(self, root): - Tkinter.Frame.__init__(self, root, border=5) - self.root = root - self.interval = 2000 - self.p2 = None - self.status = Tkinter.Label(self, text='Remove Encryption from a K4PC eBook') - self.status.pack(fill=Tkconstants.X, expand=1) - body = Tkinter.Frame(self) - body.pack(fill=Tkconstants.X, expand=1) - sticky = Tkconstants.E + Tkconstants.W - body.grid_columnconfigure(1, weight=2) - - Tkinter.Label(body, text='K4PC eBook input file').grid(row=0, sticky=Tkconstants.E) - self.mobipath = Tkinter.Entry(body, width=50) - self.mobipath.grid(row=0, column=1, sticky=sticky) - cwd = os.getcwdu() - cwd = cwd.encode('utf-8') - self.mobipath.insert(0, cwd) - button = Tkinter.Button(body, text="...", command=self.get_mobipath) - button.grid(row=0, column=2) - - Tkinter.Label(body, text='Name for Unencrypted Output File').grid(row=1, sticky=Tkconstants.E) - self.outpath = Tkinter.Entry(body, width=50) - self.outpath.grid(row=1, column=1, sticky=sticky) - self.outpath.insert(0, '') - button = Tkinter.Button(body, text="...", command=self.get_outpath) - button.grid(row=1, column=2) - - msg1 = 'Conversion Log \n\n' - self.stext = ScrolledText(body, bd=5, relief=Tkconstants.RIDGE, height=15, width=60, wrap=Tkconstants.WORD) - self.stext.grid(row=3, column=0, columnspan=2,sticky=sticky) - self.stext.insert(Tkconstants.END,msg1) - - buttons = Tkinter.Frame(self) - buttons.pack() - self.sbotton = Tkinter.Button( - buttons, text="Start", width=10, command=self.convertit) - self.sbotton.pack(side=Tkconstants.LEFT) - - Tkinter.Frame(buttons, width=10).pack(side=Tkconstants.LEFT) - self.qbutton = Tkinter.Button( - buttons, text="Quit", width=10, command=self.quitting) - self.qbutton.pack(side=Tkconstants.RIGHT) - - # read from subprocess pipe without blocking - # invoked every interval via the widget "after" - # option being used, so need to reset it for the next time - def processPipe(self): - poll = self.p2.wait('nowait') - if poll != None: - text = self.p2.readerr() - text += self.p2.read() - msg = text + '\n\n' + 'Encryption successfully removed\n' - if poll != 0: - msg = text + '\n\n' + 'Error: Encryption Removal Failed\n' - self.showCmdOutput(msg) - self.p2 = None - self.sbotton.configure(state='normal') - return - text = self.p2.readerr() - text += self.p2.read() - self.showCmdOutput(text) - # make sure we get invoked again by event loop after interval - self.stext.after(self.interval,self.processPipe) - return - - # post output from subprocess in scrolled text widget - def showCmdOutput(self, msg): - if msg and msg !='': - msg = msg.encode('utf-8') - self.stext.insert(Tkconstants.END,msg) - self.stext.yview_pickplace(Tkconstants.END) - return - - # run as a subprocess via pipes and collect stdout - def mobirdr(self, infile, outfile): - # os.putenv('PYTHONUNBUFFERED', '1') - cmdline = 'python ./lib/k4pcdedrm.py "' + infile + '" "' + outfile + '"' - if sys.platform[0:3] == 'win': - search_path = os.environ['PATH'] - search_path = search_path.lower() - if search_path.find('python') >= 0: - cmdline = 'python lib\k4pcdedrm.py "' + infile + '" "' + outfile + '"' - else : - cmdline = 'lib\k4pcdedrm.py "' + infile + '" "' + outfile + '"' - - cmdline = cmdline.encode(sys.getfilesystemencoding()) - p2 = Process(cmdline, shell=True, bufsize=1, stdin=None, stdout=PIPE, stderr=PIPE, close_fds=False) - return p2 - - - def get_mobipath(self): - mobipath = tkFileDialog.askopenfilename( - parent=None, title='Select K4PC eBook File', - defaultextension='.prc', filetypes=[('Mobi eBook File', '.prc'), ('Mobi eBook File', '.azw'),('Mobi eBook File', '.mobi'), - ('All Files', '.*')]) - if mobipath: - mobipath = os.path.normpath(mobipath) - self.mobipath.delete(0, Tkconstants.END) - self.mobipath.insert(0, mobipath) - return - - def get_outpath(self): - mobipath = self.mobipath.get() - initname = os.path.basename(mobipath) - p = initname.find('.') - if p >= 0: initname = initname[0:p] - initname += '_nodrm.mobi' - outpath = tkFileDialog.asksaveasfilename( - parent=None, title='Select Unencrypted Mobi File to produce', - defaultextension='.mobi', initialfile=initname, - filetypes=[('Mobi files', '.mobi'), ('All files', '.*')]) - if outpath: - outpath = os.path.normpath(outpath) - self.outpath.delete(0, Tkconstants.END) - self.outpath.insert(0, outpath) - return - - def quitting(self): - # kill any still running subprocess - if self.p2 != None: - if (self.p2.wait('nowait') == None): - self.p2.terminate() - self.root.destroy() - - # actually ready to run the subprocess and get its output - def convertit(self): - # now disable the button to prevent multiple launches - self.sbotton.configure(state='disabled') - mobipath = self.mobipath.get() - outpath = self.outpath.get() - if not mobipath or not os.path.exists(mobipath): - self.status['text'] = 'Specified K4PC eBook file does not exist' - self.sbotton.configure(state='normal') - return - if not outpath: - self.status['text'] = 'No output file specified' - self.sbotton.configure(state='normal') - return - - log = 'Command = "python k4pcdedrm.py"\n' - log += 'K4PC Path = "'+ mobipath + '"\n' - log += 'Output File = "' + outpath + '"\n' - log += '\n\n' - log += 'Please Wait ...\n\n' - log = log.encode('utf-8') - self.stext.insert(Tkconstants.END,log) - self.p2 = self.mobirdr(mobipath, outpath) - - # python does not seem to allow you to create - # your own eventloop which every other gui does - strange - # so need to use the widget "after" command to force - # event loop to run non-gui events every interval - self.stext.after(self.interval,self.processPipe) - return - - -def main(argv=None): - root = Tkinter.Tk() - root.title('K4PC eBook Encryption Removal') - root.resizable(True, False) - root.minsize(300, 0) - MainDialog(root).pack(fill=Tkconstants.X, expand=1) - root.mainloop() - return 0 - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/Kindle_4_PC_Tools/Other_Tools/LZskindle4PCv1_1/EZskindle4PCv1_1_1.cpp b/Kindle_4_PC_Tools/Other_Tools/LZskindle4PCv1_1/EZskindle4PCv1_1_1.cpp deleted file mode 100644 index 535df90..0000000 --- a/Kindle_4_PC_Tools/Other_Tools/LZskindle4PCv1_1/EZskindle4PCv1_1_1.cpp +++ /dev/null @@ -1,88 +0,0 @@ -#include -#include -#include -#include - -using namespace std; - -int main(int argc, char *argv[]) -{ -// Variables - int TopazTrue = 0; - int strlength = 0; - char uinfile[80]; - char outfile[80]; - char command[80]; - char buffer[80]; - -// String initialization - strcpy(uinfile,""); - strcpy(outfile,""); - strcpy(buffer,""); - strcpy(command,"skindle "); // string preloaded with "skindle " - - - cout << "\n\n\n Please enter the name of the book to be converted:\n\n "; - cout << " Don't forget the prc file extension!\n\n "; - cout << " Watch out for zeros and Os. Zeros are skinny and Os are fat.\n\n\n "; - - cin >> uinfile; // get file name of the book to be converted from user - - - ifstream infile(uinfile); - infile.getline(buffer,4); - - - if (strncmp (buffer,"TPZ",3)==0) // open file and test first 3 char if TPZ then book is topaz - { - TopazTrue = 1; // This is a Topaz file - } - - - strlength = strlen(uinfile); - - if(strlength > 13) - { - strncat(outfile,uinfile,10); // Create output file name using first 10 char of input file name - } - else - { - strncat(outfile,uinfile, (strlength - 4)); // If file name is less than 10 characters - } - if(TopazTrue == 1) // This is Topaz Book - { - strcat(command,"-d "); // Add the topaz switch to the command line - - strcat(outfile,".tpz"); // give tpz file extension to topaz output file - } // end of TopazTrue - else - { - strcat(outfile,".azw"); - } // if not Topaz make it azw - - strcat(command,"-i "); // Add the input switch to the command line - strcat(command,uinfile); // add the input file name to the command line - strcat(command," -o "); // add the output switch to the command line - strcat(command,outfile); // Add the output file name to the command line - - cout << "\n\n The skindle program is called here.\n"; - cout << " Any errors reported between here and \"The command line used was:\"\n"; - cout << " Are errors from the skindle program. Not EZskindle4PC.\n\n"; - - - system(command); // call skindle program to convert the book - - - cout << "\n\n The command line used was:\n\n"; - cout << " " << command << "\n"; - cout << "\n\n\n Please note the output file is created from the input"; - cout << "\n file name. The file extension is changed to tpz for Topaz"; - cout << "\n files and to azw for non-Topaz files. Also, _EBOK is removed "; - cout << "\n from the file name. This is to make it eaiser to identify "; - cout << "\n the file with no DRM."; - - - - system("PAUSE"); - return EXIT_SUCCESS; -} diff --git a/Kindle_4_PC_Tools/Other_Tools/LZskindle4PCv1_1/EZskindle4PCv1_1_1.exe b/Kindle_4_PC_Tools/Other_Tools/LZskindle4PCv1_1/EZskindle4PCv1_1_1.exe deleted file mode 100644 index b40343c2b5cee41cf940b25512171fe506bff937..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 477291 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%0A(W@~XyOaL2y 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 diff --git a/Kindle_4_PC_Tools/Other_Tools/LZskindle4PCv1_1/LZskindle Read Me.txt b/Kindle_4_PC_Tools/Other_Tools/LZskindle4PCv1_1/LZskindle Read Me.txt deleted file mode 100644 index 59d97e0..0000000 --- a/Kindle_4_PC_Tools/Other_Tools/LZskindle4PCv1_1/LZskindle Read Me.txt +++ /dev/null @@ -1,44 +0,0 @@ -LZskindle4PCv1_1 The Lazy skindle program for those who are typing impared - -To setup: - -1. Create a new folder: example C:\skindle - -2. Place LZskindle4PCv1_1.exe and skindle.exe in this folder. - -3. Create 2 subfolders: C:\skindle\input - and C:\skindle\output - - -To run: - -1. Copy the book(s) you wish to remove DRM from into the input directory -(leave the originals in my kindle folder). - -2. Double click on LZskindle4PCv1_0.exe - -3. A DOS window will open and will show skindle being called for -each book in the input directory. - -4. The books with the DRM removed will now be in the output directory. - -Rev1_1 - -fixed program to allow any file extension. My testing indicates that -skindle does not care what file extension a file has. If it is a file type -that it can convert it will. If the file is not compatible it will close -and give an unknown file type message. - -Rev1_0 - -If the program is run with no files in the input directory you will get a -File not Found error and the program will terminate. - -PLEASE USE ONLY FOR YOUR PERSONAL USE ON BOOKS YOU PAID FOR!! - -This program is provided to allow you to archive your library in a format that -will outlast the kindle. Technology moves on and you should not have to reinvest -in an entire new library when the Kindle is obsolete. Please do not use this program -for piracy. - - diff --git a/Kindle_4_PC_Tools/Other_Tools/LZskindle4PCv1_1/LZskindle4PCv1_1.cpp b/Kindle_4_PC_Tools/Other_Tools/LZskindle4PCv1_1/LZskindle4PCv1_1.cpp deleted file mode 100644 index 1adaa93..0000000 --- a/Kindle_4_PC_Tools/Other_Tools/LZskindle4PCv1_1/LZskindle4PCv1_1.cpp +++ /dev/null @@ -1,150 +0,0 @@ -#include -#include -#include -//#include - -using namespace std; - -int main(int argc, char *argv[]) -{ - // Variable Declarations ?? - char buffer[80]; - int error = 0; -// int YesNo = 0; -// int exit = 0; - // Variables EZskindle4PC - int TopazTrue = 0; - int strlength = 0; - char uinfile[80]; - char outfile[80]; - char command[80]; - char buffer2[20]; - char tempfile[80]; - - // Initialize strings - strcpy(uinfile,""); - strcpy(outfile,""); - strcpy(buffer,""); - strcpy(buffer2,""); - strcpy(command,"skindle "); // string preloaded with "skindle " - - - //// Beginning of program code //////////////////////////////////////////////////////////// - - system("dir /b .\\input\\*.* > books.txt"); // Create txt file with list of books - // No testing of file type being done - // I am letting skindle determing if valid - // file type - // Read in the list of book file names - - ifstream infile("books.txt"); - - do // while not end of file - { - infile.getline(buffer,50); // load the first 50 characters of the line to buffer - - - if(strcmp(buffer, "")!= 0) // If there is file name in the buffer do this on last loop buffer will be empty - { - strcpy(uinfile,buffer); // load file name from buffer - - strcpy(tempfile,".\\input\\"); // load directory name for input files - strcat(tempfile,buffer); // load the file name - ifstream infile2(tempfile); // open the book file for reading - infile2.getline(buffer2,4); // load first 4 char from file - - infile2.close(); // close the book file - - - if (strncmp (buffer2,"TPZ",3)==0) // open file and test first 3 char if TPZ then book is topaz - { - TopazTrue = 1; // This is a Topaz file - } - - - strlength = strlen(uinfile); - - if(strlength > 13) - { - strncat(outfile,uinfile,10); // Create output file name using first 10 char of input file name - } - else - { - strncat(outfile,uinfile, (strlength - 4)); // If file name is less than 10 characters - } - if(TopazTrue == 1) // This is Topaz Book - { - strcat(command,"-d "); // Add the topaz switch to the command line - - strcat(outfile,".tpz"); // give tpz file extension to topaz output file - } // end of TopazTrue - else - { - strcat(outfile,".azw"); - } // if not Topaz make it azw - - strcat(command,"-i "); // Add the input switch to the command line - strcat(command,".\\input\\"); // Add the input directory to the command line - strcat(command,uinfile); // add the input file name to the command line - strcat(command," -o "); // add the output switch to the command line - strcat(command,".\\output\\"); // Add directory for out files - strcat(command,outfile); // Add the output file name to the command line - - cout << "\n\n The skindle program is called here.\n"; - cout << " Any errors reported between here and \"The command line used was:\"\n"; - cout << " Are errors from the skindle program. Not EZskindle4PC.\n\n"; - - - system(command); // call skindle program to convert the book - - - cout << "\n\n The command line used was:\n\n"; - cout << " " << command << "\n\n\n\n"; - - - }// end of file name in the buffer required to prevent execution on EOF - - - - strcpy(command,"skindle "); // reset strings and variables for next book - strcpy(outfile,""); - strcpy(uinfile,""); - strcpy(buffer,""); - strcpy(buffer2,""); - TopazTrue = 0; - strlength = 0; - - }while (! infile.eof() ); // no more books in the file - - infile.close(); // close books.txt - - -// cout << "\n\n\n Do you want to delete all of the books from the input directory?\n\n"; -// cout << " DO NOT DELETE IF THESE ARE ONLY COPY OF YOUR BOOKS!!!!\n\n"; -// cout << " Y or N: "; - - -// do { // while not yes or no -// YesNo = getch(); // This is a DOS/Windows console command not standard C may not be -// // Usable under Unix or Mac implementations -// -// if((YesNo == 121)||(YesNo == 89)) // y or Y is true -// { -// exit = 1; // valid input exit do while loop -// cout << "\n\n"; -// system("del .\\input\\*.*"); // delete everything in the input directory -// cout << "\n\n"; -// } -// if((YesNo == 110)||(YesNo == 78)) // n or N is true -// { -// exit = 1; // valid input exit do while loop -// } -// -// }while (exit != 1); -// cout << "\n\nYesNo = " << YesNo << "\n\n"; - - system("PAUSE"); - - system("del books.txt"); // Delete txt file with list of books - return EXIT_SUCCESS; -} diff --git a/Kindle_4_PC_Tools/Other_Tools/LZskindle4PCv1_1/LZskindle4PCv1_1.exe b/Kindle_4_PC_Tools/Other_Tools/LZskindle4PCv1_1/LZskindle4PCv1_1.exe deleted file mode 100644 index d6e3a8f56b851b35c99b66c30518af90d7109b62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 597187 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 Xq^#%%`gkvoim^V7tUS25boc)O54&B5 diff --git a/Kindle_4_PC_Tools/Other_Tools/LZskindle4PCv1_1/ReadMe.txt b/Kindle_4_PC_Tools/Other_Tools/LZskindle4PCv1_1/ReadMe.txt deleted file mode 100644 index 40989fd..0000000 --- a/Kindle_4_PC_Tools/Other_Tools/LZskindle4PCv1_1/ReadMe.txt +++ /dev/null @@ -1,27 +0,0 @@ -Ezskindle4PC.exe - -This executable program makes using skindle easier for people using Windows PCs. - -I do not know if it will work under any other operating system, however, I have included -the source code should anyone want to port it into other operating systems. - -To use this program: - -1. Copy the ezskindle4PC.exe into the same directory with the skindle files. -2. Copy the kindle book into the same directory. -3. double click the EZskindle4PCv1_0.exe file. -a. A DOS window will open and you will be asked for the name of the file you want to work with. -4. Type in the books file name. (it will look something like B000WCTBTA_EBOK.prc) -5. The program will then check if it is a Topaz file and then create the output file name using the -first part of the input file name. It will use tpz file extension for Topaz books and will use azw -for non topaz books. The files with the azw format can be converted to other ebook formats using -Calibre. If you want to convert Topaz books to other formats you need to use Topaz tools not skindle. -6. The program will then create a command line and call the skindle program to process the book and -remove the DRM. -7. The program will pause and allow you to see the result of the skindle process. -8. Press any key to close the program. - -version 1.1 -Ok - -Found a new 32 bit compiler and I think I have worked out the kinks. diff --git a/Kindle_4_PC_Tools/Other_Tools/README_Other_K4PC_Tools.txt b/Kindle_4_PC_Tools/Other_Tools/README_Other_K4PC_Tools.txt deleted file mode 100644 index ff1513c..0000000 --- a/Kindle_4_PC_Tools/Other_Tools/README_Other_K4PC_Tools.txt +++ /dev/null @@ -1,9 +0,0 @@ -Readme.txt - -- LZskindle4PC is a front end for running skindle that makes it easier for some people who do not like command lines to use it. - -- skindle has completely reverse engineered how the book specific PID is generated for Kindle4PC so it can be very useful when new version of Kindle4PC are released and unswindle has not yet been updated. Unfortunately, skindle has some minor bugs that can actually result in corrupted eBooks. No one has yet tracked them down and fixed them. Until they do, use at your own risk. - -- unswindle can be used to find the book specific PID but it needs to be updated for each version of Kindle4PC that Amazon releases (and therefore is also useful for Linux users who have Wine). This program “patches” the Kindle4PC executable and therefore is very release specific. -Unfortunately unswindle v7 the latest, has not been updated to work with the latest version of Kindle for PC. You will need to find one of the older versions of Kindle4PC and prevent later updates in order to use this tool. - diff --git a/Kindle_4_PC_Tools/Other_Tools/skindle-06/Makefile b/Kindle_4_PC_Tools/Other_Tools/skindle-06/Makefile deleted file mode 100644 index d4f6938..0000000 --- a/Kindle_4_PC_Tools/Other_Tools/skindle-06/Makefile +++ /dev/null @@ -1,23 +0,0 @@ - -OBJS=skindle.o md5.o sha1.o b64.o skinutils.o cbuf.o mobi.o tpz.o - -CC=gcc -LD=gcc -EXE=skindle -EXTRALIBS=libz.a -lCrypt32 -lAdvapi32 -CFLAGS=-mno-cygwin - -#use the following to strip your binary -LDFLAGS=-s -mno-cygwin -#LDFLAGS=-mno-cygwin - -all: $(EXE) - -%.o: %.c - $(CC) -c $(CFLAGS) -g $(INC) $< -o $@ - -$(EXE): $(OBJS) - $(LD) $(LDFLAGS) -o $@ -g $(OBJS) $(EXTRALIBS) - -clean: - -@rm *.o diff --git a/Kindle_4_PC_Tools/Other_Tools/skindle-06/README b/Kindle_4_PC_Tools/Other_Tools/skindle-06/README deleted file mode 100644 index bf0a889..0000000 --- a/Kindle_4_PC_Tools/Other_Tools/skindle-06/README +++ /dev/null @@ -1,85 +0,0 @@ - -/* - Copyright 2010 BartSimpson aka skindle - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -/* - * Dependencies: zlib (included) - * build on cygwin using make and the included make file - * A fully functionaly windows executable is included - */ - -/* - * MUST be run on the computer on which KindleForPC is installed - * under the account that was used to purchase DRM'ed content. - * Requires your kindle.info file which can be found in something like: - * \...\Amazon\Kindle For PC\{AMAwzsaPaaZAzmZzZQzgZCAkZ3AjA_AY} - * where ... varies by platform but is "Local Settings\Application Data" on XP - * skindle will attempt to find this file automatically. - */ - -/* - What: KindleForPC DRM removal utility to preserve your fair use rights! - Why: Fair use is a well established doctrine, and I am no fan of vendor - lockin. - How: This utility implements the PID extraction, DRM key generation and - decryption algorithms employed by the KindleForPC application. This - is a stand alone app that does not require you to determine a PID on - your own, and it does not need to run KindleForPC in order to extract - any data from memory. - - Shoutz: The DarkReverser - thanks for mobidedrm! The last part of this - is just a C port of mobidedrm. - labba and I<3cabbages for motivating me to do this the right way. - You guys shouldn't need to spend all your time responding to all the - changes Amazon is going to force you to make in unswindle each time - the release a new version. - CMBDTC - nice work on the topaz break! - Lawrence Lessig - You are my hero. 'Nuff said. - Cory Doctorow - A voice of reason in a sea of insanity - Thumbs down: Disney, MPAA, RIAA - you guys suck. Making billions off - of the exploitation of works out of copyright while vigourously - pushing copyright extension to prevent others from doing the same - is the height of hypocrasy. - Congress - you guys suck too. Why you arrogant pricks think you - are smarter than the founding fathers is beyond me. - */ - -Rationale: -Need a tool to enable fair use of purchased ebook content. -Need a tool that is not dependent on any particular version of -KindleForPC and that does not need to run KindleForPC in order to -extract a PID. The tool documents the structure of the kindle.info -file and the data and algorthims that are used to derive per book -PID values. - -Installing: -A compiled binary is included. Though it was built using cygwin, it -should not require a cygwin installation in order to run it. To build -from source, you will need cygwin with gcc and make. -This has not been tested with Visual Studio, though you may be able to -pile all the files into a project and add the Crypt32.lib, Advapi32 and -zlib1 dependencies to build it. - -usage: ./skindle [-d] [-v] -i -o [-k kindle.info file] [-p pid] - -d optional, for topaz files only, produce a decompressed output file - -i required name of the input mobi or topaz file - -o required name of the output file to generate - -k optional kindle.info path - -v dump the contents of kindle.info - -p additional PID values to attempt (can specifiy multiple times) - -You only need to specify a kindle.info path if skindle can't find -your kindle.info file automatically \ No newline at end of file diff --git a/Kindle_4_PC_Tools/Other_Tools/skindle-06/b64.c b/Kindle_4_PC_Tools/Other_Tools/skindle-06/b64.c deleted file mode 100644 index 74c82d2..0000000 --- a/Kindle_4_PC_Tools/Other_Tools/skindle-06/b64.c +++ /dev/null @@ -1,80 +0,0 @@ -/*********************************************************************\ -LICENCE: Copyright (c) 2001 Bob Trower, Trantor Standard Systems Inc. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated - documentation files (the "Software"), to deal in the - Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - The above copyright notice and this permission notice shall - be included in all copies or substantial portions of the - Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY - KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS - OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -VERSION HISTORY: - Bob Trower 08/04/01 -- Create Version 0.00.00B - -\******************************************************************* */ - -#include - -/* -** Translation Table as described in RFC1113 -*/ -static const char cb64[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - -/* -** encodeblock -** -** encode 3 8-bit binary bytes as 4 '6-bit' characters -*/ -void encodeblock(unsigned char in[3], unsigned char out[4], int len) { - out[0] = cb64[ in[0] >> 2 ]; - out[1] = cb64[ ((in[0] & 0x03) << 4) | ((in[1] & 0xf0) >> 4) ]; - out[2] = (unsigned char) (len > 1 ? cb64[ ((in[1] & 0x0f) << 2) | ((in[2] & 0xc0) >> 6) ] : '='); - out[3] = (unsigned char) (len > 2 ? cb64[ in[2] & 0x3f ] : '='); -} - -/* -** encode -** -** base64 encode a stream adding padding and line breaks as per spec. -*/ -unsigned int base64(unsigned char *inbuf, unsigned int len, unsigned char *outbuf) { - unsigned char in[3], out[4]; - int c; - unsigned int i = 0; - unsigned int outlen = 0; - while (i < len) { - int n = 0; - for(c = 0; c < 3; c++, i++) { - if (i < len) { - in[c] = inbuf[i]; - n++; - } - else { - in[c] = 0; - } - } - if (n) { - encodeblock(in, out, n); - for(c = 0; c < 4; c++) { - outbuf[outlen++] = out[c]; - } - } - } - return outlen; -} - diff --git a/Kindle_4_PC_Tools/Other_Tools/skindle-06/cbuf.c b/Kindle_4_PC_Tools/Other_Tools/skindle-06/cbuf.c deleted file mode 100644 index 60112e2..0000000 --- a/Kindle_4_PC_Tools/Other_Tools/skindle-06/cbuf.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - Copyright 2010 BartSimpson aka skindle - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -#include -#include -#include "cbuf.h" - -cbuf *b_new(unsigned int size) { - cbuf *b = (cbuf*)calloc(sizeof(cbuf), 1); - if (b) { - b->buf = (unsigned char *)malloc(size); - b->size = b->buf ? size : 0; - } - return b; -} - -void b_free(cbuf *b) { - if (b) { - free(b->buf); - free(b); - } -} - -void b_add_byte(cbuf *b, unsigned char ch) { - if (b == NULL) return; - if (b->idx == b->size) { - unsigned char *p = realloc(b->buf, b->size * 2); - if (p) { - b->buf = p; - b->size = b->size * 2; - } - } - if (b->idx < b->size) { - b->buf[b->idx++] = ch; - } -} - -void b_add_buf(cbuf *b, unsigned char *buf, unsigned int len) { - if (b == NULL) return; - unsigned int new_sz = b->idx + len; - while (b->size < new_sz) { - unsigned char *p = realloc(b->buf, b->size * 2); - if (p) { - b->buf = p; - b->size = b->size * 2; - } - else break; - } - if ((b->idx + len) <= b->size) { - memcpy(b->buf + b->idx, buf, len); - b->idx += len; - } -} - -void b_add_str(cbuf *b, const char *buf) { - if (b == NULL) return; - unsigned int len = strlen(buf); - unsigned int new_sz = b->idx + len; - while (b->size < new_sz) { - unsigned char *p = realloc(b->buf, b->size * 2); - if (p) { - b->buf = p; - b->size = b->size * 2; - } - else break; - } - if ((b->idx + len) <= b->size) { - memcpy(b->buf + b->idx, buf, len); - b->idx += len; - } -} - diff --git a/Kindle_4_PC_Tools/Other_Tools/skindle-06/cbuf.h b/Kindle_4_PC_Tools/Other_Tools/skindle-06/cbuf.h deleted file mode 100644 index 738dfd2..0000000 --- a/Kindle_4_PC_Tools/Other_Tools/skindle-06/cbuf.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - Copyright 2010 BartSimpson aka skindle - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -#ifndef __CBUF_H -#define __CBUF_H - -typedef struct _cbuf { - unsigned int size; //current size - unsigned int idx; //current position - unsigned char *buf; -} cbuf; - -cbuf *b_new(unsigned int size); -void b_free(cbuf *b); -void b_add_byte(cbuf *b, unsigned char ch); -void b_add_buf(cbuf *b, unsigned char *buf, unsigned int len); -void b_add_str(cbuf *b, const char *buf); - -#endif diff --git a/Kindle_4_PC_Tools/Other_Tools/skindle-06/libz.a b/Kindle_4_PC_Tools/Other_Tools/skindle-06/libz.a deleted file mode 100644 index 0a2e3b5d9071a337e9b2a1da14307b59cef39970..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81176 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 GNB#j(`UH&t diff --git a/Kindle_4_PC_Tools/Other_Tools/skindle-06/md5.c b/Kindle_4_PC_Tools/Other_Tools/skindle-06/md5.c deleted file mode 100644 index c35d96c..0000000 --- a/Kindle_4_PC_Tools/Other_Tools/skindle-06/md5.c +++ /dev/null @@ -1,381 +0,0 @@ -/* - Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. All rights reserved. - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - L. Peter Deutsch - ghost@aladdin.com - - */ -/* $Id: md5.c,v 1.6 2002/04/13 19:20:28 lpd Exp $ */ -/* - Independent implementation of MD5 (RFC 1321). - - This code implements the MD5 Algorithm defined in RFC 1321, whose - text is available at - http://www.ietf.org/rfc/rfc1321.txt - The code is derived from the text of the RFC, including the test suite - (section A.5) but excluding the rest of Appendix A. It does not include - any code or documentation that is identified in the RFC as being - copyrighted. - - The original and principal author of md5.c is L. Peter Deutsch - . Other authors are noted in the change history - that follows (in reverse chronological order): - - 2002-04-13 lpd Clarified derivation from RFC 1321; now handles byte order - either statically or dynamically; added missing #include - in library. - 2002-03-11 lpd Corrected argument list for main(), and added int return - type, in test program and T value program. - 2002-02-21 lpd Added missing #include in test program. - 2000-07-03 lpd Patched to eliminate warnings about "constant is - unsigned in ANSI C, signed in traditional"; made test program - self-checking. - 1999-11-04 lpd Edited comments slightly for automatic TOC extraction. - 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5). - 1999-05-03 lpd Original version. - */ - -#include "md5.h" -#include - -#undef BYTE_ORDER /* 1 = big-endian, -1 = little-endian, 0 = unknown */ -#ifdef ARCH_IS_BIG_ENDIAN -# define BYTE_ORDER (ARCH_IS_BIG_ENDIAN ? 1 : -1) -#else -# define BYTE_ORDER 0 -#endif - -#define T_MASK ((md5_word_t)~0) -#define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87) -#define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9) -#define T3 0x242070db -#define T4 /* 0xc1bdceee */ (T_MASK ^ 0x3e423111) -#define T5 /* 0xf57c0faf */ (T_MASK ^ 0x0a83f050) -#define T6 0x4787c62a -#define T7 /* 0xa8304613 */ (T_MASK ^ 0x57cfb9ec) -#define T8 /* 0xfd469501 */ (T_MASK ^ 0x02b96afe) -#define T9 0x698098d8 -#define T10 /* 0x8b44f7af */ (T_MASK ^ 0x74bb0850) -#define T11 /* 0xffff5bb1 */ (T_MASK ^ 0x0000a44e) -#define T12 /* 0x895cd7be */ (T_MASK ^ 0x76a32841) -#define T13 0x6b901122 -#define T14 /* 0xfd987193 */ (T_MASK ^ 0x02678e6c) -#define T15 /* 0xa679438e */ (T_MASK ^ 0x5986bc71) -#define T16 0x49b40821 -#define T17 /* 0xf61e2562 */ (T_MASK ^ 0x09e1da9d) -#define T18 /* 0xc040b340 */ (T_MASK ^ 0x3fbf4cbf) -#define T19 0x265e5a51 -#define T20 /* 0xe9b6c7aa */ (T_MASK ^ 0x16493855) -#define T21 /* 0xd62f105d */ (T_MASK ^ 0x29d0efa2) -#define T22 0x02441453 -#define T23 /* 0xd8a1e681 */ (T_MASK ^ 0x275e197e) -#define T24 /* 0xe7d3fbc8 */ (T_MASK ^ 0x182c0437) -#define T25 0x21e1cde6 -#define T26 /* 0xc33707d6 */ (T_MASK ^ 0x3cc8f829) -#define T27 /* 0xf4d50d87 */ (T_MASK ^ 0x0b2af278) -#define T28 0x455a14ed -#define T29 /* 0xa9e3e905 */ (T_MASK ^ 0x561c16fa) -#define T30 /* 0xfcefa3f8 */ (T_MASK ^ 0x03105c07) -#define T31 0x676f02d9 -#define T32 /* 0x8d2a4c8a */ (T_MASK ^ 0x72d5b375) -#define T33 /* 0xfffa3942 */ (T_MASK ^ 0x0005c6bd) -#define T34 /* 0x8771f681 */ (T_MASK ^ 0x788e097e) -#define T35 0x6d9d6122 -#define T36 /* 0xfde5380c */ (T_MASK ^ 0x021ac7f3) -#define T37 /* 0xa4beea44 */ (T_MASK ^ 0x5b4115bb) -#define T38 0x4bdecfa9 -#define T39 /* 0xf6bb4b60 */ (T_MASK ^ 0x0944b49f) -#define T40 /* 0xbebfbc70 */ (T_MASK ^ 0x4140438f) -#define T41 0x289b7ec6 -#define T42 /* 0xeaa127fa */ (T_MASK ^ 0x155ed805) -#define T43 /* 0xd4ef3085 */ (T_MASK ^ 0x2b10cf7a) -#define T44 0x04881d05 -#define T45 /* 0xd9d4d039 */ (T_MASK ^ 0x262b2fc6) -#define T46 /* 0xe6db99e5 */ (T_MASK ^ 0x1924661a) -#define T47 0x1fa27cf8 -#define T48 /* 0xc4ac5665 */ (T_MASK ^ 0x3b53a99a) -#define T49 /* 0xf4292244 */ (T_MASK ^ 0x0bd6ddbb) -#define T50 0x432aff97 -#define T51 /* 0xab9423a7 */ (T_MASK ^ 0x546bdc58) -#define T52 /* 0xfc93a039 */ (T_MASK ^ 0x036c5fc6) -#define T53 0x655b59c3 -#define T54 /* 0x8f0ccc92 */ (T_MASK ^ 0x70f3336d) -#define T55 /* 0xffeff47d */ (T_MASK ^ 0x00100b82) -#define T56 /* 0x85845dd1 */ (T_MASK ^ 0x7a7ba22e) -#define T57 0x6fa87e4f -#define T58 /* 0xfe2ce6e0 */ (T_MASK ^ 0x01d3191f) -#define T59 /* 0xa3014314 */ (T_MASK ^ 0x5cfebceb) -#define T60 0x4e0811a1 -#define T61 /* 0xf7537e82 */ (T_MASK ^ 0x08ac817d) -#define T62 /* 0xbd3af235 */ (T_MASK ^ 0x42c50dca) -#define T63 0x2ad7d2bb -#define T64 /* 0xeb86d391 */ (T_MASK ^ 0x14792c6e) - - -static void -md5_process(md5_state_t *pms, const md5_byte_t *data /*[64]*/) -{ - md5_word_t - a = pms->abcd[0], b = pms->abcd[1], - c = pms->abcd[2], d = pms->abcd[3]; - md5_word_t t; -#if BYTE_ORDER > 0 - /* Define storage only for big-endian CPUs. */ - md5_word_t X[16]; -#else - /* Define storage for little-endian or both types of CPUs. */ - md5_word_t xbuf[16]; - const md5_word_t *X; -#endif - - { -#if BYTE_ORDER == 0 - /* - * Determine dynamically whether this is a big-endian or - * little-endian machine, since we can use a more efficient - * algorithm on the latter. - */ - static const int w = 1; - - if (*((const md5_byte_t *)&w)) /* dynamic little-endian */ -#endif -#if BYTE_ORDER <= 0 /* little-endian */ - { - /* - * On little-endian machines, we can process properly aligned - * data without copying it. - */ - if (!((data - (const md5_byte_t *)0) & 3)) { - /* data are properly aligned */ - X = (const md5_word_t *)data; - } else { - /* not aligned */ - memcpy(xbuf, data, 64); - X = xbuf; - } - } -#endif -#if BYTE_ORDER == 0 - else /* dynamic big-endian */ -#endif -#if BYTE_ORDER >= 0 /* big-endian */ - { - /* - * On big-endian machines, we must arrange the bytes in the - * right order. - */ - const md5_byte_t *xp = data; - int i; - -# if BYTE_ORDER == 0 - X = xbuf; /* (dynamic only) */ -# else -# define xbuf X /* (static only) */ -# endif - for (i = 0; i < 16; ++i, xp += 4) - xbuf[i] = xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24); - } -#endif - } - -#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n)))) - - /* Round 1. */ - /* Let [abcd k s i] denote the operation - a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */ -#define F(x, y, z) (((x) & (y)) | (~(x) & (z))) -#define SET(a, b, c, d, k, s, Ti)\ - t = a + F(b,c,d) + X[k] + Ti;\ - a = ROTATE_LEFT(t, s) + b - /* Do the following 16 operations. */ - SET(a, b, c, d, 0, 7, T1); - SET(d, a, b, c, 1, 12, T2); - SET(c, d, a, b, 2, 17, T3); - SET(b, c, d, a, 3, 22, T4); - SET(a, b, c, d, 4, 7, T5); - SET(d, a, b, c, 5, 12, T6); - SET(c, d, a, b, 6, 17, T7); - SET(b, c, d, a, 7, 22, T8); - SET(a, b, c, d, 8, 7, T9); - SET(d, a, b, c, 9, 12, T10); - SET(c, d, a, b, 10, 17, T11); - SET(b, c, d, a, 11, 22, T12); - SET(a, b, c, d, 12, 7, T13); - SET(d, a, b, c, 13, 12, T14); - SET(c, d, a, b, 14, 17, T15); - SET(b, c, d, a, 15, 22, T16); -#undef SET - - /* Round 2. */ - /* Let [abcd k s i] denote the operation - a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */ -#define G(x, y, z) (((x) & (z)) | ((y) & ~(z))) -#define SET(a, b, c, d, k, s, Ti)\ - t = a + G(b,c,d) + X[k] + Ti;\ - a = ROTATE_LEFT(t, s) + b - /* Do the following 16 operations. */ - SET(a, b, c, d, 1, 5, T17); - SET(d, a, b, c, 6, 9, T18); - SET(c, d, a, b, 11, 14, T19); - SET(b, c, d, a, 0, 20, T20); - SET(a, b, c, d, 5, 5, T21); - SET(d, a, b, c, 10, 9, T22); - SET(c, d, a, b, 15, 14, T23); - SET(b, c, d, a, 4, 20, T24); - SET(a, b, c, d, 9, 5, T25); - SET(d, a, b, c, 14, 9, T26); - SET(c, d, a, b, 3, 14, T27); - SET(b, c, d, a, 8, 20, T28); - SET(a, b, c, d, 13, 5, T29); - SET(d, a, b, c, 2, 9, T30); - SET(c, d, a, b, 7, 14, T31); - SET(b, c, d, a, 12, 20, T32); -#undef SET - - /* Round 3. */ - /* Let [abcd k s t] denote the operation - a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */ -#define H(x, y, z) ((x) ^ (y) ^ (z)) -#define SET(a, b, c, d, k, s, Ti)\ - t = a + H(b,c,d) + X[k] + Ti;\ - a = ROTATE_LEFT(t, s) + b - /* Do the following 16 operations. */ - SET(a, b, c, d, 5, 4, T33); - SET(d, a, b, c, 8, 11, T34); - SET(c, d, a, b, 11, 16, T35); - SET(b, c, d, a, 14, 23, T36); - SET(a, b, c, d, 1, 4, T37); - SET(d, a, b, c, 4, 11, T38); - SET(c, d, a, b, 7, 16, T39); - SET(b, c, d, a, 10, 23, T40); - SET(a, b, c, d, 13, 4, T41); - SET(d, a, b, c, 0, 11, T42); - SET(c, d, a, b, 3, 16, T43); - SET(b, c, d, a, 6, 23, T44); - SET(a, b, c, d, 9, 4, T45); - SET(d, a, b, c, 12, 11, T46); - SET(c, d, a, b, 15, 16, T47); - SET(b, c, d, a, 2, 23, T48); -#undef SET - - /* Round 4. */ - /* Let [abcd k s t] denote the operation - a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */ -#define I(x, y, z) ((y) ^ ((x) | ~(z))) -#define SET(a, b, c, d, k, s, Ti)\ - t = a + I(b,c,d) + X[k] + Ti;\ - a = ROTATE_LEFT(t, s) + b - /* Do the following 16 operations. */ - SET(a, b, c, d, 0, 6, T49); - SET(d, a, b, c, 7, 10, T50); - SET(c, d, a, b, 14, 15, T51); - SET(b, c, d, a, 5, 21, T52); - SET(a, b, c, d, 12, 6, T53); - SET(d, a, b, c, 3, 10, T54); - SET(c, d, a, b, 10, 15, T55); - SET(b, c, d, a, 1, 21, T56); - SET(a, b, c, d, 8, 6, T57); - SET(d, a, b, c, 15, 10, T58); - SET(c, d, a, b, 6, 15, T59); - SET(b, c, d, a, 13, 21, T60); - SET(a, b, c, d, 4, 6, T61); - SET(d, a, b, c, 11, 10, T62); - SET(c, d, a, b, 2, 15, T63); - SET(b, c, d, a, 9, 21, T64); -#undef SET - - /* Then perform the following additions. (That is increment each - of the four registers by the value it had before this block - was started.) */ - pms->abcd[0] += a; - pms->abcd[1] += b; - pms->abcd[2] += c; - pms->abcd[3] += d; -} - -void -md5_init(md5_state_t *pms) -{ - pms->count[0] = pms->count[1] = 0; - pms->abcd[0] = 0x67452301; - pms->abcd[1] = /*0xefcdab89*/ T_MASK ^ 0x10325476; - pms->abcd[2] = /*0x98badcfe*/ T_MASK ^ 0x67452301; - pms->abcd[3] = 0x10325476; -} - -void -md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes) -{ - const md5_byte_t *p = data; - int left = nbytes; - int offset = (pms->count[0] >> 3) & 63; - md5_word_t nbits = (md5_word_t)(nbytes << 3); - - if (nbytes <= 0) - return; - - /* Update the message length. */ - pms->count[1] += nbytes >> 29; - pms->count[0] += nbits; - if (pms->count[0] < nbits) - pms->count[1]++; - - /* Process an initial partial block. */ - if (offset) { - int copy = (offset + nbytes > 64 ? 64 - offset : nbytes); - - memcpy(pms->buf + offset, p, copy); - if (offset + copy < 64) - return; - p += copy; - left -= copy; - md5_process(pms, pms->buf); - } - - /* Process full blocks. */ - for (; left >= 64; p += 64, left -= 64) - md5_process(pms, p); - - /* Process a final partial block. */ - if (left) - memcpy(pms->buf, p, left); -} - -void -md5_finish(md5_state_t *pms, md5_byte_t digest[16]) -{ - static const md5_byte_t pad[64] = { - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - md5_byte_t data[8]; - int i; - - /* Save the length before padding. */ - for (i = 0; i < 8; ++i) - data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3)); - /* Pad to 56 bytes mod 64. */ - md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1); - /* Append the length. */ - md5_append(pms, data, 8); - for (i = 0; i < 16; ++i) - digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3)); -} diff --git a/Kindle_4_PC_Tools/Other_Tools/skindle-06/md5.h b/Kindle_4_PC_Tools/Other_Tools/skindle-06/md5.h deleted file mode 100644 index 698c995..0000000 --- a/Kindle_4_PC_Tools/Other_Tools/skindle-06/md5.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - Copyright (C) 1999, 2002 Aladdin Enterprises. All rights reserved. - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - L. Peter Deutsch - ghost@aladdin.com - - */ -/* $Id: md5.h,v 1.4 2002/04/13 19:20:28 lpd Exp $ */ -/* - Independent implementation of MD5 (RFC 1321). - - This code implements the MD5 Algorithm defined in RFC 1321, whose - text is available at - http://www.ietf.org/rfc/rfc1321.txt - The code is derived from the text of the RFC, including the test suite - (section A.5) but excluding the rest of Appendix A. It does not include - any code or documentation that is identified in the RFC as being - copyrighted. - - The original and principal author of md5.h is L. Peter Deutsch - . Other authors are noted in the change history - that follows (in reverse chronological order): - - 2002-04-13 lpd Removed support for non-ANSI compilers; removed - references to Ghostscript; clarified derivation from RFC 1321; - now handles byte order either statically or dynamically. - 1999-11-04 lpd Edited comments slightly for automatic TOC extraction. - 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5); - added conditionalization for C++ compilation from Martin - Purschke . - 1999-05-03 lpd Original version. - */ - -#ifndef md5_INCLUDED -# define md5_INCLUDED - -/* - * This package supports both compile-time and run-time determination of CPU - * byte order. If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be - * compiled to run only on little-endian CPUs; if ARCH_IS_BIG_ENDIAN is - * defined as non-zero, the code will be compiled to run only on big-endian - * CPUs; if ARCH_IS_BIG_ENDIAN is not defined, the code will be compiled to - * run on either big- or little-endian CPUs, but will run slightly less - * efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined. - */ - -typedef unsigned char md5_byte_t; /* 8-bit byte */ -typedef unsigned int md5_word_t; /* 32-bit word */ - -/* Define the state of the MD5 Algorithm. */ -typedef struct md5_state_s { - md5_word_t count[2]; /* message length in bits, lsw first */ - md5_word_t abcd[4]; /* digest buffer */ - md5_byte_t buf[64]; /* accumulate block */ -} md5_state_t; - -#ifdef __cplusplus -extern "C" -{ -#endif - -/* Initialize the algorithm. */ -void md5_init(md5_state_t *pms); - -/* Append a string to the message. */ -void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes); - -/* Finish the message and return the digest. */ -void md5_finish(md5_state_t *pms, md5_byte_t digest[16]); - -#ifdef __cplusplus -} /* end extern "C" */ -#endif - -#endif /* md5_INCLUDED */ diff --git a/Kindle_4_PC_Tools/Other_Tools/skindle-06/mobi.c b/Kindle_4_PC_Tools/Other_Tools/skindle-06/mobi.c deleted file mode 100644 index 25de87c..0000000 --- a/Kindle_4_PC_Tools/Other_Tools/skindle-06/mobi.c +++ /dev/null @@ -1,365 +0,0 @@ -/* - Copyright 2010 BartSimpson aka skindle - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -#include -#include -#include -#include -#include - -#include "mobi.h" - -unsigned char *getExthData(MobiFile *book, unsigned int type, unsigned int *len) { - unsigned int i; - unsigned int exthRecords = bswap_l(book->exth->recordCount); - ExthRecHeader *erh = book->exth->records; - - *len = 0; - - for (i = 0; i < exthRecords; i++) { - unsigned int recType = bswap_l(erh->type); - unsigned int recLen = bswap_l(erh->len); - - if (recLen < 8) { - fprintf(stderr, "Invalid exth record length %d\n", i); - return NULL; - } - - if (recType == type) { - *len = recLen - 8; - return (unsigned char*)(erh + 1); - } - erh = (ExthRecHeader*)(recLen + (char*)erh); - } - return NULL; -} - -void enumExthRecords(ExthHeader *eh) { - unsigned int exthRecords = bswap_l(eh->recordCount); - unsigned int i; - unsigned char *data; - ExthRecHeader *erh = eh->records; - - for (i = 0; i < exthRecords; i++) { - unsigned int recType = bswap_l(erh->type); - unsigned int recLen = bswap_l(erh->len); - - fprintf(stderr, "%d: type - %d, len %d\n", i, recType, recLen); - - if (recLen < 8) { - fprintf(stderr, "Invalid exth record length %d\n", i); - return; - } - - data = (unsigned char*)(erh + 1); - switch (recType) { - case 1: //drm_server_id - fprintf(stderr, "drm_server_id: %s\n", data); - break; - case 2: //drm_commerce_id - fprintf(stderr, "drm_commerce_id: %s\n", data); - break; - case 3: //drm_ebookbase_book_id - fprintf(stderr, "drm_ebookbase_book_id: %s\n", data); - break; - case 100: //author - fprintf(stderr, "author: %s\n", data); - break; - case 101: //publisher - fprintf(stderr, "publisher: %s\n", data); - break; - case 106: //publishingdate - fprintf(stderr, "publishingdate: %s\n", data); - break; - case 113: //asin - fprintf(stderr, "asin: %s\n", data); - break; - case 208: //book unique drm key - fprintf(stderr, "book drm key: %s\n", data); - break; - case 503: //updatedtitle - fprintf(stderr, "updatedtitle: %s\n", data); - break; - default: - break; - } - erh = (ExthRecHeader*)(recLen + (char*)erh); - } - -} - -//implementation of Pukall Cipher 1 -unsigned char *PC1(unsigned char *key, unsigned int klen, unsigned char *src, - unsigned char *dest, unsigned int len, int decryption) { - unsigned int sum1 = 0; - unsigned int sum2 = 0; - unsigned int keyXorVal = 0; - unsigned short wkey[8]; - unsigned int i; - if (klen != 16) { - fprintf(stderr, "Bad key length!\n"); - return NULL; - } - for (i = 0; i < 8; i++) { - wkey[i] = (key[i * 2] << 8) | key[i * 2 + 1]; - } - for (i = 0; i < len; i++) { - unsigned int temp1 = 0; - unsigned int byteXorVal = 0; - unsigned int j, curByte; - for (j = 0; j < 8; j++) { - temp1 ^= wkey[j]; - sum2 = (sum2 + j) * 20021 + sum1; - sum1 = (temp1 * 346) & 0xFFFF; - sum2 = (sum2 + sum1) & 0xFFFF; - temp1 = (temp1 * 20021 + 1) & 0xFFFF; - byteXorVal ^= temp1 ^ sum2; - } - curByte = src[i]; - if (!decryption) { - keyXorVal = curByte * 257; - } - curByte = ((curByte ^ (byteXorVal >> 8)) ^ byteXorVal) & 0xFF; - if (decryption) { - keyXorVal = curByte * 257; - } - for (j = 0; j < 8; j++) { - wkey[j] ^= keyXorVal; - } - dest[i] = curByte; - } - return dest; -} - -unsigned int getSizeOfTrailingDataEntry(unsigned char *ptr, unsigned int size) { - unsigned int bitpos = 0; - unsigned int result = 0; - if (size <= 0) { - return result; - } - while (1) { - unsigned int v = ptr[size - 1]; - result |= (v & 0x7F) << bitpos; - bitpos += 7; - size -= 1; - if ((v & 0x80) != 0 || (bitpos >= 28) || (size == 0)) { - return result; - } - } -} - -unsigned int getSizeOfTrailingDataEntries(unsigned char *ptr, unsigned int size, unsigned int flags) { - unsigned int num = 0; - unsigned int testflags = flags >> 1; - while (testflags) { - if (testflags & 1) { - num += getSizeOfTrailingDataEntry(ptr, size - num); - } - testflags >>= 1; - } - if (flags & 1) { - num += (ptr[size - num - 1] & 0x3) + 1; - } - return num; -} - -unsigned char *parseDRM(unsigned char *data, unsigned int count, unsigned char *pid, unsigned int pidlen) { - unsigned int i; - unsigned char temp_key_sum = 0; - unsigned char *found_key = NULL; - unsigned char *keyvec1 = "\x72\x38\x33\xB0\xB4\xF2\xE3\xCA\xDF\x09\x01\xD6\xE2\xE0\x3F\x96"; - unsigned char temp_key[16]; - - memset(temp_key, 0, 16); - memcpy(temp_key, pid, 8); - PC1(keyvec1, 16, temp_key, temp_key, 16, 0); - - for (i = 0; i < 16; i++) { - temp_key_sum += temp_key[i]; - } - - for (i = 0; i < count; i++) { - unsigned char kk[32]; - vstruct *v = (vstruct*)(data + i * 0x30); - kstruct *k = (kstruct*)PC1(temp_key, 16, v->cookie, kk, 32, 1); - - if (v->verification == k->ver && v->cksum[0] == temp_key_sum && - (bswap_l(k->flags) & 0x1F) == 1) { - found_key = (unsigned char*)malloc(16); - memcpy(found_key, k->finalkey, 16); - break; - } - } - return found_key; -} - -void freeMobiFile(MobiFile *book) { - free(book->hr); - free(book->record0); - free(book); -} - -MobiFile *parseMobiHeader(FILE *f) { - unsigned int numRecs, i, magic; - MobiFile *book = (MobiFile*)calloc(sizeof(MobiFile), 1); - book->f = f; - if (fread(&book->pdb, sizeof(PDB), 1, f) != 1) { - fprintf(stderr, "Failed to read Palm headers\n"); - free(book); - return NULL; - } - - //do BOOKMOBI check - if (book->pdb.type != 0x4b4f4f42 || book->pdb.creator != 0x49424f4d) { - fprintf(stderr, "Invalid header type or creator\n"); - free(book); - return NULL; - } - - book->recs = bswap_s(book->pdb.numRecs); - - book->hr = (HeaderRec*)malloc(book->recs * sizeof(HeaderRec)); - if (fread(book->hr, sizeof(HeaderRec), book->recs, f) != book->recs) { - fprintf(stderr, "Failed read of header record\n"); - freeMobiFile(book); - return NULL; - } - - book->record0_offset = bswap_l(book->hr[0].offset); - book->record0_size = bswap_l(book->hr[1].offset) - book->record0_offset; - - if (fseek(f, book->record0_offset, SEEK_SET) == -1) { - fprintf(stderr, "bad seek to header record offset\n"); - freeMobiFile(book); - return NULL; - } - - book->record0 = (unsigned char*)malloc(book->record0_size); - - if (fread(book->record0, book->record0_size, 1, f) != 1) { - fprintf(stderr, "bad read of record0\n"); - freeMobiFile(book); - return NULL; - } - - book->pdh = (PalmDocHeader*)(book->record0); - if (bswap_s(book->pdh->encryptionType) != 2) { - fprintf(stderr, "MOBI BOOK is not encrypted\n"); - freeMobiFile(book); - return NULL; - } - - book->textRecs = bswap_s(book->pdh->recordCount); - - book->mobi = (MobiHeader*)(book->pdh + 1); - if (book->mobi->id != 0x49424f4d) { - fprintf(stderr, "MOBI header not found\n"); - freeMobiFile(book); - return NULL; - } - - book->mobiLen = bswap_l(book->mobi->hdrLen); - book->extra_data_flags = 0; - - if (book->mobiLen >= 0xe4) { - book->extra_data_flags = bswap_s(book->mobi->extra_flags); - } - - if ((bswap_l(book->mobi->exthFlags) & 0x40) == 0) { - fprintf(stderr, "Missing exth header\n"); - freeMobiFile(book); - return NULL; - } - - book->exth = (ExthHeader*)(book->mobiLen + (char*)(book->mobi)); - if (book->exth->id != 0x48545845) { - fprintf(stderr, "EXTH header not found\n"); - freeMobiFile(book); - return NULL; - } - - //if you want a list of EXTH records, uncomment the following -// enumExthRecords(exth); - - book->drmCount = bswap_l(book->mobi->drmCount); - - if (book->drmCount == 0) { - fprintf(stderr, "no PIDs found in this file\n"); - freeMobiFile(book); - return NULL; - } - - return book; -} - -int writeMobiOutputFile(MobiFile *book, FILE *out, unsigned char *key, - unsigned int drmOffset, unsigned int drm_len) { - int i; - struct stat statbuf; - - fstat(fileno(book->f), &statbuf); - - // kill the drm keys - memset(book->record0 + drmOffset, 0, drm_len); - // kill the drm pointers - book->mobi->drmOffset = 0xffffffff; - book->mobi->drmCount = book->mobi->drmSize = book->mobi->drmFlags = 0; - // clear the crypto type - book->pdh->encryptionType = 0; - - fwrite(&book->pdb, sizeof(PDB), 1, out); - fwrite(book->hr, sizeof(HeaderRec), book->recs, out); - fwrite("\x00\x00", 1, 2, out); - fwrite(book->record0, book->record0_size, 1, out); - - //need to zero out exth 209 data - for (i = 1; i < book->recs; i++) { - unsigned int offset = bswap_l(book->hr[i].offset); - unsigned int len, extra_size = 0; - unsigned char *rec; - if (i == (book->recs - 1)) { //last record extends to end of file - len = statbuf.st_size - offset; - } - else { - len = bswap_l(book->hr[i + 1].offset) - offset; - } - //make sure we are at proper offset - while (ftell(out) < offset) { - fwrite("\x00", 1, 1, out); - } - rec = (unsigned char *)malloc(len); - if (fseek(book->f, offset, SEEK_SET) != 0) { - fprintf(stderr, "Failed record seek on input\n"); - freeMobiFile(book); - free(rec); - return 0; - } - if (fread(rec, len, 1, book->f) != 1) { - fprintf(stderr, "Failed record read on input\n"); - freeMobiFile(book); - free(rec); - return 0; - } - - if (i <= book->textRecs) { //decrypt if necessary - extra_size = getSizeOfTrailingDataEntries(rec, len, book->extra_data_flags); - PC1(key, 16, rec, rec, len - extra_size, 1); - } - fwrite(rec, len, 1, out); - free(rec); - } - return 1; -} diff --git a/Kindle_4_PC_Tools/Other_Tools/skindle-06/mobi.h b/Kindle_4_PC_Tools/Other_Tools/skindle-06/mobi.h deleted file mode 100644 index 61758c6..0000000 --- a/Kindle_4_PC_Tools/Other_Tools/skindle-06/mobi.h +++ /dev/null @@ -1,147 +0,0 @@ -/* - Copyright 2010 BartSimpson aka skindle - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -#ifndef __MOBI_H -#define __MOBI_H - -#include -#include "skinutils.h" - -#pragma pack(2) -typedef struct _PDB { - char name[32]; - unsigned short attrib; - unsigned short version; - unsigned int created; - unsigned int modified; - unsigned int backup; - unsigned int modNum; - unsigned int appInfoID; - unsigned int sortInfoID; - unsigned int type; - unsigned int creator; - unsigned int uniqueIDseed; - unsigned int nextRecordListID; - unsigned short numRecs; -} PDB; - -typedef struct _HeaderRec { - unsigned int offset; - unsigned int attribId; -} HeaderRec; - -#define attrib(x) ((x)&0xFF) -#define id(x) (bswap_l((x) & 0xFFFFFF00)) - -typedef struct _PalmDocHeader { - unsigned short compression; - unsigned short reserverd1; - unsigned int textLength; - unsigned short recordCount; - unsigned short recordSize; - unsigned short encryptionType; - unsigned short reserved2; -} PalmDocHeader; - - -//checked lengths are 24, 116, 208, 228 -typedef struct _MobiHeader { - unsigned int id; - unsigned int hdrLen; - unsigned int type; - unsigned int encoding; - unsigned int uniqueId; - unsigned int generator; - unsigned char reserved1[40]; - unsigned int firstNonBookIdx; - unsigned int nameOffset; - unsigned int nameLength; - unsigned int language; - unsigned int inputLang; - unsigned int outputLang; - unsigned int formatVersion; - unsigned int firstImageIdx; - unsigned char unknown1[16]; - unsigned int exthFlags; - unsigned char unknown2[36]; - unsigned int drmOffset; - unsigned int drmCount; - unsigned int drmSize; - unsigned int drmFlags; - unsigned char unknown3[58]; - unsigned short extra_flags; -} MobiHeader; - -typedef struct _ExthRecHeader { - unsigned int type; - unsigned int len; -} ExthRecHeader; - -typedef struct _ExthHeader { - unsigned int id; - unsigned int hdrLen; - unsigned int recordCount; - ExthRecHeader records[1]; -} ExthHeader; - -typedef struct _vstruct { - unsigned int verification; - unsigned int size; - unsigned int type; - unsigned char cksum[4]; - unsigned char cookie[32]; -} vstruct; - -typedef struct _kstruct { - unsigned int ver; - unsigned int flags; - unsigned char finalkey[16]; - unsigned int expiry; - unsigned int expiry2; -} kstruct; - -typedef struct _MobiFile { - FILE *f; - PDB pdb; - HeaderRec *hr; - PalmDocHeader *pdh; - MobiHeader *mobi; - ExthHeader *exth; - unsigned char *record0; - unsigned int record0_offset; - unsigned int record0_size; - unsigned int mobiLen; - unsigned int extra_data_flags; - unsigned int recs; - unsigned int drmCount; - unsigned int textRecs; - PidList *pids; //extra pids to try from command line -} MobiFile; - -unsigned char *getExthData(MobiFile *book, unsigned int type, unsigned int *len); -void enumExthRecords(ExthHeader *eh); -unsigned char *PC1(unsigned char *key, unsigned int klen, unsigned char *src, - unsigned char *dest, unsigned int len, int decryption); -unsigned int getSizeOfTrailingDataEntry(unsigned char *ptr, unsigned int size); -unsigned int getSizeOfTrailingDataEntries(unsigned char *ptr, unsigned int size, unsigned int flags); -unsigned char *parseDRM(unsigned char *data, unsigned int count, unsigned char *pid, unsigned int pidlen); - -void freeMobiFile(MobiFile *book); -MobiFile *parseMobiHeader(FILE *f); -int writeMobiOutputFile(MobiFile *book, FILE *out, unsigned char *key, - unsigned int drmOffset, unsigned int drm_len); - -#endif diff --git a/Kindle_4_PC_Tools/Other_Tools/skindle-06/sha1.c b/Kindle_4_PC_Tools/Other_Tools/skindle-06/sha1.c deleted file mode 100644 index cecae83..0000000 --- a/Kindle_4_PC_Tools/Other_Tools/skindle-06/sha1.c +++ /dev/null @@ -1,234 +0,0 @@ -/* - sha1.c: Implementation of SHA-1 Secure Hash Algorithm-1 - - Based upon: NIST FIPS180-1 Secure Hash Algorithm-1 - http://www.itl.nist.gov/fipspubs/fip180-1.htm - - Non-official Japanese Translation by HIRATA Yasuyuki: - http://yasu.asuka.net/translations/SHA-1.html - - Copyright (C) 2002 vi@nwr.jp. All rights reserved. - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgement in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as beging the original software. - 3. This notice may not be removed or altered from any source distribution. - - Note: - The copyright notice above is copied from md5.h by L. Peter Deutsch - . Thank him since I'm not a good speaker of English. :) - */ -#include -#include "sha1.h" - -/* - * Packing bytes to a word - * - * Should not assume p is aligned to word boundary - */ -static sha1_word_t packup(sha1_byte_t *p) -{ - /* Portable, but slow */ - return p[0] << 24 | p[1] << 16 | p[2] << 8 | p[3] << 0; -} - -/* - * Unpacking a word to bytes - * - * Should not assume p is aligned to word boundary - */ -static void unpackup(sha1_byte_t *p, sha1_word_t q) -{ - p[0] = (q >> 24) & 0xff; - p[1] = (q >> 16) & 0xff; - p[2] = (q >> 8) & 0xff; - p[3] = (q >> 0) & 0xff; -} - -/* - * Processing a block - */ -static void sha1_update_now(sha1_state_s *pms, sha1_byte_t *bp) -{ - sha1_word_t tmp, a, b, c, d, e, w[16+16]; - int i, s; - - /* pack 64 bytes into 16 words */ - for(i = 0; i < 16; i++) { - w[i] = packup(bp + i * sizeof(sha1_word_t)); - } - memcpy(w + 16, w + 0, sizeof(sha1_word_t) * 16); - - a = pms->sha1_h[0], b = pms->sha1_h[1], c = pms->sha1_h[2], d = pms->sha1_h[3], e = pms->sha1_h[4]; - -#define rot(x,n) (((x) << n) | ((x) >> (32-n))) -#define f0(b, c, d) ((b&c)|(~b&d)) -#define f1(b, c, d) (b^c^d) -#define f2(b, c, d) ((b&c)|(b&d)|(c&d)) -#define f3(b, c, d) (b^c^d) -#define k0 0x5a827999 -#define k1 0x6ed9eba1 -#define k2 0x8f1bbcdc -#define k3 0xca62c1d6 - - /* t=0-15 */ - s = 0; - for(i = 0; i < 16; i++) { - tmp = rot(a, 5) + f0(b, c, d) + e + w[s] + k0; - e = d; d = c; c = rot(b, 30); b = a; a = tmp; - s = (s + 1) % 16; - } - - /* t=16-19 */ - for(i = 16; i < 20; i++) { - w[s] = rot(w[s+13] ^ w[s+8] ^ w[s+2] ^ w[s], 1); - w[s+16] = w[s]; - tmp = rot(a, 5) + f0(b, c, d) + e + w[s] + k0; - e = d; d = c; c = rot(b, 30); b = a; a = tmp; - s = (s + 1) % 16; - } - - /* t=20-39 */ - for(i = 0; i < 20; i++) { - w[s] = rot(w[s+13] ^ w[s+8] ^ w[s+2] ^ w[s], 1); - w[s+16] = w[s]; - tmp = rot(a, 5) + f1(b, c, d) + e + w[s] + k1; - e = d; d = c; c = rot(b, 30); b = a; a = tmp; - s = (s + 1) % 16; - } - - /* t=40-59 */ - for(i = 0; i < 20; i++) { - w[s] = rot(w[s+13] ^ w[s+8] ^ w[s+2] ^ w[s], 1); - w[s+16] = w[s]; - tmp = rot(a, 5) + f2(b, c, d) + e + w[s] + k2; - e = d; d = c; c = rot(b, 30); b = a; a = tmp; - s = (s + 1) % 16; - } - - /* t=60-79 */ - for(i = 0; i < 20; i++) { - w[s] = rot(w[s+13] ^ w[s+8] ^ w[s+2] ^ w[s], 1); - w[s+16] = w[s]; - tmp = rot(a, 5) + f3(b, c, d) + e + w[s] + k3; - e = d; d = c; c = rot(b, 30); b = a; a = tmp; - s = (s + 1) % 16; - } - - pms->sha1_h[0] += a, pms->sha1_h[1] += b, pms->sha1_h[2] += c, pms->sha1_h[3] += d, pms->sha1_h[4] += e; -} - -/* - * Increment sha1_size1, sha1_size2 field of sha1_state_s - */ -static void incr(sha1_state_s *pms, int v) -{ - sha1_word_t q; - - q = pms->sha1_size1 + v * BITS; - if(q < pms->sha1_size1) { - pms->sha1_size2++; - } - pms->sha1_size1 = q; -} - -/* - * Initialize sha1_state_s as FIPS specifies - */ -void sha1_init(sha1_state_s *pms) -{ - memset(pms, 0, sizeof(*pms)); - pms->sha1_h[0] = 0x67452301; /* Initialize H[0]-H[4] */ - pms->sha1_h[1] = 0xEFCDAB89; - pms->sha1_h[2] = 0x98BADCFE; - pms->sha1_h[3] = 0x10325476; - pms->sha1_h[4] = 0xC3D2E1F0; -} - -/* - * Fill block and update output when needed - */ -void sha1_update(sha1_state_s *pms, sha1_byte_t *bufp, int length) -{ - /* Is the buffer partially filled? */ - if(pms->sha1_count != 0) { - if(pms->sha1_count + length >= (signed) sizeof(pms->sha1_buf)) { /* buffer is filled enough */ - int fil = sizeof(pms->sha1_buf) - pms->sha1_count; /* length to copy */ - - memcpy(pms->sha1_buf + pms->sha1_count, bufp, fil); - sha1_update_now(pms, pms->sha1_buf); - length -= fil; - bufp += fil; - pms->sha1_count = 0; - incr(pms, fil); - } else { - memcpy(pms->sha1_buf + pms->sha1_count, bufp, length); - pms->sha1_count += length; - incr(pms, length); - return; - } - } - - /* Loop to update state */ - for(;;) { - if(length < (signed) sizeof(pms->sha1_buf)) { /* Short to fill up the buffer */ - if(length) { - memcpy(pms->sha1_buf, bufp, length); - } - pms->sha1_count = length; - incr(pms, length); - break; - } - sha1_update_now(pms, bufp); - length -= sizeof(pms->sha1_buf); - bufp += sizeof(pms->sha1_buf); - incr(pms, sizeof(pms->sha1_buf)); - } -} - -void sha1_finish(sha1_state_s *pms, sha1_byte_t output[SHA1_OUTPUT_SIZE]) -{ - int i; - sha1_byte_t buf[1]; - - /* fill a bit */ - buf[0] = 0x80; - sha1_update(pms, buf, 1); - - /* Decrement sha1_size1, sha1_size2 */ - if((pms->sha1_size1 -= BITS) == 0) { - pms->sha1_size2--; - } - - /* fill zeros */ - if(pms->sha1_count > (signed) (sizeof(pms->sha1_buf) - 2 * sizeof(sha1_word_t))) { - memset(pms->sha1_buf + pms->sha1_count, 0, sizeof(pms->sha1_buf) - pms->sha1_count); - sha1_update_now(pms, pms->sha1_buf); - pms->sha1_count = 0; - } - memset(pms->sha1_buf + pms->sha1_count, 0, - sizeof(pms->sha1_buf) - pms->sha1_count - sizeof(sha1_word_t) * 2); - - /* fill last length */ - unpackup(pms->sha1_buf + sizeof(pms->sha1_buf) - sizeof(sha1_word_t) * 2, pms->sha1_size2); - unpackup(pms->sha1_buf + sizeof(pms->sha1_buf) - sizeof(sha1_word_t) * 1, pms->sha1_size1); - - /* final update */ - sha1_update_now(pms, pms->sha1_buf); - - /* move hash value to output byte array */ - for(i = 0; i < (signed) (sizeof(pms->sha1_h)/sizeof(sha1_word_t)); i++) { - unpackup(output + i * sizeof(sha1_word_t), pms->sha1_h[i]); - } -} diff --git a/Kindle_4_PC_Tools/Other_Tools/skindle-06/sha1.h b/Kindle_4_PC_Tools/Other_Tools/skindle-06/sha1.h deleted file mode 100644 index bae61e0..0000000 --- a/Kindle_4_PC_Tools/Other_Tools/skindle-06/sha1.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - sha1.h: Implementation of SHA-1 Secure Hash Algorithm-1 - - Based upon: NIST FIPS180-1 Secure Hash Algorithm-1 - http://www.itl.nist.gov/fipspubs/fip180-1.htm - - Non-official Japanese Translation by HIRATA Yasuyuki: - http://yasu.asuka.net/translations/SHA-1.html - - Copyright (C) 2002 vi@nwr.jp. All rights reserved. - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgement in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as beging the original software. - 3. This notice may not be removed or altered from any source distribution. - - Note: - The copyright notice above is copied from md5.h by L. Petet Deutsch - . Thank him since I'm not a good speaker of English. :) - */ -#ifndef SHA1_H -#define SHA1_H - -typedef unsigned int sha1_word_t; /* 32bits unsigned integer */ -typedef unsigned char sha1_byte_t; /* 8bits unsigned integer */ -#define BITS 8 - -/* Define the state of SHA-1 algorithm */ -typedef struct { - sha1_byte_t sha1_buf[64]; /* 512 bits */ - int sha1_count; /* How many bytes are used */ - sha1_word_t sha1_size1; /* Length counter Lower Word */ - sha1_word_t sha1_size2; /* Length counter Upper Word */ - sha1_word_t sha1_h[5]; /* Hash output */ -} sha1_state_s; -#define SHA1_OUTPUT_SIZE 20 /* in bytes */ - -/* External Functions */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* Initialize SHA-1 algorithm */ -void sha1_init(sha1_state_s *pms); - -/* Append a string to SHA-1 algorithm */ -void sha1_update(sha1_state_s *pms, sha1_byte_t *input_buffer, int length); - -/* Finish the SHA-1 algorithm and return the hash */ -void sha1_finish(sha1_state_s *pms, sha1_byte_t output[SHA1_OUTPUT_SIZE]); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Kindle_4_PC_Tools/Other_Tools/skindle-06/skindle.c b/Kindle_4_PC_Tools/Other_Tools/skindle-06/skindle.c deleted file mode 100644 index f9637aa..0000000 --- a/Kindle_4_PC_Tools/Other_Tools/skindle-06/skindle.c +++ /dev/null @@ -1,461 +0,0 @@ - -/* - Copyright 2010 BartSimpson aka skindle - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -/* - * Dependencies: none - * build on cygwin: - * gcc -o skindle skindle.c md5.c sha1.c b64.c -lCrypt32 - * or gcc -o skindle skindle.c md5.c sha1.c b64.c -lCrypt32 -mno-cygwin - * Under cygwin, you can just type make to build it. - * The code should compile with Visual Studio, just add all the files to - * a project and add the Crypt32.lib dependency and it should build as a - * Win32 console app. - */ - -/* - * MUST be run on the computer on which KindleForPC is installed - * under the account that was used to purchase DRM'ed content. - * Requires your kindle.info file which can be found in something like: - * \...\Amazon\Kindle For PC\{AMAwzsaPaaZAzmZzZQzgZCAkZ3AjA_AY} - * where ... varies by platform but is "Local Settings\Application Data" on XP - */ - -/* - What: KindleForPC DRM removal utility to preserve your fair use rights! - Why: Fair use is a well established doctrine, and I am no fan of vendor - lockin. - How: This utility implements the PID extraction, DRM key generation and - decryption algorithms employed by the KindleForPC application. This - is a stand alone app that does not require you to determine a PID on - your own, and it does not need to run KindleForPC in order to extract - any data from memory. - - Shoutz: The DarkReverser - thanks for mobidedrm! The last part of this - is just a C port of mobidedrm. - labba and I<3cabbages for motivating me to do this the right way. - You guys shouldn't need to spend all your time responding to all the - changes Amazon is going to force you to make in unswindle each time - the release a new version. - Lawrence Lessig - You are my hero. 'Nuff said. - Thumbs down: Disney, MPAA, RIAA - you guys suck. Making billions off - of the exploitation of works out of copyright while vigourously - pushing copyright extension to prevent others from doing the same - is the height of hypocrasy. - Congress - you guys suck too. Why you arrogant pricks think you - are smarter than the founding fathers is beyond me. - */ - -#include -#include - -#include -#include -#include -#include -#include - -#include "skinutils.h" -#include "cbuf.h" -#include "mobi.h" -#include "tpz.h" - -#include "zlib.h" - -int processTopaz(FILE *in, char *outFile, int explode, PidList *extraPids) { - //had to pile all these up here to please VS2009 - cbuf *tpzHeaders, *tpzBody; - struct stat statbuf; - FILE *out; - unsigned int i; - char *keysRecord, *keysRecordRecord; - TopazFile *topaz; - char *pid; - - fstat(fileno(in), &statbuf); - - topaz = parseTopazHeader(in); - if (topaz == NULL) { - fprintf(stderr, "Failed to parse topaz headers\n"); - return 0; - } - topaz->pids = extraPids; - - tpzHeaders = b_new(topaz->bodyOffset); - tpzBody = b_new(statbuf.st_size); - - parseMetadata(topaz); - -// dumpMap(bookMetadata); - - keysRecord = getMetadata(topaz, "keys"); - if (keysRecord == NULL) { - //fail - } - keysRecordRecord = getMetadata(topaz, keysRecord); - if (keysRecordRecord == NULL) { - //fail - } - - pid = getBookPid(keysRecord, strlen(keysRecord), keysRecordRecord, strlen(keysRecordRecord)); - - if (pid == NULL) { - fprintf(stderr, "Failed to extract pid automatically\n"); - } - else { - char *title = getMetadata(topaz, "Title"); - fprintf(stderr, "PID for %s is: %s\n", title ? title : "UNK", pid); - } - -/* - unique pid is computed as: - base64(sha1(idArray . kindleToken . 209_data . 209_tokens)) -*/ - - // - // Decrypt book key - // - - Payload *dkey = getBookPayloadRecord(topaz, "dkey", 0, 0); - - if (dkey == NULL) { - fprintf(stderr, "No dkey record found\n"); - freeTopazFile(topaz); - return 0; - } - - if (pid) { - topaz->bookKey = decryptDkeyRecords(dkey, pid); - free(pid); - } - if (topaz->bookKey == NULL) { - if (extraPids) { - int p; - freePayload(dkey); - for (p = 0; p < extraPids->numPids; p++) { - dkey = getBookPayloadRecord(topaz, "dkey", 0, 0); - topaz->bookKey = decryptDkeyRecords(dkey, extraPids->pidList[p]); - if (topaz->bookKey) break; - } - } - if (topaz->bookKey == NULL) { - fprintf(stderr, "No valid pids available, failed to find DRM key\n"); - freeTopazFile(topaz); - freePayload(dkey); - return 0; - } - } - - fprintf(stderr, "Found a DRM key!\n"); - for (i = 0; i < 8; i++) { - fprintf(stderr, "%02x", topaz->bookKey[i]); - } - fprintf(stderr, "\n"); - - out = fopen(outFile, "wb"); - if (out == NULL) { - fprintf(stderr, "Failed to open output file, quitting\n"); - freeTopazFile(topaz); - freePayload(dkey); - return 0; - } - - writeTopazOutputFile(topaz, out, tpzHeaders, tpzBody, explode); - fwrite(tpzHeaders->buf, tpzHeaders->idx, 1, out); - fwrite(tpzBody->buf, tpzBody->idx, 1, out); - fclose(out); - b_free(tpzHeaders); - b_free(tpzBody); - - freePayload(dkey); - - freeTopazFile(topaz); - return 1; -} - -int processMobi(FILE *prc, char *outFile, PidList *extraPids) { - //had to pile all these up here to please VS2009 - PDB header; - cbuf *keyBuf; - char *pid; - FILE *out; - unsigned int i, keyPtrLen; - unsigned char *keyPtr; - unsigned int drmOffset, drm_len; - unsigned char *drm, *found_key = NULL; - MobiFile *book; - int result; - - book = parseMobiHeader(prc); - - if (book == NULL) { - fprintf(stderr, "Failed to read mobi headers\n"); - return 0; - } - - book->pids = extraPids; - keyPtr = getExthData(book, 209, &keyPtrLen); - - keyBuf = b_new(128); - if (keyPtr != NULL) { - unsigned int idx; - for (idx = 0; idx < keyPtrLen; idx += 5) { - unsigned char *rec; - unsigned int dlen; - unsigned int rtype = bswap_l(*(unsigned int*)(keyPtr + idx + 1)); - rec = getExthData(book, rtype, &dlen); - if (rec != NULL) { - b_add_buf(keyBuf, rec, dlen); - } - } - } - - pid = getBookPid(keyPtr, keyPtrLen, keyBuf->buf, keyBuf->idx); - - b_free(keyBuf); - - if (pid == NULL) { - fprintf(stderr, "Failed to extract pid automatically\n"); - } - else { - fprintf(stderr, "PID for %s is: %s\n", book->pdb.name, pid); - } - -/* - unique pid is computed as: - base64(sha1(idArray . kindleToken . 209_data . 209_tokens)) -*/ - - drmOffset = bswap_l(book->mobi->drmOffset); - - drm_len = bswap_l(book->mobi->drmSize); - drm = book->record0 + drmOffset; - - if (pid) { - found_key = parseDRM(drm, book->drmCount, pid, 8); - free(pid); - } - if (found_key == NULL) { - if (extraPids) { - int p; - for (p = 0; p < extraPids->numPids; p++) { - found_key = parseDRM(drm, book->drmCount, extraPids->pidList[p], 8); - if (found_key) break; - } - } - if (found_key == NULL) { - fprintf(stderr, "No valid pids available, failed to find DRM key\n"); - freeMobiFile(book); - return 0; - } - } - fprintf(stderr, "Found a DRM key!\n"); - - out = fopen(outFile, "wb"); - if (out == NULL) { - fprintf(stderr, "Failed to open output file, quitting\n"); - freeMobiFile(book); - free(found_key); - return 0; - } - - result = writeMobiOutputFile(book, out, found_key, drmOffset, drm_len); - - fclose(out); - if (result == 0) { - _unlink(outFile); - } - freeMobiFile(book); - free(found_key); - return result; -} - -enum { - FileTypeUnk, - FileTypeMobi, - FileTypeTopaz -}; - -int getFileType(FILE *in) { - PDB p; - int type = FileTypeUnk; - fseek(in, 0, SEEK_SET); - fread(&p, sizeof(p), 1, in); - if (p.type == 0x4b4f4f42 && p.creator == 0x49424f4d) { - type = FileTypeMobi; - } - else if (strncmp(p.name, "TPZ0", 4) == 0) { - type = FileTypeTopaz; - } - fseek(in, 0, SEEK_SET); - return type; -} - -void usage() { - fprintf(stderr, "usage: ./skindle [-d] [-v] -i -o [-k kindle.info file] [-p pid]\n"); - fprintf(stderr, " -d optional, for topaz files only, produce a decompressed output file\n"); - fprintf(stderr, " -i required name of the input mobi or topaz file\n"); - fprintf(stderr, " -o required name of the output file to generate\n"); - fprintf(stderr, " -k optional kindle.info path\n"); - fprintf(stderr, " -v dump the contents of kindle.info\n"); - fprintf(stderr, " -p additional PID values to attempt (can specifiy multiple times)\n"); -} - -extern char *optarg; -extern int optind; - -int main(int argc, char **argv) { - //had to pile all these up here to please VS2009 - FILE *in; - int type, explode = 0; - int result = 0; - int firstArg = 1; - int opt; - PidList *pids = NULL; - char *infile = NULL, *outfile = NULL, *kinfo = NULL; - int dump = 0; - - while ((opt = getopt(argc, argv, "vdp:i:o:k:")) != -1) { - switch (opt) { - case 'v': - dump = 1; - break; - case 'd': - explode = 1; - break; - case 'p': { - int l = strlen(optarg); - if (l == 10) { - if (!verifyPidChecksum(optarg)) { - fprintf(stderr, "Invalid pid %s, skipping\n", optarg); - break; - } - optarg[8] = 0; - } - else if (l != 8) { - fprintf(stderr, "Invalid pid length for %s, skipping\n", optarg); - break; - } - if (pids == NULL) { - pids = (PidList*)malloc(sizeof(PidList)); - pids->numPids = 1; - pids->pidList[0] = optarg; - } - else { - pids = (PidList*)realloc(pids, sizeof(PidList) + pids->numPids * sizeof(unsigned char*)); - pids->pidList[pids->numPids++] = optarg; - } - break; - } - case 'k': - kinfo = optarg; - break; - case 'i': - infile = optarg; - break; - case 'o': - outfile = optarg; - break; - default: /* '?' */ - usage(); - exit(1); - } - } - - if (optind != argc) { - fprintf(stderr, "Extra options ignored\n"); - } - - if (!buildKindleMap(kinfo)) { - fprintf(stderr, "buildKindleMap failed\n"); - usage(); - exit(1); - } - - //The following loop dumps the contents of your kindle.info file - if (dump) { - MapList *ml; -// dumpKindleMap(); - fprintf(stderr, "\nDumping kindle.info contents:\n"); - for (ml = kindleMap; ml; ml = ml->next) { - DATA_BLOB DataIn; - DATA_BLOB DataOut; - DataIn.pbData = mazamaDecode(ml->value, (int*)&DataIn.cbData); - if (CryptUnprotectData(&DataIn, NULL, NULL, NULL, NULL, 1, &DataOut)) { - fprintf(stderr, "%s ==> %s\n", ml->key, translateKindleKey(ml->key)); - fwrite(DataOut.pbData, DataOut.cbData, 1, stderr); - fprintf(stderr, "\n\n"); - LocalFree(DataOut.pbData); - } - else { - fprintf(stderr, "CryptUnprotectData failed\n"); - } - free(DataIn.pbData); - } - } - - if (infile == NULL && outfile == NULL) { - //special case, user just wants to see kindle.info - freeMap(kindleMap); - exit(1); - } - - if (infile == NULL) { - fprintf(stderr, "Missing input file name\n"); - usage(); - freeMap(kindleMap); - exit(1); - } - - if (outfile == NULL) { - fprintf(stderr, "Missing output file name\n"); - usage(); - freeMap(kindleMap); - exit(1); - } - - in = fopen(infile, "rb"); - if (in == NULL) { - fprintf(stderr, "%s bad open, quitting\n", infile); - freeMap(kindleMap); - exit(1); - } - - type = getFileType(in); - if (type == FileTypeTopaz) { - result = processTopaz(in, outfile, explode, pids); - } - else if (type == FileTypeMobi) { - result = processMobi(in, outfile, pids); - } - else { - fprintf(stderr, "%s file type unknown, quitting\n", infile); - fclose(in); - freeMap(kindleMap); - exit(1); - } - - fclose(in); - if (result) { - fprintf(stderr, "Success! Enjoy!\n"); - } - else { - fprintf(stderr, "An error occurred, unable to process input file!\n"); - } - - freeMap(kindleMap); - return 0; -} diff --git a/Kindle_4_PC_Tools/Other_Tools/skindle-06/skindle.exe b/Kindle_4_PC_Tools/Other_Tools/skindle-06/skindle.exe deleted file mode 100644 index 3dc187f56c83686db493630c4e2180a5b7a4a926..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62976 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 diff --git a/Kindle_4_PC_Tools/Other_Tools/skindle-06/skinutils.c b/Kindle_4_PC_Tools/Other_Tools/skindle-06/skinutils.c deleted file mode 100644 index add3336..0000000 --- a/Kindle_4_PC_Tools/Other_Tools/skindle-06/skinutils.c +++ /dev/null @@ -1,539 +0,0 @@ -/* - Copyright 2010 BartSimpson aka skindle - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -#include -#include -#include -#include -#include -#include - -#include "skinutils.h" - -/* The kindle.info file created when you install KindleForPC is a set - * of key:value pairs delimited by '{'. The keys and values are encoded - * in a variety of ways. Keys are the mazama64 encoded md5 hash of the - * key name, while values are the mazama64 encoding of the blob returned - * by the Windows CryptProtectData function. The use of CryptProtectData - * is what locks things to a particular user/machine - - * kindle.info layout - - * Key:AbaZZ6z4a7ZxzLzkZcaqauZMZjZ_Ztz6 ("kindle.account.tokens") - * Value: mazama64Encode(CryptProtectData(some sha1 hash)) - - * Key:AsAWa4ZJAQaCZ7A3zrZSaZavZMarZFAw ("kindle.cookie.item") - * Value: mazama64Encode(CryptProtectData(base64(144 bytes of data))) - - * Key:ZHatAla4a-zTzWA-AvaeAvZQzKZ-agAz ("eulaVersionAccepted") - * Value: mazama64Encode(CryptProtectData(kindle version?)) - - * Key:ZiajZga7Z9zjZRz7AfZ-zRzUANZNZJzP ("login_date") - * Value: mazama64Encode(CryptProtectData(registration date)) - - * Key:ZkzeAUA-Z2ZYA2Z_ayA_ahZEATaEAOaG ("kindle.token.item") - * Value: mazama64Encode(CryptProtectData(multi-field crypto data)) - * {enc:xxx}{iv:xxx}{key:xxx}{name:xxx}{serial:xxx} - * enc:base64(binary blob) - * iv:base64(16 bytes) - * key:base64(256 bytes) - * name:base64("ADPTokenEncryptionKey") - * serial:base64("1") - - * Key:aVzrzRAFZ7aIzmASZOzVzIAGAKawzwaU ("login") - * Value: mazama64Encode(CryptProtectData(your amazon email)) - - * Key:avalzbzkAcAPAQA5ApZgaOZPzQZzaiaO mazama64Encode(md5("MazamaRandomNumber")) - * Value: mazama64Encode(CryptProtectData(mazama32Encode(32 bytes random data))) - - * Key:zgACzqAjZ2zzAmAJa6ZFaZALaYAlZrz- ("kindle.key.item") - * Value: mazama64Encode(CryptProtectData(RSA private key)) no password - - * Key:zga-aIANZPzbzfZ1zHZWZcA4afZMZcA_ ("kindle.name.info") - * Value: mazama64Encode(CryptProtectData(your name)) - - * Key:zlZ9afz1AfAVZjacaqa-ZHa1aIa_ajz7 ("kindle.device.info"); - * Value: mazama64Encode(CryptProtectData(the name of your kindle)) -*/ - -char *kindleKeys[] = { - "AbaZZ6z4a7ZxzLzkZcaqauZMZjZ_Ztz6", "kindle.account.tokens", - "AsAWa4ZJAQaCZ7A3zrZSaZavZMarZFAw", "kindle.cookie.item", - "ZHatAla4a-zTzWA-AvaeAvZQzKZ-agAz", "eulaVersionAccepted", - "ZiajZga7Z9zjZRz7AfZ-zRzUANZNZJzP", "login_date", - "ZkzeAUA-Z2ZYA2Z_ayA_ahZEATaEAOaG", "kindle.token.item", - "aVzrzRAFZ7aIzmASZOzVzIAGAKawzwaU", "login", - "avalzbzkAcAPAQA5ApZgaOZPzQZzaiaO", "MazamaRandomNumber", - "zgACzqAjZ2zzAmAJa6ZFaZALaYAlZrz-", "kindle.key.item", - "zga-aIANZPzbzfZ1zHZWZcA4afZMZcA_", "kindle.name.info", - "zlZ9afz1AfAVZjacaqa-ZHa1aIa_ajz7", "kindle.device.info" -}; - -MapList *kindleMap; - -unsigned short bswap_s(unsigned short s) { - return (s >> 8) | (s << 8); -} - -unsigned int bswap_l(unsigned int s) { - unsigned int u = bswap_s(s); - unsigned int l = bswap_s(s >> 16); - return (u << 16) | l; -} - -char *translateKindleKey(char *key) { - int n = sizeof(kindleKeys) / sizeof(char*); - int i; - for (i = 0; i < n; i += 2) { - if (strcmp(key, kindleKeys[i]) == 0) { - return kindleKeys[i + 1]; - } - } - return NULL; -} - -MapList *findNode(MapList *map, char *key) { - MapList *l; - for (l = map; l; l = l->next) { - if (strcmp(key, l->key) == 0) { - return l; - } - } - return NULL; -} - -MapList *findKindleNode(char *key) { - return findNode(kindleMap, key); -} - -char *getNodeValue(MapList *map, char *key) { - MapList *l; - for (l = map; l; l = l->next) { - if (strcmp(key, l->key) == 0) { - return l->value; - } - } - return NULL; -} - -char *getKindleValue(char *key) { - return getNodeValue(kindleMap, key); -} - -MapList *addMapNode(MapList *map, char *key, char *value) { - MapList *ml; - ml = findNode(map, key); - if (ml) { - free(ml->value); - ml->value = value; - return map; - } - else { - ml = (MapList*)malloc(sizeof(MapList)); - ml->key = key; - ml->value = value; - ml->next = map; - return ml; - } -} - -void dumpMap(MapList *m) { - MapList *l; - for (l = m; l; l = l->next) { - fprintf(stderr, "%s:%s\n", l->key, l->value); - } -} - -void freeMap(MapList *m) { - MapList *n; - while (m) { - n = m; - m = m->next; - free(n->key); - free(n->value); - free(n); - } -} - -void parseLine(char *line) { - char *colon = strchr(line, ':'); - if (colon) { - char *key, *value; - int len = colon - line; - key = (char*)malloc(len + 1); - *colon++ = 0; - strcpy(key, line); - len = strlen(colon); - value = (char*)malloc(len + 1); - strcpy(value, colon); - value[len] = 0; - kindleMap = addMapNode(kindleMap, key, value); - } -} - -void dumpKindleMap() { - dumpMap(kindleMap); -} - -int buildKindleMap(char *infoFile) { - int result = 0; - struct stat statbuf; - char ki[512]; - DWORD len = sizeof(ki); - if (infoFile == NULL) { - HKEY regkey; - fprintf(stderr, "Attempting to locate kindle.info\n"); - if (RegOpenKey(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\", ®key) != ERROR_SUCCESS) { - fprintf(stderr, "Unable to locate kindle.info, please specify path on command line\n"); - return result; - } - -// if (RegGetValue(regkey, "Local AppData", NULL, NULL, ki, &len) != ERROR_SUCCESS) { - if (RegQueryValueEx(regkey, "Local AppData", NULL, NULL, ki, &len) != ERROR_SUCCESS) { - RegCloseKey(regkey); - fprintf(stderr, "Unable to locate kindle.info, please specify path on command line\n"); - return result; - } - ki[len] = 0; - strncat(ki, "\\Amazon\\Kindle For PC\\{AMAwzsaPaaZAzmZzZQzgZCAkZ3AjA_AY}\\kindle.info", sizeof(ki) - 1 - strlen(ki)); - infoFile = ki; - fprintf(stderr, "Found kindle.info location\n"); - } - if (stat(infoFile, &statbuf) == 0) { - FILE *fd = fopen(infoFile, "rb"); - char *infoBuf = (char*)malloc(statbuf.st_size + 1); - infoBuf[statbuf.st_size] = 0; - if (fread(infoBuf, statbuf.st_size, 1, fd) == 1) { - char *end = infoBuf + statbuf.st_size; - char *b = infoBuf, *e; - while (e = strchr(b, '{')) { - *e = 0; - if ((e - b) > 2) { - parseLine(b); - } - e++; - b = e; - } - if (b < end) { - parseLine(b); - } - } - else { - fprintf(stderr, "short read on info file\n"); - } - free(infoBuf); - fclose(fd); - return 1; - } - return 0; -} - -static unsigned int crc_table[256]; - -void png_crc_table_init() { - unsigned int i; - if (crc_table[255]) return; - for (i = 0; i < 256; i++) { - unsigned int n = i; - unsigned int j; - for (j = 0; j < 8; j++) { - if (n & 1) { - n = 0xEDB88320 ^ (n >> 1); - } - else { - n >>= 1; - } - } - crc_table[i] = n; - } -} - -unsigned int do_crc(unsigned char *input, unsigned int len) { - unsigned int crc = 0; - unsigned int i; - png_crc_table_init(); - for (i = 0; i < len; i++) { - unsigned int v = (input[i] ^ crc) & 0xff; - crc = crc_table[v] ^ (crc >> 8); - } - return crc; -} - -char *decodeString = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789"; - -void doPngDecode(unsigned char *input, unsigned int len, unsigned char *output) { -// unsigned int crc_table[256]; - unsigned int crc, i, x = 0; - unsigned int *out = (unsigned int*)output; - crc = bswap_l(do_crc(input, len)); - memset(output, 0, 8); - for (i = 0; i < len; i++) { - output[x++] ^= input[i]; - if (x == 8) x = 0; - } - out[0] ^= crc; - out[1] ^= crc; - for (i = 0; i < 8; i++) { - unsigned char v = output[i]; - output[i] = decodeString[((((v >> 5) & 3) ^ v) & 0x1F) + (v >> 7)]; - } -} - -static char *string_32 = "n5Pr6St7Uv8Wx9YzAb0Cd1Ef2Gh3Jk4M"; -static char *string_64 = "AaZzB0bYyCc1XxDdW2wEeVv3FfUuG4g-TtHh5SsIiR6rJjQq7KkPpL8lOoMm9Nn_"; - -char *mazamaEncode32(unsigned char *input, unsigned int len) { - return mazamaEncode(input, len, 32); -} - -char *mazamaEncode64(unsigned char *input, unsigned int len) { - return mazamaEncode(input, len, 64); -} - -char *mazamaEncode(unsigned char *input, unsigned int len, unsigned char choice) { - unsigned int i; - char *enc, *out; - if (choice == 0x20) enc = string_32; - else if (choice == 0x40) enc = string_64; - else return NULL; - out = (char*)malloc(len * 2 + 1); - out[len * 2] = 0; - for (i = 0; i < len; i++) { - unsigned char v = input[i] + 128; - unsigned char q = v / choice; - unsigned char m = v % choice; - out[i * 2] = enc[q]; - out[i * 2 + 1] = enc[m]; - } - return out; -} - -unsigned char *mazamaDecode(char *input, int *outlen) { - unsigned char *out; - int len = strlen(input); - char *dec = NULL; - int i, choice = 0x20; - *outlen = 0; - for (i = 0; i < 8 && i < len; i++) { - if (*input == string_32[i]) { - dec = string_32; - break; - } - } - if (dec == NULL) { - for (i = 0; i < 4 && i < len; i++) { - if (*input == string_64[i]) { - dec = string_64; - choice = 0x40; - break; - } - } - } - if (dec == NULL) { - return NULL; - } - out = (unsigned char*)malloc(len / 2 + 1); - out[len / 2] = 0; - for (i = 0; i < len; i += 2) { - int q, m, v; - char *p = strchr(dec, input[i]); - if (p == NULL) break; - q = p - dec; - p = strchr(dec, input[i + 1]); - if (p == NULL) break; - m = p - dec; - v = (choice * q + m) - 128; - out[(*outlen)++] = (unsigned char)v; - } - return out; -} - -#ifndef HEADER_MD5_H - -void md5(unsigned char *in, int len, unsigned char *md) { - MD5_CTX s; - MD5_Init(&s); - MD5_Update(&s, in, len); - MD5_Final(md, &s); -} -#endif - -#ifndef HEADER_SHA_H - -void sha1(unsigned char *in, int len, unsigned char *md) { - SHA_CTX s; - SHA1_Init(&s); - SHA1_Update(&s, in, len); - SHA1_Final(md, &s); -} -#endif - -char *getBookPid(unsigned char *keys, unsigned int klen, unsigned char *keysValue, unsigned int kvlen) { - unsigned char *vsn, *username, *mrn_key, *kat_key, *pid; - char drive[256]; - char name[256]; - DWORD nlen = sizeof(name); - char *d; - char volumeName[256]; - DWORD volumeSerialNumber; - char fileSystemNameBuffer[256]; - char volumeID[32]; - unsigned char md5sum[MD5_DIGEST_LENGTH]; - unsigned char sha1sum[SHA_DIGEST_LENGTH]; - SHA_CTX sha1_ctx; - char *mv; - - if (GetUserName(name, &nlen) == 0) { - fprintf(stderr, "GetUserName failed\n"); - return NULL; - } - fprintf(stderr, "Using UserName = \"%s\"\n", name); - - d = getenv("SystemDrive"); - if (d) { - strcpy(drive, d); - strcat(drive, "\\"); - } - else { - strcpy(drive, "c:\\"); - } - fprintf(stderr, "Using SystemDrive = \"%s\"\n", drive); - if (GetVolumeInformation(drive, volumeName, sizeof(volumeName), &volumeSerialNumber, - NULL, NULL, fileSystemNameBuffer, sizeof(fileSystemNameBuffer))) { - sprintf(volumeID, "%u", volumeSerialNumber); - } - else { - strcpy(volumeID, "9999999999"); - } - fprintf(stderr, "Using VolumeSerialNumber = \"%s\"\n", volumeID); - MD5(volumeID, strlen(volumeID), md5sum); - vsn = mazamaEncode(md5sum, MD5_DIGEST_LENGTH, 0x20); - - MD5(name, strlen(name), md5sum); - username = mazamaEncode(md5sum, MD5_DIGEST_LENGTH, 0x20); - - MD5("MazamaRandomNumber", 18, md5sum); - mrn_key = mazamaEncode(md5sum, MD5_DIGEST_LENGTH, 0x40); - - MD5("kindle.account.tokens", 21, md5sum); - kat_key = mazamaEncode(md5sum, MD5_DIGEST_LENGTH, 0x40); - - SHA1_Init(&sha1_ctx); - - mv = getKindleValue(mrn_key); - if (mv) { - DATA_BLOB DataIn; - DATA_BLOB DataOut; - DataIn.pbData = mazamaDecode(mv, (int*)&DataIn.cbData); - if (CryptUnprotectData(&DataIn, NULL, NULL, NULL, NULL, 1, &DataOut)) { - char *devId = (char*)malloc(DataOut.cbData + 4 * MD5_DIGEST_LENGTH + 1); - char *finalDevId; - unsigned char pidbuf[10]; - -// fprintf(stderr, "CryptUnprotectData success\n"); -// fwrite(DataOut.pbData, DataOut.cbData, 1, stderr); -// fprintf(stderr, "\n"); - - memcpy(devId, DataOut.pbData, DataOut.cbData); - strcpy(devId + DataOut.cbData, vsn); - strcat(devId + DataOut.cbData, username); - -// fprintf(stderr, "Computing sha1 over %d bytes\n", DataOut.cbData + 4 * MD5_DIGEST_LENGTH); - sha1(devId, DataOut.cbData + 4 * MD5_DIGEST_LENGTH, sha1sum); - finalDevId = mazamaEncode(sha1sum, SHA_DIGEST_LENGTH, 0x20); -// fprintf(stderr, "finalDevId: %s\n", finalDevId); - - SHA1_Update(&sha1_ctx, finalDevId, strlen(finalDevId)); - - pidbuf[8] = 0; - doPngDecode(finalDevId, 4, (unsigned char*)pidbuf); - fprintf(stderr, "Device PID: %s\n", pidbuf); - - LocalFree(DataOut.pbData); - free(devId); - free(finalDevId); - } - else { - fprintf(stderr, "CryptUnprotectData failed, quitting\n"); - free(kat_key); - free(mrn_key); - return NULL; - } - - free(DataIn.pbData); - } - else { - fprintf(stderr, "Failed to find map node: %s\n", mrn_key); - } - - mv = getKindleValue(kat_key); - if (mv) { - DATA_BLOB DataIn; - DATA_BLOB DataOut; - DataIn.pbData = mazamaDecode(mv, (int*)&DataIn.cbData); - if (CryptUnprotectData(&DataIn, NULL, NULL, NULL, NULL, 1, &DataOut)) { -// fprintf(stderr, "CryptUnprotectData success\n"); -// fwrite(DataOut.pbData, DataOut.cbData, 1, stderr); -// fprintf(stderr, "\n"); - - SHA1_Update(&sha1_ctx, DataOut.pbData, DataOut.cbData); - - LocalFree(DataOut.pbData); - } - else { - fprintf(stderr, "CryptUnprotectData failed, quitting\n"); - free(kat_key); - free(mrn_key); - return NULL; - } - - free(DataIn.pbData); - } - else { - fprintf(stderr, "Failed to find map node: %s\n", kat_key); - } - - SHA1_Update(&sha1_ctx, keys, klen); - SHA1_Update(&sha1_ctx, keysValue, kvlen); - SHA1_Final(sha1sum, &sha1_ctx); - - pid = (char*)malloc(SHA_DIGEST_LENGTH * 2); - base64(sha1sum, SHA_DIGEST_LENGTH, pid); - - pid[8] = 0; - - free(mrn_key); - free(kat_key); - free(vsn); - free(username); - - return pid; -} - -static char *letters = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789"; - -int verifyPidChecksum(char *pid) { - int l = strlen(letters); - unsigned int crc = ~do_crc(pid, 8); - unsigned char b; - crc = crc ^ (crc >> 16); - b = crc & 0xff; - if (pid[8] != letters[((b / l) ^ (b % l)) % l]) return 0; - crc >>= 8; - b = crc & 0xff; - if (pid[9] != letters[((b / l) ^ (b % l)) % l]) return 0; - return 1; -} diff --git a/Kindle_4_PC_Tools/Other_Tools/skindle-06/skinutils.h b/Kindle_4_PC_Tools/Other_Tools/skindle-06/skinutils.h deleted file mode 100644 index 4b88c6d..0000000 --- a/Kindle_4_PC_Tools/Other_Tools/skindle-06/skinutils.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - Copyright 2010 BartSimpson aka skindle - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -#ifndef __SKINUTILS_H -#define __SKINUTILS_H - -typedef struct _PidList { - unsigned int numPids; - char *pidList[1]; //extra pids to try from command line -} PidList; - -typedef struct _MapList { - char *key; - char *value; - struct _MapList *next; -} MapList; - -extern MapList *kindleMap; - -unsigned int base64(unsigned char *inbuf, unsigned int len, unsigned char *outbuf); - -unsigned short bswap_s(unsigned short s); -unsigned int bswap_l(unsigned int s); - -char *translateKindleKey(char *key); -MapList *findNode(MapList *map, char *key); -MapList *findKindleNode(char *key); - -//don't free the result of getNodeValue; -char *getNodeValue(MapList *map, char *key); -char *getKindleValue(char *key); - -MapList *addMapNode(MapList *map, char *key, char *value); -void dumpMap(MapList *m); - -void freeMap(MapList *m); - -int buildKindleMap(char *infoFile); -void dumpKindleMap(); - -//void png_crc_table_init(unsigned int *crc_table); -unsigned int do_crc(unsigned char *input, unsigned int len); -void doPngDecode(unsigned char *input, unsigned int len, unsigned char *output); - -char *mazamaEncode(unsigned char *input, unsigned int len, unsigned char choice); -char *mazamaEncode32(unsigned char *input, unsigned int len); -char *mazamaEncode64(unsigned char *input, unsigned int len); - -unsigned char *mazamaDecode(char *input, int *outlen); - -int verifyPidChecksum(char *pid); - -//If you prefer to use openssl uncomment the following -//#include -//#include - -#ifndef HEADER_MD5_H -#include "md5.h" - -#define MD5_DIGEST_LENGTH 16 - -#define MD5_CTX md5_state_t -#define MD5_Init md5_init -#define MD5_Update md5_append -#define MD5_Final(x, y) md5_finish(y, x) -#define MD5 md5 - -void md5(unsigned char *in, int len, unsigned char *md); -#endif - -#ifndef HEADER_SHA_H - -#include "sha1.h" - -#define SHA_DIGEST_LENGTH 20 -#define SHA_CTX sha1_state_s -#define SHA1_Init sha1_init -#define SHA1_Update sha1_update -#define SHA1_Final(x, y) sha1_finish(y, x) -#define SHA1 sha1 - -void sha1(unsigned char *in, int len, unsigned char *md); -#endif - -char *getBookPid(unsigned char *keys, unsigned int klen, unsigned char *keysValue, unsigned int kvlen); - -#endif diff --git a/Kindle_4_PC_Tools/Other_Tools/skindle-06/tpz.c b/Kindle_4_PC_Tools/Other_Tools/skindle-06/tpz.c deleted file mode 100644 index 564f31a..0000000 --- a/Kindle_4_PC_Tools/Other_Tools/skindle-06/tpz.c +++ /dev/null @@ -1,504 +0,0 @@ -/* - Copyright 2010 BartSimpson aka skindle - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -#include -#include -#include - -#include "skinutils.h" -#include "cbuf.h" -#include "tpz.h" -#include "zlib.h" - -// -// Context initialisation for the Topaz Crypto -// -void topazCryptoInit(TpzCtx *ctx, unsigned char *key, int klen) { - int i = 0; - ctx->v[0] = 0x0CAFFE19E; - - for (i = 0; i < klen; i++) { - ctx->v[1] = ctx->v[0]; - ctx->v[0] = ((ctx->v[0] >> 2) * (ctx->v[0] >> 7)) ^ - (key[i] * key[i] * 0x0F902007); - } -} - -// -// decrypt data with the context prepared by topazCryptoInit() -// - -void topazCryptoDecrypt(TpzCtx *ctx, unsigned char *in, unsigned char *out, int len) { - unsigned int ctx1 = ctx->v[0]; - unsigned int ctx2 = ctx->v[1]; - int i; - for (i = 0; i < len; i++) { - unsigned char m = in[i] ^ (ctx1 >> 3) ^ (ctx2 << 3); - ctx2 = ctx1; - ctx1 = ((ctx1 >> 2) * (ctx1 >> 7)) ^ (m * m * 0x0F902007); - out[i] = m; - } -} - -int bookReadEncodedNumber(FILE *f) { - int flag = 0; - int data = fgetc(f); - if (data == 0xFF) { //negative number flag - flag = 1; - data = fgetc(f); - } - if (data >= 0x80) { - int datax = data & 0x7F; - while (data >= 0x80) { - data = fgetc(f); - datax = (datax << 7) + (data & 0x7F); - } - data = datax; - } - - if (flag) { - data = -data; - } - return data; -} - -// -// Encode a number in 7 bit format -// - -int encodeNumber(int number, unsigned char *out) { - unsigned char *b = out; - unsigned char flag = 0; - int len; - int neg = number < 0; - - if (neg) { - number = -number + 1; - } - - do { - *b++ = (number & 0x7F) | flag; - number >>= 7; - flag = 0x80; - } while (number); - - if (neg) { - *b++ = 0xFF; - } - len = b - out; - b--; - while (out < b) { - unsigned char v = *out; - *out++ = *b; - *b-- = v; - } - return len; -} - -// -// Get a length prefixed string from the file -// - -char *bookReadString(FILE *f) { - int len = bookReadEncodedNumber(f); - char *s = (char*)malloc(len + 1); - s[len] = 0; - if (fread(s, 1, len, f) != len) { - fprintf(stderr, "String read failed at filepos %x\n", ftell(f)); - free(s); - s = NULL; - } - return s; -} - -// -// Read and return the data of one header record at the current book file position [[offset,compressedLength,decompressedLength],...] -// - -Record *bookReadHeaderRecordData(FILE *f) { - int nbValues = bookReadEncodedNumber(f); - Record *result = NULL; - Record *tail = NULL; - unsigned int i; - if (nbValues == -1) { - fprintf(stderr, "Parse Error : EOF encountered\n"); - return NULL; - } - for (i = 0; i < nbValues; i++) { - Record *r = (Record*)malloc(sizeof(Record)); - r->offset = bookReadEncodedNumber(f); - r->length = bookReadEncodedNumber(f); - r->compressed = bookReadEncodedNumber(f); - r->next = NULL; - if (result == NULL) { - result = r; - } - else { - tail->next = r; - } - tail = r; - } - return result; -} - -// -// Read and parse one header record at the current book file position and return the associated data [[offset,compressedLength,decompressedLength],...] -// - -void freeRecordList(Record *r) { - Record *n; - while (r) { - n = r; - r = r->next; - free(n); - } -} - -void freeHeaderList(HeaderRecord *r) { - HeaderRecord *n; - while (r) { - free(r->tag); - freeRecordList(r->rec); - n = r; - r = r->next; - free(n); - } -} - -void freeTopazFile(TopazFile *t) { - freeHeaderList(t->hdrs); - freeMap(t->metadata); - free(t); -} - -HeaderRecord *parseTopazHeaderRecord(FILE *f) { - char *tag; - Record *record; - if (fgetc(f) != 0x63) { - fprintf(stderr, "Parse Error : Invalid Header at 0x%x\n", ftell(f) - 1); - return NULL; - } - - tag = bookReadString(f); - record = bookReadHeaderRecordData(f); - if (tag && record) { - HeaderRecord *r = (HeaderRecord*)malloc(sizeof(Record)); - r->tag = tag; - r->rec = record; - r->next = NULL; - return r; - } - return NULL; -} - -// -// Parse the header of a Topaz file, get all the header records and the offset for the payload -// - -HeaderRecord *addRecord(HeaderRecord *head, HeaderRecord *r) { - HeaderRecord *i; - for (i = head; i; i = i->next) { - if (i->next == NULL) { - i->next = r; - return head; - } - } - return r; -} - -TopazFile *parseTopazHeader(FILE *f) { - unsigned int numRecs, i, magic; - TopazFile *tpz; - if (fread(&magic, sizeof(magic), 1, f) != 1) { - fprintf(stderr, "Failed to read file magic\n"); - return NULL; - } - - if (magic != 0x305a5054) { - fprintf(stderr, "Parse Error : Invalid Header, not a Topaz file"); - return NULL; - } - - numRecs = fgetc(f); - - tpz = (TopazFile*)calloc(sizeof(TopazFile), 1); - tpz->f = f; - - for (i = 0; i < numRecs; i++) { - HeaderRecord *result = parseTopazHeaderRecord(f); - if (result == NULL) { - break; - } - tpz->hdrs = addRecord(tpz->hdrs, result); - } - - if (fgetc(f) != 0x64) { - fprintf(stderr, "Parse Error : Invalid Header end at pos 0x%x\n", ftell(f) - 1); - //empty list - freeTopazFile(tpz); - return NULL; - } - - tpz->bodyOffset = ftell(f); - return tpz; -} - -HeaderRecord *findHeader(TopazFile *tpz, char *tag) { - HeaderRecord *hr; - for (hr = tpz->hdrs; hr; hr = hr->next) { - if (strcmp(hr->tag, tag) == 0) { - break; - } - } - return hr; -} - -void freePayload(Payload *p) { - free(p->blob); - free(p); -} - -// -//Get a record in the book payload, given its name and index. If necessary the record is decrypted. The record is not decompressed -// -Payload *getBookPayloadRecord(TopazFile *t, char *name, int index, int explode) { - int encrypted = 0; - int recordOffset, i, recordIndex; - Record *r; - int fileSize; - char *tag; - Payload *p; - off_t fileOffset; - HeaderRecord *hr = findHeader(t, name); - - if (hr == NULL) { - fprintf(stderr, "Parse Error : Invalid Record, record %s not found\n", name); - return NULL; - } - r = hr->rec; - for (i = 0; r && i < index; i++) { - r = r->next; - } - if (r == NULL) { - fprintf(stderr, "Parse Error : Invalid Record, record %s:%d not found\n", name, index); - return NULL; - } - recordOffset = r->offset; - - if (fseek(t->f, t->bodyOffset + recordOffset, SEEK_SET) == -1) { - fprintf(stderr, "Parse Error : Invalid Record offset, record %s:%d\n", name, index); - return NULL; - } - - tag = bookReadString(t->f); - if (strcmp(tag, name)) { - fprintf(stderr, "Parse Error : Invalid Record offset, record %s:%d name doesn't match\n", name, index); - return NULL; - } - recordIndex = bookReadEncodedNumber(t->f); - - if (recordIndex < 0) { - encrypted = 1; - recordIndex = -recordIndex - 1; - } - - if (recordIndex != index) { - fprintf(stderr, "Parse Error : Invalid Record offset, record %s:%d index doesn't match\n", name, index); - return NULL; - } - - fileSize = r->compressed ? r->compressed : r->length; - p = (Payload*)malloc(sizeof(Payload)); - p->blob = (unsigned char*)malloc(fileSize); - p->len = fileSize; - p->name = name; - p->index = index; - fileOffset = ftell(t->f); - if (fread(p->blob, fileSize, 1, t->f) != 1) { - freePayload(p); - fprintf(stderr, "Parse Error : Failed payload read of record %s:%d offset 0x%x:0x%x\n", name, index, fileOffset, fileSize); - return NULL; - } - - if (encrypted) { - TpzCtx ctx; - topazCryptoInit(&ctx, t->bookKey, 8); - topazCryptoDecrypt(&ctx, p->blob, p->blob, p->len); - } - - if (r->compressed && explode) { - unsigned char *db = (unsigned char *)malloc(r->length); - uLongf dl = r->length; - switch (uncompress(db, &dl, p->blob, p->len)) { - case Z_OK: - free(p->blob); - p->blob = db; - p->len = dl; - break; - case Z_MEM_ERROR: - free(db); - fprintf(stderr, "out of memory\n"); - break; - case Z_BUF_ERROR: - free(db); - fprintf(stderr, "output buffer wasn't large enough!\n"); - break; - } - } - - return p; -} - -// -// Parse the metadata record from the book payload and return a list of [key,values] -// - -char *getMetadata(TopazFile *t, char *key) { - return getNodeValue(t->metadata, key); -} - -void parseMetadata(TopazFile *t) { - char *tag; - int flags, nbRecords, i; - HeaderRecord *hr = findHeader(t, "metadata"); - - fseek(t->f, t->bodyOffset + hr->rec->offset, SEEK_SET); - tag = bookReadString(t->f); - if (strcmp(tag, "metadata")) { - //raise CMBDTCFatal("Parse Error : Record Names Don't Match") - return; - } - - flags = fgetc(t->f); - nbRecords = bookReadEncodedNumber(t->f); - - for (i = 0; i < nbRecords; i++) { - char *key = bookReadString(t->f); - char *value = bookReadString(t->f); - t->metadata = addMapNode(t->metadata, key, value); - } -} - -// -// Decrypt a payload record with the PID -// - -void decryptRecord(unsigned char *in, int len, unsigned char *out, unsigned char *PID) { - TpzCtx ctx; - topazCryptoInit(&ctx, PID, 8); //is this length correct - topazCryptoDecrypt(&ctx, in, out, len); -} - -// -// Try to decrypt a dkey record (contains the book PID) -// -unsigned char *decryptDkeyRecord(unsigned char *data, int len, unsigned char *PID) { - decryptRecord(data, len, data, PID); - //fields = unpack("3sB8sB8s3s",record); - - if (strncmp(data, "PID", 3) || strncmp(data + 21, "pid", 3)) { - fprintf(stderr, "Didn't find PID magic numbers in record\n"); - return NULL; - } - else if (data[3] != 8 || data[12] != 8) { - fprintf(stderr, "Record didn't contain correct length fields\n"); - return NULL; - } - else if (strncmp(data + 4, PID, 8)) { - fprintf(stderr, "Record didn't contain PID\n"); - return NULL; - } - return data + 13; -} - -// -// Decrypt all the book's dkey records (contain the book PID) -// - -unsigned char *decryptDkeyRecords(Payload *data, unsigned char *PID) { - int nbKeyRecords = data->blob[0]; //is this encoded number? - int i, idx; - idx = 1; - unsigned char *key = NULL; -// records = [] - for (i = 0; i < nbKeyRecords && idx < data->len; i++) { - int length = data->blob[idx++]; - key = decryptDkeyRecord(data->blob + idx, length, PID); - if (key) break; //??? - idx += length; - } - return key; -} - -void bufEncodeInt(cbuf *b, int i) { - unsigned char encoded[16]; - int len = encodeNumber(i, encoded); - b_add_buf(b, encoded, len); -} - -void bufEncodeString(cbuf *b, char *s) { - bufEncodeInt(b, strlen(s)); - b_add_str(b, s); -} - -void writeTopazOutputFile(TopazFile *t, FILE *out, cbuf *tpzHeaders, - cbuf *tpzBody, int explode) { - int i, numHdrs = 0; - HeaderRecord *h; - b_add_str(tpzHeaders, "TPZ0"); - for (h = t->hdrs; h; h = h->next) { - if (strcmp(h->tag, "dkey")) { - numHdrs++; - } - } - bufEncodeInt(tpzHeaders, numHdrs); - - b_add_byte(tpzBody, 0x40); - - for (h = t->hdrs; h; h = h->next) { - Record *r; - int nr = 0, idx = 0; - if (strcmp(h->tag, "dkey") == 0) continue; - b_add_byte(tpzHeaders, 0x63); - bufEncodeString(tpzHeaders, h->tag); - for (r = h->rec; r; r = r->next) nr++; - bufEncodeInt(tpzHeaders, nr); - for (r = h->rec; r; r = r->next) { - Payload *p; - int b, e; - bufEncodeInt(tpzHeaders, tpzBody->idx); - bufEncodeString(tpzBody, h->tag); - bufEncodeInt(tpzBody, idx); - b = tpzBody->idx; - p = getBookPayloadRecord(t, h->tag, idx++, explode); - b_add_buf(tpzBody, p->blob, p->len); - e = tpzBody->idx; - - bufEncodeInt(tpzHeaders, r->length); //this is length of blob portion after decompression - if (explode) { - bufEncodeInt(tpzHeaders, 0); //this is the length in the file if compressed - } - else { - bufEncodeInt(tpzHeaders, r->compressed); //this is the length in the file if compressed - } - - freePayload(p); - } - } - - b_add_byte(tpzHeaders, 0x64); -} - diff --git a/Kindle_4_PC_Tools/Other_Tools/skindle-06/tpz.h b/Kindle_4_PC_Tools/Other_Tools/skindle-06/tpz.h deleted file mode 100644 index 4138171..0000000 --- a/Kindle_4_PC_Tools/Other_Tools/skindle-06/tpz.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - Copyright 2010 BartSimpson aka skindle - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -#ifndef __TPZ_H -#define __TPZ_H - -#include -#include "skinutils.h" - -typedef struct _TpzCtx { - unsigned int v[2]; -} TpzCtx; - -void topazCryptoInit(TpzCtx *ctx, unsigned char *key, int klen); -void topazCryptoDecrypt(TpzCtx *ctx, unsigned char *in, unsigned char *out, int len); -int bookReadEncodedNumber(FILE *f); -int encodeNumber(int number, unsigned char *out); -char *bookReadString(FILE *f); - -typedef struct _Payload { - unsigned char *blob; - unsigned int len; - char *name; - int index; -} Payload; - -typedef struct _Record { - int offset; - int length; - int compressed; - struct _Record *next; -} Record; - -typedef struct _HeaderRecord { - char *tag; - Record *rec; - struct _HeaderRecord *next; -} HeaderRecord; - -typedef struct _TopazFile { - FILE *f; - HeaderRecord *hdrs; - unsigned char *bookKey; - unsigned int bodyOffset; - MapList *metadata; - PidList *pids; //extra pids to try from command line -} TopazFile; - -Record *bookReadHeaderRecordData(FILE *f); -void freeRecordList(Record *r); -void freeHeaderList(HeaderRecord *r); -void freeTopazFile(TopazFile *t); -HeaderRecord *parseTopazHeaderRecord(FILE *f); -HeaderRecord *addRecord(HeaderRecord *head, HeaderRecord *r); -TopazFile *parseTopazHeader(FILE *f); -void freeTopazFile(TopazFile *tpz); -HeaderRecord *findHeader(TopazFile *tpz, char *tag); -void freePayload(Payload *p); -Payload *getBookPayloadRecord(TopazFile *t, char *name, int index, int explode); -char *getMetadata(TopazFile *t, char *key); -void parseMetadata(TopazFile *t); -void decryptRecord(unsigned char *in, int len, unsigned char *out, unsigned char *PID); -unsigned char *decryptDkeyRecord(unsigned char *data, int len, unsigned char *PID); -unsigned char *decryptDkeyRecords(Payload *data, unsigned char *PID); -void writeTopazOutputFile(TopazFile *t, FILE *out, cbuf *tpzHeaders, - cbuf *tpzBody, int explode); - - -#endif diff --git a/Kindle_4_PC_Tools/Other_Tools/skindle-06/zconf.h b/Kindle_4_PC_Tools/Other_Tools/skindle-06/zconf.h deleted file mode 100644 index 03a9431..0000000 --- a/Kindle_4_PC_Tools/Other_Tools/skindle-06/zconf.h +++ /dev/null @@ -1,332 +0,0 @@ -/* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2005 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#ifndef ZCONF_H -#define ZCONF_H - -/* - * If you *really* need a unique prefix for all types and library functions, - * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. - */ -#ifdef Z_PREFIX -# define deflateInit_ z_deflateInit_ -# define deflate z_deflate -# define deflateEnd z_deflateEnd -# define inflateInit_ z_inflateInit_ -# define inflate z_inflate -# define inflateEnd z_inflateEnd -# define deflateInit2_ z_deflateInit2_ -# define deflateSetDictionary z_deflateSetDictionary -# define deflateCopy z_deflateCopy -# define deflateReset z_deflateReset -# define deflateParams z_deflateParams -# define deflateBound z_deflateBound -# define deflatePrime z_deflatePrime -# define inflateInit2_ z_inflateInit2_ -# define inflateSetDictionary z_inflateSetDictionary -# define inflateSync z_inflateSync -# define inflateSyncPoint z_inflateSyncPoint -# define inflateCopy z_inflateCopy -# define inflateReset z_inflateReset -# define inflateBack z_inflateBack -# define inflateBackEnd z_inflateBackEnd -# define compress z_compress -# define compress2 z_compress2 -# define compressBound z_compressBound -# define uncompress z_uncompress -# define adler32 z_adler32 -# define crc32 z_crc32 -# define get_crc_table z_get_crc_table -# define zError z_zError - -# define alloc_func z_alloc_func -# define free_func z_free_func -# define in_func z_in_func -# define out_func z_out_func -# define Byte z_Byte -# define uInt z_uInt -# define uLong z_uLong -# define Bytef z_Bytef -# define charf z_charf -# define intf z_intf -# define uIntf z_uIntf -# define uLongf z_uLongf -# define voidpf z_voidpf -# define voidp z_voidp -#endif - -#if defined(__MSDOS__) && !defined(MSDOS) -# define MSDOS -#endif -#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) -# define OS2 -#endif -#if defined(_WINDOWS) && !defined(WINDOWS) -# define WINDOWS -#endif -#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) -# ifndef WIN32 -# define WIN32 -# endif -#endif -#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) -# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) -# ifndef SYS16BIT -# define SYS16BIT -# endif -# endif -#endif - -/* - * Compile with -DMAXSEG_64K if the alloc function cannot allocate more - * than 64k bytes at a time (needed on systems with 16-bit int). - */ -#ifdef SYS16BIT -# define MAXSEG_64K -#endif -#ifdef MSDOS -# define UNALIGNED_OK -#endif - -#ifdef __STDC_VERSION__ -# ifndef STDC -# define STDC -# endif -# if __STDC_VERSION__ >= 199901L -# ifndef STDC99 -# define STDC99 -# endif -# endif -#endif -#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) -# define STDC -#endif -#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) -# define STDC -#endif -#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) -# define STDC -#endif -#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) -# define STDC -#endif - -#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ -# define STDC -#endif - -#ifndef STDC -# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ -# define const /* note: need a more gentle solution here */ -# endif -#endif - -/* Some Mac compilers merge all .h files incorrectly: */ -#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) -# define NO_DUMMY_DECL -#endif - -/* Maximum value for memLevel in deflateInit2 */ -#ifndef MAX_MEM_LEVEL -# ifdef MAXSEG_64K -# define MAX_MEM_LEVEL 8 -# else -# define MAX_MEM_LEVEL 9 -# endif -#endif - -/* Maximum value for windowBits in deflateInit2 and inflateInit2. - * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files - * created by gzip. (Files created by minigzip can still be extracted by - * gzip.) - */ -#ifndef MAX_WBITS -# define MAX_WBITS 15 /* 32K LZ77 window */ -#endif - -/* The memory requirements for deflate are (in bytes): - (1 << (windowBits+2)) + (1 << (memLevel+9)) - that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) - plus a few kilobytes for small objects. For example, if you want to reduce - the default memory requirements from 256K to 128K, compile with - make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" - Of course this will generally degrade compression (there's no free lunch). - - The memory requirements for inflate are (in bytes) 1 << windowBits - that is, 32K for windowBits=15 (default value) plus a few kilobytes - for small objects. -*/ - - /* Type declarations */ - -#ifndef OF /* function prototypes */ -# ifdef STDC -# define OF(args) args -# else -# define OF(args) () -# endif -#endif - -/* The following definitions for FAR are needed only for MSDOS mixed - * model programming (small or medium model with some far allocations). - * This was tested only with MSC; for other MSDOS compilers you may have - * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, - * just define FAR to be empty. - */ -#ifdef SYS16BIT -# if defined(M_I86SM) || defined(M_I86MM) - /* MSC small or medium model */ -# define SMALL_MEDIUM -# ifdef _MSC_VER -# define FAR _far -# else -# define FAR far -# endif -# endif -# if (defined(__SMALL__) || defined(__MEDIUM__)) - /* Turbo C small or medium model */ -# define SMALL_MEDIUM -# ifdef __BORLANDC__ -# define FAR _far -# else -# define FAR far -# endif -# endif -#endif - -#if defined(WINDOWS) || defined(WIN32) - /* If building or using zlib as a DLL, define ZLIB_DLL. - * This is not mandatory, but it offers a little performance increase. - */ -# ifdef ZLIB_DLL -# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) -# ifdef ZLIB_INTERNAL -# define ZEXTERN extern __declspec(dllexport) -# else -# define ZEXTERN extern __declspec(dllimport) -# endif -# endif -# endif /* ZLIB_DLL */ - /* If building or using zlib with the WINAPI/WINAPIV calling convention, - * define ZLIB_WINAPI. - * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. - */ -# ifdef ZLIB_WINAPI -# ifdef FAR -# undef FAR -# endif -# include - /* No need for _export, use ZLIB.DEF instead. */ - /* For complete Windows compatibility, use WINAPI, not __stdcall. */ -# define ZEXPORT WINAPI -# ifdef WIN32 -# define ZEXPORTVA WINAPIV -# else -# define ZEXPORTVA FAR CDECL -# endif -# endif -#endif - -#if defined (__BEOS__) -# ifdef ZLIB_DLL -# ifdef ZLIB_INTERNAL -# define ZEXPORT __declspec(dllexport) -# define ZEXPORTVA __declspec(dllexport) -# else -# define ZEXPORT __declspec(dllimport) -# define ZEXPORTVA __declspec(dllimport) -# endif -# endif -#endif - -#ifndef ZEXTERN -# define ZEXTERN extern -#endif -#ifndef ZEXPORT -# define ZEXPORT -#endif -#ifndef ZEXPORTVA -# define ZEXPORTVA -#endif - -#ifndef FAR -# define FAR -#endif - -#if !defined(__MACTYPES__) -typedef unsigned char Byte; /* 8 bits */ -#endif -typedef unsigned int uInt; /* 16 bits or more */ -typedef unsigned long uLong; /* 32 bits or more */ - -#ifdef SMALL_MEDIUM - /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ -# define Bytef Byte FAR -#else - typedef Byte FAR Bytef; -#endif -typedef char FAR charf; -typedef int FAR intf; -typedef uInt FAR uIntf; -typedef uLong FAR uLongf; - -#ifdef STDC - typedef void const *voidpc; - typedef void FAR *voidpf; - typedef void *voidp; -#else - typedef Byte const *voidpc; - typedef Byte FAR *voidpf; - typedef Byte *voidp; -#endif - -#if 0 /* HAVE_UNISTD_H -- this line is updated by ./configure */ -# include /* for off_t */ -# include /* for SEEK_* and off_t */ -# ifdef VMS -# include /* for off_t */ -# endif -# define z_off_t off_t -#endif -#ifndef SEEK_SET -# define SEEK_SET 0 /* Seek from beginning of file. */ -# define SEEK_CUR 1 /* Seek from current position. */ -# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ -#endif -#ifndef z_off_t -# define z_off_t long -#endif - -#if defined(__OS400__) -# define NO_vsnprintf -#endif - -#if defined(__MVS__) -# define NO_vsnprintf -# ifdef FAR -# undef FAR -# endif -#endif - -/* MVS linker does not support external names larger than 8 bytes */ -#if defined(__MVS__) -# pragma map(deflateInit_,"DEIN") -# pragma map(deflateInit2_,"DEIN2") -# pragma map(deflateEnd,"DEEND") -# pragma map(deflateBound,"DEBND") -# pragma map(inflateInit_,"ININ") -# pragma map(inflateInit2_,"ININ2") -# pragma map(inflateEnd,"INEND") -# pragma map(inflateSync,"INSY") -# pragma map(inflateSetDictionary,"INSEDI") -# pragma map(compressBound,"CMBND") -# pragma map(inflate_table,"INTABL") -# pragma map(inflate_fast,"INFA") -# pragma map(inflate_copyright,"INCOPY") -#endif - -#endif /* ZCONF_H */ diff --git a/Kindle_4_PC_Tools/Other_Tools/skindle-06/zlib.h b/Kindle_4_PC_Tools/Other_Tools/skindle-06/zlib.h deleted file mode 100644 index 0228179..0000000 --- a/Kindle_4_PC_Tools/Other_Tools/skindle-06/zlib.h +++ /dev/null @@ -1,1357 +0,0 @@ -/* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.2.3, July 18th, 2005 - - Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - - - The data format used by the zlib library is described by RFCs (Request for - Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt - (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format). -*/ - -#ifndef ZLIB_H -#define ZLIB_H - -#include "zconf.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define ZLIB_VERSION "1.2.3" -#define ZLIB_VERNUM 0x1230 - -/* - The 'zlib' compression library provides in-memory compression and - decompression functions, including integrity checks of the uncompressed - data. This version of the library supports only one compression method - (deflation) but other algorithms will be added later and will have the same - stream interface. - - Compression can be done in a single step if the buffers are large - enough (for example if an input file is mmap'ed), or can be done by - repeated calls of the compression function. In the latter case, the - application must provide more input and/or consume the output - (providing more output space) before each call. - - The compressed data format used by default by the in-memory functions is - the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped - around a deflate stream, which is itself documented in RFC 1951. - - The library also supports reading and writing files in gzip (.gz) format - with an interface similar to that of stdio using the functions that start - with "gz". The gzip format is different from the zlib format. gzip is a - gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. - - This library can optionally read and write gzip streams in memory as well. - - The zlib format was designed to be compact and fast for use in memory - and on communications channels. The gzip format was designed for single- - file compression on file systems, has a larger header than zlib to maintain - directory information, and uses a different, slower check method than zlib. - - The library does not install any signal handler. The decoder checks - the consistency of the compressed data, so the library should never - crash even in case of corrupted input. -*/ - -typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); -typedef void (*free_func) OF((voidpf opaque, voidpf address)); - -struct internal_state; - -typedef struct z_stream_s { - Bytef *next_in; /* next input byte */ - uInt avail_in; /* number of bytes available at next_in */ - uLong total_in; /* total nb of input bytes read so far */ - - Bytef *next_out; /* next output byte should be put there */ - uInt avail_out; /* remaining free space at next_out */ - uLong total_out; /* total nb of bytes output so far */ - - char *msg; /* last error message, NULL if no error */ - struct internal_state FAR *state; /* not visible by applications */ - - alloc_func zalloc; /* used to allocate the internal state */ - free_func zfree; /* used to free the internal state */ - voidpf opaque; /* private data object passed to zalloc and zfree */ - - int data_type; /* best guess about the data type: binary or text */ - uLong adler; /* adler32 value of the uncompressed data */ - uLong reserved; /* reserved for future use */ -} z_stream; - -typedef z_stream FAR *z_streamp; - -/* - gzip header information passed to and from zlib routines. See RFC 1952 - for more details on the meanings of these fields. -*/ -typedef struct gz_header_s { - int text; /* true if compressed data believed to be text */ - uLong time; /* modification time */ - int xflags; /* extra flags (not used when writing a gzip file) */ - int os; /* operating system */ - Bytef *extra; /* pointer to extra field or Z_NULL if none */ - uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ - uInt extra_max; /* space at extra (only when reading header) */ - Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ - uInt name_max; /* space at name (only when reading header) */ - Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ - uInt comm_max; /* space at comment (only when reading header) */ - int hcrc; /* true if there was or will be a header crc */ - int done; /* true when done reading gzip header (not used - when writing a gzip file) */ -} gz_header; - -typedef gz_header FAR *gz_headerp; - -/* - The application must update next_in and avail_in when avail_in has - dropped to zero. It must update next_out and avail_out when avail_out - has dropped to zero. The application must initialize zalloc, zfree and - opaque before calling the init function. All other fields are set by the - compression library and must not be updated by the application. - - The opaque value provided by the application will be passed as the first - parameter for calls of zalloc and zfree. This can be useful for custom - memory management. The compression library attaches no meaning to the - opaque value. - - zalloc must return Z_NULL if there is not enough memory for the object. - If zlib is used in a multi-threaded application, zalloc and zfree must be - thread safe. - - On 16-bit systems, the functions zalloc and zfree must be able to allocate - exactly 65536 bytes, but will not be required to allocate more than this - if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, - pointers returned by zalloc for objects of exactly 65536 bytes *must* - have their offset normalized to zero. The default allocation function - provided by this library ensures this (see zutil.c). To reduce memory - requirements and avoid any allocation of 64K objects, at the expense of - compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h). - - The fields total_in and total_out can be used for statistics or - progress reports. After compression, total_in holds the total size of - the uncompressed data and may be saved for use in the decompressor - (particularly if the decompressor wants to decompress everything in - a single step). -*/ - - /* constants */ - -#define Z_NO_FLUSH 0 -#define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */ -#define Z_SYNC_FLUSH 2 -#define Z_FULL_FLUSH 3 -#define Z_FINISH 4 -#define Z_BLOCK 5 -/* Allowed flush values; see deflate() and inflate() below for details */ - -#define Z_OK 0 -#define Z_STREAM_END 1 -#define Z_NEED_DICT 2 -#define Z_ERRNO (-1) -#define Z_STREAM_ERROR (-2) -#define Z_DATA_ERROR (-3) -#define Z_MEM_ERROR (-4) -#define Z_BUF_ERROR (-5) -#define Z_VERSION_ERROR (-6) -/* Return codes for the compression/decompression functions. Negative - * values are errors, positive values are used for special but normal events. - */ - -#define Z_NO_COMPRESSION 0 -#define Z_BEST_SPEED 1 -#define Z_BEST_COMPRESSION 9 -#define Z_DEFAULT_COMPRESSION (-1) -/* compression levels */ - -#define Z_FILTERED 1 -#define Z_HUFFMAN_ONLY 2 -#define Z_RLE 3 -#define Z_FIXED 4 -#define Z_DEFAULT_STRATEGY 0 -/* compression strategy; see deflateInit2() below for details */ - -#define Z_BINARY 0 -#define Z_TEXT 1 -#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ -#define Z_UNKNOWN 2 -/* Possible values of the data_type field (though see inflate()) */ - -#define Z_DEFLATED 8 -/* The deflate compression method (the only one supported in this version) */ - -#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ - -#define zlib_version zlibVersion() -/* for compatibility with versions < 1.0.2 */ - - /* basic functions */ - -ZEXTERN const char * ZEXPORT zlibVersion OF((void)); -/* The application can compare zlibVersion and ZLIB_VERSION for consistency. - If the first character differs, the library code actually used is - not compatible with the zlib.h header file used by the application. - This check is automatically made by deflateInit and inflateInit. - */ - -/* -ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); - - Initializes the internal stream state for compression. The fields - zalloc, zfree and opaque must be initialized before by the caller. - If zalloc and zfree are set to Z_NULL, deflateInit updates them to - use default allocation functions. - - The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: - 1 gives best speed, 9 gives best compression, 0 gives no compression at - all (the input data is simply copied a block at a time). - Z_DEFAULT_COMPRESSION requests a default compromise between speed and - compression (currently equivalent to level 6). - - deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if level is not a valid compression level, - Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible - with the version assumed by the caller (ZLIB_VERSION). - msg is set to null if there is no error message. deflateInit does not - perform any compression: this will be done by deflate(). -*/ - - -ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); -/* - deflate compresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may introduce some - output latency (reading input without producing any output) except when - forced to flush. - - The detailed semantics are as follows. deflate performs one or both of the - following actions: - - - Compress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in and avail_in are updated and - processing will resume at this point for the next call of deflate(). - - - Provide more output starting at next_out and update next_out and avail_out - accordingly. This action is forced if the parameter flush is non zero. - Forcing flush frequently degrades the compression ratio, so this parameter - should be set only when necessary (in interactive applications). - Some output may be provided even if flush is not set. - - Before the call of deflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming - more output, and updating avail_in or avail_out accordingly; avail_out - should never be zero before the call. The application can consume the - compressed output when it wants, for example when the output buffer is full - (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK - and with zero avail_out, it must be called again after making room in the - output buffer because there might be more output pending. - - Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to - decide how much data to accumualte before producing output, in order to - maximize compression. - - If the parameter flush is set to Z_SYNC_FLUSH, all pending output is - flushed to the output buffer and the output is aligned on a byte boundary, so - that the decompressor can get all input data available so far. (In particular - avail_in is zero after the call if enough output space has been provided - before the call.) Flushing may degrade compression for some compression - algorithms and so it should be used only when necessary. - - If flush is set to Z_FULL_FLUSH, all output is flushed as with - Z_SYNC_FLUSH, and the compression state is reset so that decompression can - restart from this point if previous compressed data has been damaged or if - random access is desired. Using Z_FULL_FLUSH too often can seriously degrade - compression. - - If deflate returns with avail_out == 0, this function must be called again - with the same value of the flush parameter and more output space (updated - avail_out), until the flush is complete (deflate returns with non-zero - avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that - avail_out is greater than six to avoid repeated flush markers due to - avail_out == 0 on return. - - If the parameter flush is set to Z_FINISH, pending input is processed, - pending output is flushed and deflate returns with Z_STREAM_END if there - was enough output space; if deflate returns with Z_OK, this function must be - called again with Z_FINISH and more output space (updated avail_out) but no - more input data, until it returns with Z_STREAM_END or an error. After - deflate has returned Z_STREAM_END, the only possible operations on the - stream are deflateReset or deflateEnd. - - Z_FINISH can be used immediately after deflateInit if all the compression - is to be done in a single step. In this case, avail_out must be at least - the value returned by deflateBound (see below). If deflate does not return - Z_STREAM_END, then it must be called again as described above. - - deflate() sets strm->adler to the adler32 checksum of all input read - so far (that is, total_in bytes). - - deflate() may update strm->data_type if it can make a good guess about - the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered - binary. This field is only for information purposes and does not affect - the compression algorithm in any manner. - - deflate() returns Z_OK if some progress has been made (more input - processed or more output produced), Z_STREAM_END if all input has been - consumed and all output has been produced (only when flush is set to - Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example - if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible - (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not - fatal, and deflate() can be called again with more input and more output - space to continue compressing. -*/ - - -ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any - pending output. - - deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the - stream state was inconsistent, Z_DATA_ERROR if the stream was freed - prematurely (some input or output was discarded). In the error case, - msg may be set but then points to a static string (which must not be - deallocated). -*/ - - -/* -ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); - - Initializes the internal stream state for decompression. The fields - next_in, avail_in, zalloc, zfree and opaque must be initialized before by - the caller. If next_in is not Z_NULL and avail_in is large enough (the exact - value depends on the compression method), inflateInit determines the - compression method from the zlib header and allocates all data structures - accordingly; otherwise the allocation will be deferred to the first call of - inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to - use default allocation functions. - - inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_VERSION_ERROR if the zlib library version is incompatible with the - version assumed by the caller. msg is set to null if there is no error - message. inflateInit does not perform any decompression apart from reading - the zlib header if present: this will be done by inflate(). (So next_in and - avail_in may be modified, but next_out and avail_out are unchanged.) -*/ - - -ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); -/* - inflate decompresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may introduce - some output latency (reading input without producing any output) except when - forced to flush. - - The detailed semantics are as follows. inflate performs one or both of the - following actions: - - - Decompress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in is updated and processing - will resume at this point for the next call of inflate(). - - - Provide more output starting at next_out and update next_out and avail_out - accordingly. inflate() provides as much output as possible, until there - is no more input data or no more space in the output buffer (see below - about the flush parameter). - - Before the call of inflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming - more output, and updating the next_* and avail_* values accordingly. - The application can consume the uncompressed output when it wants, for - example when the output buffer is full (avail_out == 0), or after each - call of inflate(). If inflate returns Z_OK and with zero avail_out, it - must be called again after making room in the output buffer because there - might be more output pending. - - The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, - Z_FINISH, or Z_BLOCK. Z_SYNC_FLUSH requests that inflate() flush as much - output as possible to the output buffer. Z_BLOCK requests that inflate() stop - if and when it gets to the next deflate block boundary. When decoding the - zlib or gzip format, this will cause inflate() to return immediately after - the header and before the first block. When doing a raw inflate, inflate() - will go ahead and process the first block, and will return when it gets to - the end of that block, or when it runs out of data. - - The Z_BLOCK option assists in appending to or combining deflate streams. - Also to assist in this, on return inflate() will set strm->data_type to the - number of unused bits in the last byte taken from strm->next_in, plus 64 - if inflate() is currently decoding the last block in the deflate stream, - plus 128 if inflate() returned immediately after decoding an end-of-block - code or decoding the complete header up to just before the first byte of the - deflate stream. The end-of-block will not be indicated until all of the - uncompressed data from that block has been written to strm->next_out. The - number of unused bits may in general be greater than seven, except when - bit 7 of data_type is set, in which case the number of unused bits will be - less than eight. - - inflate() should normally be called until it returns Z_STREAM_END or an - error. However if all decompression is to be performed in a single step - (a single call of inflate), the parameter flush should be set to - Z_FINISH. In this case all pending input is processed and all pending - output is flushed; avail_out must be large enough to hold all the - uncompressed data. (The size of the uncompressed data may have been saved - by the compressor for this purpose.) The next operation on this stream must - be inflateEnd to deallocate the decompression state. The use of Z_FINISH - is never required, but can be used to inform inflate that a faster approach - may be used for the single inflate() call. - - In this implementation, inflate() always flushes as much output as - possible to the output buffer, and always uses the faster approach on the - first call. So the only effect of the flush parameter in this implementation - is on the return value of inflate(), as noted below, or when it returns early - because Z_BLOCK is used. - - If a preset dictionary is needed after this call (see inflateSetDictionary - below), inflate sets strm->adler to the adler32 checksum of the dictionary - chosen by the compressor and returns Z_NEED_DICT; otherwise it sets - strm->adler to the adler32 checksum of all output produced so far (that is, - total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described - below. At the end of the stream, inflate() checks that its computed adler32 - checksum is equal to that saved by the compressor and returns Z_STREAM_END - only if the checksum is correct. - - inflate() will decompress and check either zlib-wrapped or gzip-wrapped - deflate data. The header type is detected automatically. Any information - contained in the gzip header is not retained, so applications that need that - information should instead use raw inflate, see inflateInit2() below, or - inflateBack() and perform their own processing of the gzip header and - trailer. - - inflate() returns Z_OK if some progress has been made (more input processed - or more output produced), Z_STREAM_END if the end of the compressed data has - been reached and all uncompressed output has been produced, Z_NEED_DICT if a - preset dictionary is needed at this point, Z_DATA_ERROR if the input data was - corrupted (input stream not conforming to the zlib format or incorrect check - value), Z_STREAM_ERROR if the stream structure was inconsistent (for example - if next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory, - Z_BUF_ERROR if no progress is possible or if there was not enough room in the - output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and - inflate() can be called again with more input and more output space to - continue decompressing. If Z_DATA_ERROR is returned, the application may then - call inflateSync() to look for a good compression block if a partial recovery - of the data is desired. -*/ - - -ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any - pending output. - - inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state - was inconsistent. In the error case, msg may be set but then points to a - static string (which must not be deallocated). -*/ - - /* Advanced functions */ - -/* - The following functions are needed only in some special applications. -*/ - -/* -ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, - int level, - int method, - int windowBits, - int memLevel, - int strategy)); - - This is another version of deflateInit with more compression options. The - fields next_in, zalloc, zfree and opaque must be initialized before by - the caller. - - The method parameter is the compression method. It must be Z_DEFLATED in - this version of the library. - - The windowBits parameter is the base two logarithm of the window size - (the size of the history buffer). It should be in the range 8..15 for this - version of the library. Larger values of this parameter result in better - compression at the expense of memory usage. The default value is 15 if - deflateInit is used instead. - - windowBits can also be -8..-15 for raw deflate. In this case, -windowBits - determines the window size. deflate() will then generate raw deflate data - with no zlib header or trailer, and will not compute an adler32 check value. - - windowBits can also be greater than 15 for optional gzip encoding. Add - 16 to windowBits to write a simple gzip header and trailer around the - compressed data instead of a zlib wrapper. The gzip header will have no - file name, no extra data, no comment, no modification time (set to zero), - no header crc, and the operating system will be set to 255 (unknown). If a - gzip stream is being written, strm->adler is a crc32 instead of an adler32. - - The memLevel parameter specifies how much memory should be allocated - for the internal compression state. memLevel=1 uses minimum memory but - is slow and reduces compression ratio; memLevel=9 uses maximum memory - for optimal speed. The default value is 8. See zconf.h for total memory - usage as a function of windowBits and memLevel. - - The strategy parameter is used to tune the compression algorithm. Use the - value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a - filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no - string match), or Z_RLE to limit match distances to one (run-length - encoding). Filtered data consists mostly of small values with a somewhat - random distribution. In this case, the compression algorithm is tuned to - compress them better. The effect of Z_FILTERED is to force more Huffman - coding and less string matching; it is somewhat intermediate between - Z_DEFAULT and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as - Z_HUFFMAN_ONLY, but give better compression for PNG image data. The strategy - parameter only affects the compression ratio but not the correctness of the - compressed output even if it is not set appropriately. Z_FIXED prevents the - use of dynamic Huffman codes, allowing for a simpler decoder for special - applications. - - deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid - method). msg is set to null if there is no error message. deflateInit2 does - not perform any compression: this will be done by deflate(). -*/ - -ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); -/* - Initializes the compression dictionary from the given byte sequence - without producing any compressed output. This function must be called - immediately after deflateInit, deflateInit2 or deflateReset, before any - call of deflate. The compressor and decompressor must use exactly the same - dictionary (see inflateSetDictionary). - - The dictionary should consist of strings (byte sequences) that are likely - to be encountered later in the data to be compressed, with the most commonly - used strings preferably put towards the end of the dictionary. Using a - dictionary is most useful when the data to be compressed is short and can be - predicted with good accuracy; the data can then be compressed better than - with the default empty dictionary. - - Depending on the size of the compression data structures selected by - deflateInit or deflateInit2, a part of the dictionary may in effect be - discarded, for example if the dictionary is larger than the window size in - deflate or deflate2. Thus the strings most likely to be useful should be - put at the end of the dictionary, not at the front. In addition, the - current implementation of deflate will use at most the window size minus - 262 bytes of the provided dictionary. - - Upon return of this function, strm->adler is set to the adler32 value - of the dictionary; the decompressor may later use this value to determine - which dictionary has been used by the compressor. (The adler32 value - applies to the whole dictionary even if only a subset of the dictionary is - actually used by the compressor.) If a raw deflate was requested, then the - adler32 value is not computed and strm->adler is not set. - - deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a - parameter is invalid (such as NULL dictionary) or the stream state is - inconsistent (for example if deflate has already been called for this stream - or if the compression method is bsort). deflateSetDictionary does not - perform any compression: this will be done by deflate(). -*/ - -ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, - z_streamp source)); -/* - Sets the destination stream as a complete copy of the source stream. - - This function can be useful when several compression strategies will be - tried, for example when there are several ways of pre-processing the input - data with a filter. The streams that will be discarded should then be freed - by calling deflateEnd. Note that deflateCopy duplicates the internal - compression state which can be quite large, so this strategy is slow and - can consume lots of memory. - - deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if the source stream state was inconsistent - (such as zalloc being NULL). msg is left unchanged in both source and - destination. -*/ - -ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); -/* - This function is equivalent to deflateEnd followed by deflateInit, - but does not free and reallocate all the internal compression state. - The stream will keep the same compression level and any other attributes - that may have been set by deflateInit2. - - deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being NULL). -*/ - -ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, - int level, - int strategy)); -/* - Dynamically update the compression level and compression strategy. The - interpretation of level and strategy is as in deflateInit2. This can be - used to switch between compression and straight copy of the input data, or - to switch to a different kind of input data requiring a different - strategy. If the compression level is changed, the input available so far - is compressed with the old level (and may be flushed); the new level will - take effect only at the next call of deflate(). - - Before the call of deflateParams, the stream state must be set as for - a call of deflate(), since the currently available input may have to - be compressed and flushed. In particular, strm->avail_out must be non-zero. - - deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source - stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR - if strm->avail_out was zero. -*/ - -ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, - int good_length, - int max_lazy, - int nice_length, - int max_chain)); -/* - Fine tune deflate's internal compression parameters. This should only be - used by someone who understands the algorithm used by zlib's deflate for - searching for the best matching string, and even then only by the most - fanatic optimizer trying to squeeze out the last compressed bit for their - specific input data. Read the deflate.c source code for the meaning of the - max_lazy, good_length, nice_length, and max_chain parameters. - - deflateTune() can be called after deflateInit() or deflateInit2(), and - returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. - */ - -ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, - uLong sourceLen)); -/* - deflateBound() returns an upper bound on the compressed size after - deflation of sourceLen bytes. It must be called after deflateInit() - or deflateInit2(). This would be used to allocate an output buffer - for deflation in a single pass, and so would be called before deflate(). -*/ - -ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, - int bits, - int value)); -/* - deflatePrime() inserts bits in the deflate output stream. The intent - is that this function is used to start off the deflate output with the - bits leftover from a previous deflate stream when appending to it. As such, - this function can only be used for raw deflate, and must be used before the - first deflate() call after a deflateInit2() or deflateReset(). bits must be - less than or equal to 16, and that many of the least significant bits of - value will be inserted in the output. - - deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, - gz_headerp head)); -/* - deflateSetHeader() provides gzip header information for when a gzip - stream is requested by deflateInit2(). deflateSetHeader() may be called - after deflateInit2() or deflateReset() and before the first call of - deflate(). The text, time, os, extra field, name, and comment information - in the provided gz_header structure are written to the gzip header (xflag is - ignored -- the extra flags are set according to the compression level). The - caller must assure that, if not Z_NULL, name and comment are terminated with - a zero byte, and that if extra is not Z_NULL, that extra_len bytes are - available there. If hcrc is true, a gzip header crc is included. Note that - the current versions of the command-line version of gzip (up through version - 1.3.x) do not support header crc's, and will report that it is a "multi-part - gzip file" and give up. - - If deflateSetHeader is not used, the default gzip header has text false, - the time set to zero, and os set to 255, with no extra, name, or comment - fields. The gzip header is returned to the default state by deflateReset(). - - deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -/* -ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, - int windowBits)); - - This is another version of inflateInit with an extra parameter. The - fields next_in, avail_in, zalloc, zfree and opaque must be initialized - before by the caller. - - The windowBits parameter is the base two logarithm of the maximum window - size (the size of the history buffer). It should be in the range 8..15 for - this version of the library. The default value is 15 if inflateInit is used - instead. windowBits must be greater than or equal to the windowBits value - provided to deflateInit2() while compressing, or it must be equal to 15 if - deflateInit2() was not used. If a compressed stream with a larger window - size is given as input, inflate() will return with the error code - Z_DATA_ERROR instead of trying to allocate a larger window. - - windowBits can also be -8..-15 for raw inflate. In this case, -windowBits - determines the window size. inflate() will then process raw deflate data, - not looking for a zlib or gzip header, not generating a check value, and not - looking for any check values for comparison at the end of the stream. This - is for use with other formats that use the deflate compressed data format - such as zip. Those formats provide their own check values. If a custom - format is developed using the raw deflate format for compressed data, it is - recommended that a check value such as an adler32 or a crc32 be applied to - the uncompressed data as is done in the zlib, gzip, and zip formats. For - most applications, the zlib format should be used as is. Note that comments - above on the use in deflateInit2() applies to the magnitude of windowBits. - - windowBits can also be greater than 15 for optional gzip decoding. Add - 32 to windowBits to enable zlib and gzip decoding with automatic header - detection, or add 16 to decode only the gzip format (the zlib format will - return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is - a crc32 instead of an adler32. - - inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if a parameter is invalid (such as a null strm). msg - is set to null if there is no error message. inflateInit2 does not perform - any decompression apart from reading the zlib header if present: this will - be done by inflate(). (So next_in and avail_in may be modified, but next_out - and avail_out are unchanged.) -*/ - -ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); -/* - Initializes the decompression dictionary from the given uncompressed byte - sequence. This function must be called immediately after a call of inflate, - if that call returned Z_NEED_DICT. The dictionary chosen by the compressor - can be determined from the adler32 value returned by that call of inflate. - The compressor and decompressor must use exactly the same dictionary (see - deflateSetDictionary). For raw inflate, this function can be called - immediately after inflateInit2() or inflateReset() and before any call of - inflate() to set the dictionary. The application must insure that the - dictionary that was used for compression is provided. - - inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a - parameter is invalid (such as NULL dictionary) or the stream state is - inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the - expected one (incorrect adler32 value). inflateSetDictionary does not - perform any decompression: this will be done by subsequent calls of - inflate(). -*/ - -ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); -/* - Skips invalid compressed data until a full flush point (see above the - description of deflate with Z_FULL_FLUSH) can be found, or until all - available input is skipped. No output is provided. - - inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR - if no more input was provided, Z_DATA_ERROR if no flush point has been found, - or Z_STREAM_ERROR if the stream structure was inconsistent. In the success - case, the application may save the current current value of total_in which - indicates where valid compressed data was found. In the error case, the - application may repeatedly call inflateSync, providing more input each time, - until success or end of the input data. -*/ - -ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, - z_streamp source)); -/* - Sets the destination stream as a complete copy of the source stream. - - This function can be useful when randomly accessing a large stream. The - first pass through the stream can periodically record the inflate state, - allowing restarting inflate at those points when randomly accessing the - stream. - - inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if the source stream state was inconsistent - (such as zalloc being NULL). msg is left unchanged in both source and - destination. -*/ - -ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); -/* - This function is equivalent to inflateEnd followed by inflateInit, - but does not free and reallocate all the internal decompression state. - The stream will keep attributes that may have been set by inflateInit2. - - inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being NULL). -*/ - -ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, - int bits, - int value)); -/* - This function inserts bits in the inflate input stream. The intent is - that this function is used to start inflating at a bit position in the - middle of a byte. The provided bits will be used before any bytes are used - from next_in. This function should only be used with raw inflate, and - should be used before the first inflate() call after inflateInit2() or - inflateReset(). bits must be less than or equal to 16, and that many of the - least significant bits of value will be inserted in the input. - - inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, - gz_headerp head)); -/* - inflateGetHeader() requests that gzip header information be stored in the - provided gz_header structure. inflateGetHeader() may be called after - inflateInit2() or inflateReset(), and before the first call of inflate(). - As inflate() processes the gzip stream, head->done is zero until the header - is completed, at which time head->done is set to one. If a zlib stream is - being decoded, then head->done is set to -1 to indicate that there will be - no gzip header information forthcoming. Note that Z_BLOCK can be used to - force inflate() to return immediately after header processing is complete - and before any actual data is decompressed. - - The text, time, xflags, and os fields are filled in with the gzip header - contents. hcrc is set to true if there is a header CRC. (The header CRC - was valid if done is set to one.) If extra is not Z_NULL, then extra_max - contains the maximum number of bytes to write to extra. Once done is true, - extra_len contains the actual extra field length, and extra contains the - extra field, or that field truncated if extra_max is less than extra_len. - If name is not Z_NULL, then up to name_max characters are written there, - terminated with a zero unless the length is greater than name_max. If - comment is not Z_NULL, then up to comm_max characters are written there, - terminated with a zero unless the length is greater than comm_max. When - any of extra, name, or comment are not Z_NULL and the respective field is - not present in the header, then that field is set to Z_NULL to signal its - absence. This allows the use of deflateSetHeader() with the returned - structure to duplicate the header. However if those fields are set to - allocated memory, then the application will need to save those pointers - elsewhere so that they can be eventually freed. - - If inflateGetHeader is not used, then the header information is simply - discarded. The header is always checked for validity, including the header - CRC if present. inflateReset() will reset the process to discard the header - information. The application would need to call inflateGetHeader() again to - retrieve the header from the next gzip stream. - - inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -/* -ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, - unsigned char FAR *window)); - - Initialize the internal stream state for decompression using inflateBack() - calls. The fields zalloc, zfree and opaque in strm must be initialized - before the call. If zalloc and zfree are Z_NULL, then the default library- - derived memory allocation routines are used. windowBits is the base two - logarithm of the window size, in the range 8..15. window is a caller - supplied buffer of that size. Except for special applications where it is - assured that deflate was used with small window sizes, windowBits must be 15 - and a 32K byte window must be supplied to be able to decompress general - deflate streams. - - See inflateBack() for the usage of these routines. - - inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of - the paramaters are invalid, Z_MEM_ERROR if the internal state could not - be allocated, or Z_VERSION_ERROR if the version of the library does not - match the version of the header file. -*/ - -typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *)); -typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); - -ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, - in_func in, void FAR *in_desc, - out_func out, void FAR *out_desc)); -/* - inflateBack() does a raw inflate with a single call using a call-back - interface for input and output. This is more efficient than inflate() for - file i/o applications in that it avoids copying between the output and the - sliding window by simply making the window itself the output buffer. This - function trusts the application to not change the output buffer passed by - the output function, at least until inflateBack() returns. - - inflateBackInit() must be called first to allocate the internal state - and to initialize the state with the user-provided window buffer. - inflateBack() may then be used multiple times to inflate a complete, raw - deflate stream with each call. inflateBackEnd() is then called to free - the allocated state. - - A raw deflate stream is one with no zlib or gzip header or trailer. - This routine would normally be used in a utility that reads zip or gzip - files and writes out uncompressed files. The utility would decode the - header and process the trailer on its own, hence this routine expects - only the raw deflate stream to decompress. This is different from the - normal behavior of inflate(), which expects either a zlib or gzip header and - trailer around the deflate stream. - - inflateBack() uses two subroutines supplied by the caller that are then - called by inflateBack() for input and output. inflateBack() calls those - routines until it reads a complete deflate stream and writes out all of the - uncompressed data, or until it encounters an error. The function's - parameters and return types are defined above in the in_func and out_func - typedefs. inflateBack() will call in(in_desc, &buf) which should return the - number of bytes of provided input, and a pointer to that input in buf. If - there is no input available, in() must return zero--buf is ignored in that - case--and inflateBack() will return a buffer error. inflateBack() will call - out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out() - should return zero on success, or non-zero on failure. If out() returns - non-zero, inflateBack() will return with an error. Neither in() nor out() - are permitted to change the contents of the window provided to - inflateBackInit(), which is also the buffer that out() uses to write from. - The length written by out() will be at most the window size. Any non-zero - amount of input may be provided by in(). - - For convenience, inflateBack() can be provided input on the first call by - setting strm->next_in and strm->avail_in. If that input is exhausted, then - in() will be called. Therefore strm->next_in must be initialized before - calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called - immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in - must also be initialized, and then if strm->avail_in is not zero, input will - initially be taken from strm->next_in[0 .. strm->avail_in - 1]. - - The in_desc and out_desc parameters of inflateBack() is passed as the - first parameter of in() and out() respectively when they are called. These - descriptors can be optionally used to pass any information that the caller- - supplied in() and out() functions need to do their job. - - On return, inflateBack() will set strm->next_in and strm->avail_in to - pass back any unused input that was provided by the last in() call. The - return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR - if in() or out() returned an error, Z_DATA_ERROR if there was a format - error in the deflate stream (in which case strm->msg is set to indicate the - nature of the error), or Z_STREAM_ERROR if the stream was not properly - initialized. In the case of Z_BUF_ERROR, an input or output error can be - distinguished using strm->next_in which will be Z_NULL only if in() returned - an error. If strm->next is not Z_NULL, then the Z_BUF_ERROR was due to - out() returning non-zero. (in() will always be called before out(), so - strm->next_in is assured to be defined if out() returns non-zero.) Note - that inflateBack() cannot return Z_OK. -*/ - -ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); -/* - All memory allocated by inflateBackInit() is freed. - - inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream - state was inconsistent. -*/ - -ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); -/* Return flags indicating compile-time options. - - Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: - 1.0: size of uInt - 3.2: size of uLong - 5.4: size of voidpf (pointer) - 7.6: size of z_off_t - - Compiler, assembler, and debug options: - 8: DEBUG - 9: ASMV or ASMINF -- use ASM code - 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention - 11: 0 (reserved) - - One-time table building (smaller code, but not thread-safe if true): - 12: BUILDFIXED -- build static block decoding tables when needed - 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed - 14,15: 0 (reserved) - - Library content (indicates missing functionality): - 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking - deflate code when not needed) - 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect - and decode gzip streams (to avoid linking crc code) - 18-19: 0 (reserved) - - Operation variations (changes in library functionality): - 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate - 21: FASTEST -- deflate algorithm with only one, lowest compression level - 22,23: 0 (reserved) - - The sprintf variant used by gzprintf (zero is best): - 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format - 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! - 26: 0 = returns value, 1 = void -- 1 means inferred string length returned - - Remainder: - 27-31: 0 (reserved) - */ - - - /* utility functions */ - -/* - The following utility functions are implemented on top of the - basic stream-oriented functions. To simplify the interface, some - default options are assumed (compression level and memory usage, - standard memory allocation functions). The source code of these - utility functions can easily be modified if you need special options. -*/ - -ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); -/* - Compresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total - size of the destination buffer, which must be at least the value returned - by compressBound(sourceLen). Upon exit, destLen is the actual size of the - compressed buffer. - This function can be used to compress a whole file at once if the - input file is mmap'ed. - compress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer. -*/ - -ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen, - int level)); -/* - Compresses the source buffer into the destination buffer. The level - parameter has the same meaning as in deflateInit. sourceLen is the byte - length of the source buffer. Upon entry, destLen is the total size of the - destination buffer, which must be at least the value returned by - compressBound(sourceLen). Upon exit, destLen is the actual size of the - compressed buffer. - - compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_BUF_ERROR if there was not enough room in the output buffer, - Z_STREAM_ERROR if the level parameter is invalid. -*/ - -ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); -/* - compressBound() returns an upper bound on the compressed size after - compress() or compress2() on sourceLen bytes. It would be used before - a compress() or compress2() call to allocate the destination buffer. -*/ - -ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); -/* - Decompresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total - size of the destination buffer, which must be large enough to hold the - entire uncompressed data. (The size of the uncompressed data must have - been saved previously by the compressor and transmitted to the decompressor - by some mechanism outside the scope of this compression library.) - Upon exit, destLen is the actual size of the compressed buffer. - This function can be used to decompress a whole file at once if the - input file is mmap'ed. - - uncompress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. -*/ - - -typedef voidp gzFile; - -ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); -/* - Opens a gzip (.gz) file for reading or writing. The mode parameter - is as in fopen ("rb" or "wb") but can also include a compression level - ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for - Huffman only compression as in "wb1h", or 'R' for run-length encoding - as in "wb1R". (See the description of deflateInit2 for more information - about the strategy parameter.) - - gzopen can be used to read a file which is not in gzip format; in this - case gzread will directly read from the file without decompression. - - gzopen returns NULL if the file could not be opened or if there was - insufficient memory to allocate the (de)compression state; errno - can be checked to distinguish the two cases (if errno is zero, the - zlib error is Z_MEM_ERROR). */ - -ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); -/* - gzdopen() associates a gzFile with the file descriptor fd. File - descriptors are obtained from calls like open, dup, creat, pipe or - fileno (in the file has been previously opened with fopen). - The mode parameter is as in gzopen. - The next call of gzclose on the returned gzFile will also close the - file descriptor fd, just like fclose(fdopen(fd), mode) closes the file - descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode). - gzdopen returns NULL if there was insufficient memory to allocate - the (de)compression state. -*/ - -ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); -/* - Dynamically update the compression level or strategy. See the description - of deflateInit2 for the meaning of these parameters. - gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not - opened for writing. -*/ - -ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); -/* - Reads the given number of uncompressed bytes from the compressed file. - If the input file was not in gzip format, gzread copies the given number - of bytes into the buffer. - gzread returns the number of uncompressed bytes actually read (0 for - end of file, -1 for error). */ - -ZEXTERN int ZEXPORT gzwrite OF((gzFile file, - voidpc buf, unsigned len)); -/* - Writes the given number of uncompressed bytes into the compressed file. - gzwrite returns the number of uncompressed bytes actually written - (0 in case of error). -*/ - -ZEXTERN int ZEXPORTVA gzprintf OF((gzFile file, const char *format, ...)); -/* - Converts, formats, and writes the args to the compressed file under - control of the format string, as in fprintf. gzprintf returns the number of - uncompressed bytes actually written (0 in case of error). The number of - uncompressed bytes written is limited to 4095. The caller should assure that - this limit is not exceeded. If it is exceeded, then gzprintf() will return - return an error (0) with nothing written. In this case, there may also be a - buffer overflow with unpredictable consequences, which is possible only if - zlib was compiled with the insecure functions sprintf() or vsprintf() - because the secure snprintf() or vsnprintf() functions were not available. -*/ - -ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); -/* - Writes the given null-terminated string to the compressed file, excluding - the terminating null character. - gzputs returns the number of characters written, or -1 in case of error. -*/ - -ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); -/* - Reads bytes from the compressed file until len-1 characters are read, or - a newline character is read and transferred to buf, or an end-of-file - condition is encountered. The string is then terminated with a null - character. - gzgets returns buf, or Z_NULL in case of error. -*/ - -ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); -/* - Writes c, converted to an unsigned char, into the compressed file. - gzputc returns the value that was written, or -1 in case of error. -*/ - -ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); -/* - Reads one byte from the compressed file. gzgetc returns this byte - or -1 in case of end of file or error. -*/ - -ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); -/* - Push one character back onto the stream to be read again later. - Only one character of push-back is allowed. gzungetc() returns the - character pushed, or -1 on failure. gzungetc() will fail if a - character has been pushed but not read yet, or if c is -1. The pushed - character will be discarded if the stream is repositioned with gzseek() - or gzrewind(). -*/ - -ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); -/* - Flushes all pending output into the compressed file. The parameter - flush is as in the deflate() function. The return value is the zlib - error number (see function gzerror below). gzflush returns Z_OK if - the flush parameter is Z_FINISH and all output could be flushed. - gzflush should be called only when strictly necessary because it can - degrade compression. -*/ - -ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, - z_off_t offset, int whence)); -/* - Sets the starting position for the next gzread or gzwrite on the - given compressed file. The offset represents a number of bytes in the - uncompressed data stream. The whence parameter is defined as in lseek(2); - the value SEEK_END is not supported. - If the file is opened for reading, this function is emulated but can be - extremely slow. If the file is opened for writing, only forward seeks are - supported; gzseek then compresses a sequence of zeroes up to the new - starting position. - - gzseek returns the resulting offset location as measured in bytes from - the beginning of the uncompressed stream, or -1 in case of error, in - particular if the file is opened for writing and the new starting position - would be before the current position. -*/ - -ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); -/* - Rewinds the given file. This function is supported only for reading. - - gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) -*/ - -ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); -/* - Returns the starting position for the next gzread or gzwrite on the - given compressed file. This position represents a number of bytes in the - uncompressed data stream. - - gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) -*/ - -ZEXTERN int ZEXPORT gzeof OF((gzFile file)); -/* - Returns 1 when EOF has previously been detected reading the given - input stream, otherwise zero. -*/ - -ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); -/* - Returns 1 if file is being read directly without decompression, otherwise - zero. -*/ - -ZEXTERN int ZEXPORT gzclose OF((gzFile file)); -/* - Flushes all pending output if necessary, closes the compressed file - and deallocates all the (de)compression state. The return value is the zlib - error number (see function gzerror below). -*/ - -ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); -/* - Returns the error message for the last error which occurred on the - given compressed file. errnum is set to zlib error number. If an - error occurred in the file system and not in the compression library, - errnum is set to Z_ERRNO and the application may consult errno - to get the exact error code. -*/ - -ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); -/* - Clears the error and end-of-file flags for file. This is analogous to the - clearerr() function in stdio. This is useful for continuing to read a gzip - file that is being written concurrently. -*/ - - /* checksum functions */ - -/* - These functions are not related to compression but are exported - anyway because they might be useful in applications using the - compression library. -*/ - -ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); -/* - Update a running Adler-32 checksum with the bytes buf[0..len-1] and - return the updated checksum. If buf is NULL, this function returns - the required initial value for the checksum. - An Adler-32 checksum is almost as reliable as a CRC32 but can be computed - much faster. Usage example: - - uLong adler = adler32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - adler = adler32(adler, buffer, length); - } - if (adler != original_adler) error(); -*/ - -ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, - z_off_t len2)); -/* - Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 - and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for - each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of - seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. -*/ - -ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); -/* - Update a running CRC-32 with the bytes buf[0..len-1] and return the - updated CRC-32. If buf is NULL, this function returns the required initial - value for the for the crc. Pre- and post-conditioning (one's complement) is - performed within this function so it shouldn't be done by the application. - Usage example: - - uLong crc = crc32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - crc = crc32(crc, buffer, length); - } - if (crc != original_crc) error(); -*/ - -ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); - -/* - Combine two CRC-32 check values into one. For two sequences of bytes, - seq1 and seq2 with lengths len1 and len2, CRC-32 check values were - calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 - check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and - len2. -*/ - - - /* various hacks, don't look :) */ - -/* deflateInit and inflateInit are macros to allow checking the zlib version - * and the compiler's view of z_stream: - */ -ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, - int windowBits, int memLevel, - int strategy, const char *version, - int stream_size)); -ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, - unsigned char FAR *window, - const char *version, - int stream_size)); -#define deflateInit(strm, level) \ - deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream)) -#define inflateInit(strm) \ - inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream)) -#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ - deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ - (strategy), ZLIB_VERSION, sizeof(z_stream)) -#define inflateInit2(strm, windowBits) \ - inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream)) -#define inflateBackInit(strm, windowBits, window) \ - inflateBackInit_((strm), (windowBits), (window), \ - ZLIB_VERSION, sizeof(z_stream)) - - -#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) - struct internal_state {int dummy;}; /* hack for buggy compilers */ -#endif - -ZEXTERN const char * ZEXPORT zError OF((int)); -ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp z)); -ZEXTERN const uLongf * ZEXPORT get_crc_table OF((void)); - -#ifdef __cplusplus -} -#endif - -#endif /* ZLIB_H */ diff --git a/Kindle_4_PC_Tools/README_K4PCDeDRM.txt b/Kindle_4_PC_Tools/README_K4PCDeDRM.txt deleted file mode 100644 index d9f4780..0000000 --- a/Kindle_4_PC_Tools/README_K4PCDeDRM.txt +++ /dev/null @@ -1,23 +0,0 @@ -Readme.txt - -From Apprentice Alf's Blog: - -When Amazon released Kindle for PC, there was a lot of interest in finding the PID used by an installed copy. Unfortunately, it turned out that Amazon had taken the opportunity to increase the complexity of the DRM applied to ebooks downloaded for use with Kindle for PC. In short, every book has its own PID. - -The current best method is a script called K4PCDeDRM.py, which takes code from several previous tools and puts them together, giving a one-script solution to removing the DRM that is not dependent on the exact version of the Kindle for PC software. - -To use this script requires Python Version 2.X 32 bit version. On Windows, we recommend downloading ActiveState's ActivePython for Windows (Version 2.X NOT 3.X (32bit). - -We strongly recommend that at the moment people with Kindle for Windows should use K4PCDeDRM.pyw instead of any of the other methods (skindle, unswindle). - -K4PCDeDRM is available in the large archive mentioned in the first post. - -To run it simply completely extract the tools archive and open the Kindle_4_PC_Tools. Then double-click on K4PCDeDRM.pyw to run the gui version. - -Please note, the tools archive must be on the same machine in the same account as the Kindle for PC application for things to work. - -FYI: -Books downloaded to Kindle for PC are stored in a folder called “My Kindle Content” in the current user’s home folder. - -IMPORTANT: There are two kinds of Kindle ebooks. Mobipocket and Topaz. For Topaz books it’s really necessary to use the Topaz specific tools mentioned in this post which not only remove the DRM but also convert the Topaz file into a format that can be converted into other formats. - diff --git a/Kindle_4_PC_Tools/lib/k4pcdedrm.py b/Kindle_4_PC_Tools/lib/k4pcdedrm.py deleted file mode 100644 index 509987e..0000000 --- a/Kindle_4_PC_Tools/lib/k4pcdedrm.py +++ /dev/null @@ -1,682 +0,0 @@ -#!/usr/bin/env python -# -# This is a WINDOWS python script. You need a Python interpreter to run it. -# For example, ActiveState Python, which exists for windows. -# -# It can run standalone to convert K4PC files, or it can be installed as a -# plugin for Calibre (http://calibre-ebook.com/about) so that importing -# K4PC files with DRM is no londer a multi-step process. -# -# ***NOTE*** Calibre and K4PC must be installed on the same windows machine -# for the plugin version to function properly. -# -# To create a Calibre plugin, rename this file so that the filename -# ends in '_plugin.py', put it into a ZIP file and import that ZIP into Calibre -# using its plugin configuration GUI. -# -# Thanks to The Dark Reverser for MobiDeDrm and CMBDTC for cmbdtc_dump from -# which this script steals most unashamedly. -# -# Changelog -# 0.01 - Initial version - Utilizes skindle and CMBDTC method of obtaining -# book specific pids from K4PC books. If Calibre and K4PC are installed -# on the same windows machine, Calibre plugin functionality is once -# again restored. - - -""" - -Comprehensive Mazama Book DRM with Topaz Cryptography V2.0 - ------BEGIN PUBLIC KEY----- -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdBHJ4CNc6DNFCw4MRCw4SWAK6 -M8hYfnNEI0yQmn5Ti+W8biT7EatpauE/5jgQMPBmdNrDr1hbHyHBSP7xeC2qlRWC -B62UCxeu/fpfnvNHDN/wPWWH4jynZ2M6cdcnE5LQ+FfeKqZn7gnG2No1U9h7oOHx -y2/pHuYme7U1TsgSjwIDAQAB ------END PUBLIC KEY----- - -""" - -from __future__ import with_statement - -import csv -import sys -import os -import getopt -import zlib -import binascii -from struct import pack -from struct import unpack -from ctypes import windll, c_char_p, c_wchar_p, c_uint, POINTER, byref, \ - create_unicode_buffer, create_string_buffer, CFUNCTYPE, addressof, \ - string_at, Structure, c_void_p, cast -import _winreg as winreg -import traceback -import hashlib - -__version__ = '0.01' - -global kindleDatabase -MAX_PATH = 255 -kernel32 = windll.kernel32 -advapi32 = windll.advapi32 -crypt32 = windll.crypt32 - - -# -# Various character maps used to decrypt books. Probably supposed to act as obfuscation -# -charMap1 = "n5Pr6St7Uv8Wx9YzAb0Cd1Ef2Gh3Jk4M" -charMap2 = "AaZzB0bYyCc1XxDdW2wEeVv3FfUuG4g-TtHh5SsIiR6rJjQq7KkPpL8lOoMm9Nn_" -charMap3 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" -charMap4 = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789" - - -# -# Exceptions for all the problems that might happen during the script -# -class DrmException(Exception): - pass - - -class DataBlob(Structure): - _fields_ = [('cbData', c_uint), - ('pbData', c_void_p)] -DataBlob_p = POINTER(DataBlob) - - -def GetSystemDirectory(): - GetSystemDirectoryW = kernel32.GetSystemDirectoryW - GetSystemDirectoryW.argtypes = [c_wchar_p, c_uint] - GetSystemDirectoryW.restype = c_uint - def GetSystemDirectory(): - buffer = create_unicode_buffer(MAX_PATH + 1) - GetSystemDirectoryW(buffer, len(buffer)) - return buffer.value - return GetSystemDirectory -GetSystemDirectory = GetSystemDirectory() - - -def GetVolumeSerialNumber(): - GetVolumeInformationW = kernel32.GetVolumeInformationW - GetVolumeInformationW.argtypes = [c_wchar_p, c_wchar_p, c_uint, - POINTER(c_uint), POINTER(c_uint), - POINTER(c_uint), c_wchar_p, c_uint] - GetVolumeInformationW.restype = c_uint - def GetVolumeSerialNumber(path): - vsn = c_uint(0) - GetVolumeInformationW(path, None, 0, byref(vsn), None, None, None, 0) - return vsn.value - return GetVolumeSerialNumber -GetVolumeSerialNumber = GetVolumeSerialNumber() - - -def GetUserName(): - GetUserNameW = advapi32.GetUserNameW - GetUserNameW.argtypes = [c_wchar_p, POINTER(c_uint)] - GetUserNameW.restype = c_uint - def GetUserName(): - buffer = create_unicode_buffer(32) - size = c_uint(len(buffer)) - while not GetUserNameW(buffer, byref(size)): - buffer = create_unicode_buffer(len(buffer) * 2) - size.value = len(buffer) - return buffer.value.encode('utf-16-le')[::2] - return GetUserName -GetUserName = GetUserName() - - -def CryptUnprotectData(): - _CryptUnprotectData = crypt32.CryptUnprotectData - _CryptUnprotectData.argtypes = [DataBlob_p, c_wchar_p, DataBlob_p, - c_void_p, c_void_p, c_uint, DataBlob_p] - _CryptUnprotectData.restype = c_uint - def CryptUnprotectData(indata, entropy): - indatab = create_string_buffer(indata) - indata = DataBlob(len(indata), cast(indatab, c_void_p)) - entropyb = create_string_buffer(entropy) - entropy = DataBlob(len(entropy), cast(entropyb, c_void_p)) - outdata = DataBlob() - if not _CryptUnprotectData(byref(indata), None, byref(entropy), - None, None, 0, byref(outdata)): - raise DrmException("Failed to Unprotect Data") - return string_at(outdata.pbData, outdata.cbData) - return CryptUnprotectData -CryptUnprotectData = CryptUnprotectData() - - -# -# Returns the MD5 digest of "message" -# -def MD5(message): - ctx = hashlib.md5() - ctx.update(message) - return ctx.digest() - - -# -# Returns the MD5 digest of "message" -# -def SHA1(message): - ctx = hashlib.sha1() - ctx.update(message) - return ctx.digest() - - -# -# Locate and open the Kindle.info file. -# -def openKindleInfo(): - regkey = winreg.OpenKey(winreg.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\") - path = winreg.QueryValueEx(regkey, 'Local AppData')[0] - return open(path+'\\Amazon\\Kindle For PC\\{AMAwzsaPaaZAzmZzZQzgZCAkZ3AjA_AY}\\kindle.info','r') - - -# -# Parse the Kindle.info file and return the records as a list of key-values -# -def parseKindleInfo(): - DB = {} - infoReader = openKindleInfo() - infoReader.read(1) - data = infoReader.read() - items = data.split('{') - - for item in items: - splito = item.split(':') - DB[splito[0]] =splito[1] - return DB - - -# -# Find if the original string for a hashed/encoded string is known. If so return the original string othwise return an empty string. (Totally not optimal) -# -def findNameForHash(hash): - names = ["kindle.account.tokens","kindle.cookie.item","eulaVersionAccepted","login_date","kindle.token.item","login","kindle.key.item","kindle.name.info","kindle.device.info", "MazamaRandomNumber"] - result = "" - for name in names: - if hash == encodeHash(name, charMap2): - result = name - break - return name - - -# -# Print all the records from the kindle.info file. -# -def printKindleInfo(): - for record in kindleDatabase: - name = findNameForHash(record) - if name != "" : - print (name) - print ("--------------------------\n") - else : - print ("Unknown Record") - print getKindleInfoValueForHash(record) - print "\n" - - -# -# Get a record from the Kindle.info file for the key "hashedKey" (already hashed and encoded). Return the decoded and decrypted record -# -def getKindleInfoValueForHash(hashedKey): - global kindleDatabase - encryptedValue = decode(kindleDatabase[hashedKey],charMap2) - return CryptUnprotectData(encryptedValue,"") - - -# -# Get a record from the Kindle.info file for the string in "key" (plaintext). Return the decoded and decrypted record -# -def getKindleInfoValueForKey(key): - return getKindleInfoValueForHash(encodeHash(key,charMap2)) - - -# -# 8 bits to six bits encoding from hash to generate PID string -# -def encodePID(hash): - global charMap3 - PID = "" - for position in range (0,8): - PID += charMap3[getSixBitsFromBitField(hash,position)] - return PID - - -# -# Hash the bytes in data and then encode the digest with the characters in map -# -def encodeHash(data,map): - return encode(MD5(data),map) - - -# -# Encode the bytes in data with the characters in map -# -def encode(data, map): - result = "" - for char in data: - value = ord(char) - Q = (value ^ 0x80) // len(map) - R = value % len(map) - result += map[Q] - result += map[R] - return result - - -# -# Decode the string in data with the characters in map. Returns the decoded bytes -# -def decode(data,map): - result = "" - for i in range (0,len(data),2): - high = map.find(data[i]) - low = map.find(data[i+1]) - value = (((high * 0x40) ^ 0x80) & 0xFF) + low - result += pack("B",value) - return result - - -# -# Encryption table used to generate the device PID -# -def generatePidEncryptionTable() : - table = [] - for counter1 in range (0,0x100): - value = counter1 - for counter2 in range (0,8): - if (value & 1 == 0) : - value = value >> 1 - else : - value = value >> 1 - value = value ^ 0xEDB88320 - table.append(value) - return table - - -# -# Seed value used to generate the device PID -# -def generatePidSeed(table,dsn) : - value = 0 - for counter in range (0,4) : - index = (ord(dsn[counter]) ^ value) &0xFF - value = (value >> 8) ^ table[index] - return value - - -# -# Generate the device PID -# -def generateDevicePID(table,dsn,nbRoll): - seed = generatePidSeed(table,dsn) - pidAscii = "" - pid = [(seed >>24) &0xFF,(seed >> 16) &0xff,(seed >> 8) &0xFF,(seed) & 0xFF,(seed>>24) & 0xFF,(seed >> 16) &0xff,(seed >> 8) &0xFF,(seed) & 0xFF] - index = 0 - - for counter in range (0,nbRoll): - pid[index] = pid[index] ^ ord(dsn[counter]) - index = (index+1) %8 - - for counter in range (0,8): - index = ((((pid[counter] >>5) & 3) ^ pid[counter]) & 0x1f) + (pid[counter] >> 7) - pidAscii += charMap4[index] - return pidAscii - - -# -# Returns two bit at offset from a bit field -# -def getTwoBitsFromBitField(bitField,offset): - byteNumber = offset // 4 - bitPosition = 6 - 2*(offset % 4) - - return ord(bitField[byteNumber]) >> bitPosition & 3 - - -# -# Returns the six bits at offset from a bit field -# -def getSixBitsFromBitField(bitField,offset): - offset *= 3 - value = (getTwoBitsFromBitField(bitField,offset) <<4) + (getTwoBitsFromBitField(bitField,offset+1) << 2) +getTwoBitsFromBitField(bitField,offset+2) - return value - - -# -# MobiDeDrm-0.16 Stuff -# -class Unbuffered: - def __init__(self, stream): - self.stream = stream - def write(self, data): - self.stream.write(data) - self.stream.flush() - def __getattr__(self, attr): - return getattr(self.stream, attr) - - -# Implementation of Pukall Cipher 1 -def PC1(key, src, decryption=True): - sum1 = 0; - sum2 = 0; - keyXorVal = 0; - if len(key)!=16: - print "Bad key length!" - return None - wkey = [] - for i in xrange(8): - wkey.append(ord(key[i*2])<<8 | ord(key[i*2+1])) - - dst = "" - for i in xrange(len(src)): - temp1 = 0; - byteXorVal = 0; - for j in xrange(8): - temp1 ^= wkey[j] - sum2 = (sum2+j)*20021 + sum1 - sum1 = (temp1*346)&0xFFFF - sum2 = (sum2+sum1)&0xFFFF - temp1 = (temp1*20021+1)&0xFFFF - byteXorVal ^= temp1 ^ sum2 - curByte = ord(src[i]) - if not decryption: - keyXorVal = curByte * 257; - curByte = ((curByte ^ (byteXorVal >> 8)) ^ byteXorVal) & 0xFF - if decryption: - keyXorVal = curByte * 257; - for j in xrange(8): - wkey[j] ^= keyXorVal; - dst+=chr(curByte) - return dst - - -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 - bitpos += 7 - size -= 1 - if (v & 0x80) != 0 or (bitpos >= 28) or (size == 0): - return result - num = 0 - testflags = flags >> 1 - while testflags: - if testflags & 1: - num += getSizeOfTrailingDataEntry(ptr, size - num) - testflags >>= 1 - # Multibyte data, if present, is included in the encryption, so - # we do not need to check the low bit. - # if flags & 1: - # num += (ord(ptr[size - num - 1]) & 0x3) + 1 - return num - - -# -# This class does all the heavy lifting. -# -class DrmStripper: - def loadSection(self, section): - if (section + 1 == self.num_sections): - endoff = len(self.data_file) - else: - endoff = self.sections[section + 1][0] - off = self.sections[section][0] - return self.data_file[off:endoff] - - def patch(self, off, new): - self.data_file = self.data_file[:off] + new + self.data_file[off+len(new):] - - def patchSection(self, section, new, in_off = 0): - if (section + 1 == self.num_sections): - endoff = len(self.data_file) - else: - endoff = self.sections[section + 1][0] - off = self.sections[section][0] - assert off + in_off + len(new) <= endoff - self.patch(off + in_off, new) - - def parseDRM(self, data, count, pid): - pid = pid.ljust(16,'\0') - keyvec1 = "\x72\x38\x33\xB0\xB4\xF2\xE3\xCA\xDF\x09\x01\xD6\xE2\xE0\x3F\x96" - temp_key = PC1(keyvec1, pid, False) - temp_key_sum = sum(map(ord,temp_key)) & 0xff - found_key = None - for i in xrange(count): - verification, size, type, cksum, cookie = unpack('>LLLBxxx32s', data[i*0x30:i*0x30+0x30]) - cookie = PC1(temp_key, cookie) - ver,flags,finalkey,expiry,expiry2 = unpack('>LL16sLL', cookie) - if verification == ver and cksum == temp_key_sum and (flags & 0x1F) == 1: - found_key = finalkey - break - if not found_key: - # Then try the default encoding that doesn't require a PID - temp_key = keyvec1 - temp_key_sum = sum(map(ord,temp_key)) & 0xff - for i in xrange(count): - verification, size, type, cksum, cookie = unpack('>LLLBxxx32s', data[i*0x30:i*0x30+0x30]) - cookie = PC1(temp_key, cookie) - ver,flags,finalkey,expiry,expiry2 = unpack('>LL16sLL', cookie) - if verification == ver and cksum == temp_key_sum: - found_key = finalkey - break - return found_key - - def __init__(self, data_file): - self.data_file = data_file - header = data_file[0:72] - if header[0x3C:0x3C+8] != 'BOOKMOBI': - raise DrmException("invalid file format") - self.num_sections, = unpack('>H', data_file[76:78]) - - self.sections = [] - for i in xrange(self.num_sections): - offset, a1,a2,a3,a4 = unpack('>LBBBB', data_file[78+i*8:78+i*8+8]) - flags, val = a1, a2<<16|a3<<8|a4 - self.sections.append( (offset, flags, val) ) - - sect = self.loadSection(0) - records, = unpack('>H', sect[0x8:0x8+2]) - mobi_length, = unpack('>L',sect[0x14:0x18]) - mobi_version, = unpack('>L',sect[0x68:0x6C]) - extra_data_flags = 0 - print "MOBI header version = %d, length = %d" %(mobi_version, mobi_length) - if (mobi_length >= 0xE4) and (mobi_version >= 5): - extra_data_flags, = unpack('>H', sect[0xF2:0xF4]) - print "Extra Data Flags = %d" %extra_data_flags - - crypto_type, = unpack('>H', sect[0xC:0xC+2]) - if crypto_type == 0: - print "This book is not encrypted." - else: - if crypto_type == 1: - raise DrmException("cannot decode Mobipocket encryption type 1") - if crypto_type != 2: - raise DrmException("unknown encryption type: %d" % crypto_type) - - # determine the EXTH Offset. - exth_off = unpack('>I', sect[20:24])[0] + 16 + self.sections[0][0] - # Grab the entire EXTH block and feed it to the getK4PCPids function. - exth = data_file[exth_off:self.sections[0+1][0]] - pid = getK4PCPids(exth) - - # calculate the keys - drm_ptr, drm_count, drm_size, drm_flags = unpack('>LLLL', sect[0xA8:0xA8+16]) - if drm_count == 0: - raise DrmException("no PIDs found in this file") - found_key = self.parseDRM(sect[drm_ptr:drm_ptr+drm_size], drm_count, pid) - if not found_key: - raise DrmException("no key found. maybe the PID is incorrect") - - # kill the drm keys - self.patchSection(0, "\0" * drm_size, drm_ptr) - # kill the drm pointers - self.patchSection(0, "\xff" * 4 + "\0" * 12, 0xA8) - # clear the crypto type - self.patchSection(0, "\0" * 2, 0xC) - - # decrypt sections - print "\nDecrypting. Please wait . . .", - new_data = self.data_file[:self.sections[1][0]] - for i in xrange(1, records+1): - data = self.loadSection(i) - extra_size = getSizeOfTrailingDataEntries(data, len(data), extra_data_flags) - if i%100 == 0: - print ".", - # print "record %d, extra_size %d" %(i,extra_size) - new_data += PC1(found_key, data[0:len(data) - extra_size]) - if extra_size > 0: - new_data += data[-extra_size:] - #self.patchSection(i, PC1(found_key, data[0:len(data) - extra_size])) - if self.num_sections > records+1: - new_data += self.data_file[self.sections[records+1][0]:] - self.data_file = new_data - print "done!" - print "\nPlease only use your new-found powers for good." - - def getResult(self): - return self.data_file - - -# -# DiapDealer's stuff: Parse the EXTH header records and parse the Kindleinfo -# file to calculate the book pid. -# -def getK4PCPids(exth): - global kindleDatabase - try: - kindleDatabase = parseKindleInfo() - except Exception as message: - print(message) - - if kindleDatabase != None : - - # Get the Mazama Random number - MazamaRandomNumber = getKindleInfoValueForKey("MazamaRandomNumber") - - # Get the HDD serial - encodedSystemVolumeSerialNumber = encodeHash(str(GetVolumeSerialNumber(GetSystemDirectory().split('\\')[0] + '\\')),charMap1) - - # Get the current user name - encodedUsername = encodeHash(GetUserName(),charMap1) - - # concat, hash and encode to calculate the DSN - DSN = encode(SHA1(MazamaRandomNumber+encodedSystemVolumeSerialNumber+encodedUsername),charMap1) - - print("\nDSN: " + DSN) - - - # Compute the device PID (for which I can tell, is used for nothing). - # But hey, stuff being printed out is apparently cool. - table = generatePidEncryptionTable() - devicePID = generateDevicePID(table,DSN,4) - - print("Device PID: " + devicePID) - - # Compute book PID - exth_records = {} - nitems, = unpack('>I', exth[8:12]) - pos = 12 - # Parse the EXTH records, storing data indexed by type - for i in xrange(nitems): - type, size = unpack('>II', exth[pos: pos + 8]) - content = exth[pos + 8: pos + size] - - exth_records[type] = content - pos += size - - # Grab the contents of the type 209 exth record - if exth_records[209] != None: - data = exth_records[209] - else: - raise DrmException("\nNo EXTH record type 209 - Perhaps not a K4PC file?") - - # Parse the 209 data to find the the exth record with the token data. - # The last character of the 209 data points to the record with the token. - # Always 208 from my experience, but I'll leave the logic in case that changes. - for i in xrange(len(data)): - if ord(data[i]) != 0: - if exth_records[ord(data[i])] != None: - token = exth_records[ord(data[i])] - - # Get the kindle account token - kindleAccountToken = getKindleInfoValueForKey("kindle.account.tokens") - - print("Account Token: " + kindleAccountToken) - - pidHash = SHA1(DSN+kindleAccountToken+exth_records[209]+token) - - bookPID = encodePID(pidHash) - - if exth_records[503] != None: - print "Pid for " + exth_records[503] + ": " + bookPID - else: - print ("Book PID: " + bookPID ) - - return bookPID - - raise DrmException("\nCould not access K4PC data - Perhaps K4PC is not installed/configured?") - return null - -if not __name__ == "__main__": - from calibre.customize import FileTypePlugin - - class K4PCDeDRM(FileTypePlugin): - name = 'K4PCDeDRM' # Name of the plugin - description = 'Removes DRM from K4PC files' - supported_platforms = ['windows'] # Platforms this plugin will run on - author = 'DiapDealer' # The author of this plugin - version = (0, 0, 1) # The version number of this plugin - file_types = set(['prc','mobi','azw']) # The file types that this plugin will be applied to - on_import = True # Run this plugin during the import - - def run(self, path_to_ebook): - from calibre.gui2 import is_ok_to_use_qt - from PyQt4.Qt import QMessageBox - data_file = file(path_to_ebook, 'rb').read() - - try: - unlocked_file = DrmStripper(data_file).getResult() - except DrmException: - # ignore the error - pass - else: - of = self.temporary_file('.mobi') - of.write(unlocked_file) - of.close() - return of.name - - if is_ok_to_use_qt(): - d = QMessageBox(QMessageBox.Warning, "K4PCDeDRM Plugin", "Couldn't decode: %s\n\nImporting encrypted version." % path_to_ebook) - d.show() - d.raise_() - d.exec_() - return path_to_ebook - - #def customization_help(self, gui=False): - # return 'Enter PID (separate multiple PIDs with comma)' - -if __name__ == "__main__": - sys.stdout=Unbuffered(sys.stdout) - print ('K4PCDeDrm v%(__version__)s ' - 'provided DiapDealer.' % globals()) - if len(sys.argv)<3: - print "Removes DRM protection from K4PC books" - print "Usage:" - print " %s " % sys.argv[0] - sys.exit(1) - else: - infile = sys.argv[1] - outfile = sys.argv[2] - data_file = file(infile, 'rb').read() - try: - strippedFile = DrmStripper(data_file) - file(outfile, 'wb').write(strippedFile.getResult()) - except DrmException, e: - print "Error: %s" % e - sys.exit(1) - sys.exit(0) \ No newline at end of file diff --git a/Kindle_Mobi_Tools/MobiDeDRM.pyw b/Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/K4MobiDeDRM.pyw similarity index 71% rename from Kindle_Mobi_Tools/MobiDeDRM.pyw rename to Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/K4MobiDeDRM.pyw index c63ed9c..467d87e 100644 --- a/Kindle_Mobi_Tools/MobiDeDRM.pyw +++ b/Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/K4MobiDeDRM.pyw @@ -4,15 +4,15 @@ import sys sys.path.append('lib') import os, os.path, urllib -import subprocess -from subprocess import Popen, PIPE, STDOUT -import subasyncio -from subasyncio import Process import Tkinter import Tkconstants import tkFileDialog import tkMessageBox from scrolltextwidget import ScrolledText +import subprocess +from subprocess import Popen, PIPE, STDOUT +import subasyncio +from subasyncio import Process class MainDialog(Tkinter.Frame): def __init__(self, root): @@ -20,14 +20,14 @@ class MainDialog(Tkinter.Frame): self.root = root self.interval = 2000 self.p2 = None - self.status = Tkinter.Label(self, text='Remove Encryption from a Mobi eBook') + self.status = Tkinter.Label(self, text='Remove Encryption from a K4PC, K4M, or Mobi eBook') self.status.pack(fill=Tkconstants.X, expand=1) body = Tkinter.Frame(self) body.pack(fill=Tkconstants.X, expand=1) sticky = Tkconstants.E + Tkconstants.W body.grid_columnconfigure(1, weight=2) - Tkinter.Label(body, text='Mobi eBook input file').grid(row=0, sticky=Tkconstants.E) + Tkinter.Label(body, text='K4 or Mobi eBook input file').grid(row=0, sticky=Tkconstants.E) self.mobipath = Tkinter.Entry(body, width=50) self.mobipath.grid(row=0, column=1, sticky=sticky) cwd = os.getcwdu() @@ -36,21 +36,24 @@ class MainDialog(Tkinter.Frame): button = Tkinter.Button(body, text="...", command=self.get_mobipath) button.grid(row=0, column=2) - Tkinter.Label(body, text='Name for Unencrypted Output File').grid(row=1, sticky=Tkconstants.E) + Tkinter.Label(body, text='Directory for the Unencrypted Output File').grid(row=1, sticky=Tkconstants.E) self.outpath = Tkinter.Entry(body, width=50) self.outpath.grid(row=1, column=1, sticky=sticky) - self.outpath.insert(0, '') + cwd = os.getcwdu() + cwd = cwd.encode('utf-8') + outname = cwd + self.outpath.insert(0, outname) button = Tkinter.Button(body, text="...", command=self.get_outpath) button.grid(row=1, column=2) - Tkinter.Label(body, text='10 Character PID').grid(row=2, sticky=Tkconstants.E) - self.pidnum = Tkinter.StringVar() - self.pidinfo = Tkinter.Entry(body, width=12, textvariable=self.pidnum) + Tkinter.Label(body, text='Comma Separated List of 10 Character PIDs (no spaces)').grid(row=2, sticky=Tkconstants.E) + self.pidnums = Tkinter.StringVar() + self.pidinfo = Tkinter.Entry(body, width=50, textvariable=self.pidnums) self.pidinfo.grid(row=2, column=1, sticky=sticky) msg1 = 'Conversion Log \n\n' self.stext = ScrolledText(body, bd=5, relief=Tkconstants.RIDGE, height=15, width=60, wrap=Tkconstants.WORD) - self.stext.grid(row=3, column=0, columnspan=2,sticky=sticky) + self.stext.grid(row=4, column=0, columnspan=2,sticky=sticky) self.stext.insert(Tkconstants.END,msg1) buttons = Tkinter.Frame(self) @@ -73,8 +76,10 @@ class MainDialog(Tkinter.Frame): text = self.p2.readerr() text += self.p2.read() msg = text + '\n\n' + 'Encryption successfully removed\n' - if poll != 0: + if poll == 1: msg = text + '\n\n' + 'Error: Encryption Removal Failed\n' + if poll == 2: + msg = text + '\n\n' + 'Input File was Not Encrypted - No Output File Needed\n' self.showCmdOutput(msg) self.p2 = None self.sbotton.configure(state='normal') @@ -95,16 +100,16 @@ class MainDialog(Tkinter.Frame): return # run as a subprocess via pipes and collect stdout - def mobirdr(self, infile, outfile, pidnum): + def mobirdr(self, infile, outfile, pidnums): # os.putenv('PYTHONUNBUFFERED', '1') - cmdline = 'python ./lib/mobidedrm.py "' + infile + '" "' + outfile + '" "' + pidnum + '"' - if sys.platform[0:3] == 'win': + cmdline = 'python ./lib/k4mobidedrm.py "' + infile + '" "' + outfile + '" "' + pidnums + '"' + if sys.platform.startswith('win'): search_path = os.environ['PATH'] search_path = search_path.lower() if search_path.find('python') >= 0: - cmdline = 'python lib\mobidedrm.py "' + infile + '" "' + outfile + '" "' + pidnum + '"' + cmdline = 'python lib\k4mobidedrm.py "' + infile + '" "' + outfile + '" "' + pidnums + '"' else : - cmdline = 'lib\mobidedrm.py "' + infile + '" "' + outfile + '" "' + pidnum + '"' + cmdline = 'lib\k4mobidedrm.py "' + infile + '" "' + outfile + '" "' + pidnums + '"' cmdline = cmdline.encode(sys.getfilesystemencoding()) p2 = Process(cmdline, shell=True, bufsize=1, stdin=None, stdout=PIPE, stderr=PIPE, close_fds=False) @@ -112,8 +117,10 @@ class MainDialog(Tkinter.Frame): def get_mobipath(self): + cpath = self.mobipath.get() mobipath = tkFileDialog.askopenfilename( - parent=None, title='Select Mobi eBook File', + initialdir = cpath, + parent=None, title='Select K4PC, K4M or Mobi eBook File', defaultextension='.prc', filetypes=[('Mobi eBook File', '.prc'), ('Mobi eBook File', '.azw'),('Mobi eBook File', '.mobi'), ('All Files', '.*')]) if mobipath: @@ -123,15 +130,11 @@ class MainDialog(Tkinter.Frame): return def get_outpath(self): - mobipath = self.mobipath.get() - initname = os.path.basename(mobipath) - p = initname.find('.') - if p >= 0: initname = initname[0:p] - initname += '_nodrm.mobi' - outpath = tkFileDialog.asksaveasfilename( - parent=None, title='Select Unencrypted Mobi File to produce', - defaultextension='.mobi', initialfile=initname, - filetypes=[('Mobi files', '.mobi'), ('All files', '.*')]) + cwd = os.getcwdu() + cwd = cwd.encode('utf-8') + outpath = tkFileDialog.askdirectory( + parent=None, title='Directory to Store Unencrypted file into', + initialdir=cwd, initialfile=None) if outpath: outpath = os.path.normpath(outpath) self.outpath.delete(0, Tkconstants.END) @@ -151,29 +154,34 @@ class MainDialog(Tkinter.Frame): self.sbotton.configure(state='disabled') mobipath = self.mobipath.get() outpath = self.outpath.get() - pidnum = self.pidinfo.get() + pidnums = self.pidinfo.get() + if not mobipath or not os.path.exists(mobipath): - self.status['text'] = 'Specified Mobi eBook file does not exist' + self.status['text'] = 'Specified K4PC, K4M or Mobi eBook file does not exist' self.sbotton.configure(state='normal') return if not outpath: - self.status['text'] = 'No output file specified' + self.status['text'] = 'No output directory specified' self.sbotton.configure(state='normal') return - if not pidnum or pidnum == '': - self.status['text'] = 'No PID specified' + if not os.path.isdir(outpath): + self.status['text'] = 'Error specified output directory does not exist' self.sbotton.configure(state='normal') return + # default output file name to be input file name + '_nodrm.mobi' + initname = os.path.splitext(os.path.basename(mobipath))[0] + initname += '_nodrm.mobi' + outpath += os.sep + initname - log = 'Command = "python mobidedrm.py"\n' - log += 'Mobi Path = "'+ mobipath + '"\n' + log = 'Command = "python k4mobidedrm.py"\n' + log += 'K4PC, K4M or Mobi Path = "'+ mobipath + '"\n' log += 'Output File = "' + outpath + '"\n' - log += 'PID = "' + pidnum + '"\n' + log += 'PID list = "' + pidnums + '"\n' log += '\n\n' log += 'Please Wait ...\n\n' log = log.encode('utf-8') self.stext.insert(Tkconstants.END,log) - self.p2 = self.mobirdr(mobipath, outpath, pidnum) + self.p2 = self.mobirdr(mobipath, outpath, pidnums) # python does not seem to allow you to create # your own eventloop which every other gui does - strange @@ -185,7 +193,7 @@ class MainDialog(Tkinter.Frame): def main(argv=None): root = Tkinter.Tk() - root.title('Mobi eBook Encryption Removal') + root.title('K4PC/K4M/Mobi eBook Encryption Removal') root.resizable(True, False) root.minsize(300, 0) MainDialog(root).pack(fill=Tkconstants.X, expand=1) diff --git a/Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/README_K4MobiDeDRM.txt b/Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/README_K4MobiDeDRM.txt new file mode 100644 index 0000000..ce97ee3 --- /dev/null +++ b/Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/README_K4MobiDeDRM.txt @@ -0,0 +1,23 @@ +K4MobiDeDRM + +This tools combines functionality of MobiDeDRM with that of K4PCDeDRM, K4MDeDRM, and K4DeDRM. Effectively, it provides one-stop shopping for all your Mobipocket, Kindle for iPhone/iPad/iPodTouch, Kindle for PC, and Kindle for Mac needs. + +**** +Please Note: If you a happy user of MobiDeDRM, K4DeDRM, K4PCDeDRM, or K4MUnswindle, please continue to use these programs as there is no additional capability provided by this tool over the others. In the long run, if you have problems with any of those tools, you might want to try this one as it will continue under development eventually replacing all of those tools. +**** + +1. double-click on K4MobiDeDRM.pyw + +2. In the window that opens: +hit the first '...' button to locate your DRM Kindle-style ebook + +3. Then hit the second '...' button to select an output directory for the unlocked file + +4. Then add in any PIDs you need from KindleV1, Kindle for iPhone/iPad/iPodTouch, or other single PID devices to the provided box as a comma separated list of 10 digit PID numbers. + +If this is a Kindle for Mac or a Kindle for PC book then you can leave this box blank + +5. hit the 'Start' button + +After a short delay, you should see progress in the Conversion Log window indicating is the unlocking was a success or failure. + diff --git a/Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/lib/k4mobidedrm.py b/Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/lib/k4mobidedrm.py new file mode 100644 index 0000000..6a5c071 --- /dev/null +++ b/Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/lib/k4mobidedrm.py @@ -0,0 +1,490 @@ +#!/usr/bin/env python + +# engine to remove drm from Kindle for Mac and Kindle for PC books +# for personal use for archiving and converting your ebooks + +# PLEASE DO NOT PIRATE EBOOKS! + +# We want all authors and publishers, and eBook stores to live +# long and prosperous lives but at the same time we just want to +# be able to read OUR books on whatever device we want and to keep +# readable for a long, long time + +# This borrows very heavily from works by CMBDTC, IHeartCabbages, skindle, +# unswindle, DarkReverser, ApprenticeAlf, DiapDealer, some_updates +# and many many others + +# It can run standalone to convert K4M/K4PC/Mobi files, or it can be installed as a +# plugin for Calibre (http://calibre-ebook.com/about) so that importing +# K4 or Mobi with DRM is no londer a multi-step process. +# +# ***NOTE*** If you are using this script as a calibre plugin for a K4M or K4PC ebook +# then calibre must be installed on the same machine and in the same account as K4PC or K4M +# for the plugin version to function properly. +# +# To create a Calibre plugin, rename this file so that the filename +# ends in '_plugin.py', put it into a ZIP file with all its supporting python routines +# and import that ZIP into Calibre using its plugin configuration GUI. + +from __future__ import with_statement + +__version__ = '1.1' + +class Unbuffered: + def __init__(self, stream): + self.stream = stream + def write(self, data): + self.stream.write(data) + self.stream.flush() + def __getattr__(self, attr): + return getattr(self.stream, attr) + +import sys +import os, csv, getopt +import binascii +import zlib +from struct import pack, unpack, unpack_from + + +#Exception Handling +class DrmException(Exception): + pass + +# +# crypto digestroutines +# + +import hashlib + +def MD5(message): + ctx = hashlib.md5() + ctx.update(message) + return ctx.digest() + +def SHA1(message): + ctx = hashlib.sha1() + ctx.update(message) + return ctx.digest() + +# determine if we are running as a calibre plugin +if 'calibre' in sys.modules: + inCalibre = True + global openKindleInfo, CryptUnprotectData, GetUserName, GetVolumeSerialNumber, charMap1, charMap2, charMap3, charMap4 +else: + inCalibre = False + +# +# start of Kindle specific routines +# + +if not inCalibre: + import mobidedrm + if sys.platform.startswith('win'): + from k4pcutils import openKindleInfo, CryptUnprotectData, GetUserName, GetVolumeSerialNumber, charMap1, charMap2, charMap3, charMap4 + if sys.platform.startswith('darwin'): + from k4mutils import openKindleInfo, CryptUnprotectData, GetUserName, GetVolumeSerialNumber, charMap1, charMap2, charMap3, charMap4 + +global kindleDatabase + +# Encode the bytes in data with the characters in map +def encode(data, map): + result = "" + for char in data: + value = ord(char) + Q = (value ^ 0x80) // len(map) + R = value % len(map) + result += map[Q] + result += map[R] + return result + +# Hash the bytes in data and then encode the digest with the characters in map +def encodeHash(data,map): + return encode(MD5(data),map) + +# Decode the string in data with the characters in map. Returns the decoded bytes +def decode(data,map): + result = "" + for i in range (0,len(data)-1,2): + high = map.find(data[i]) + low = map.find(data[i+1]) + if (high == -1) or (low == -1) : + break + value = (((high * len(map)) ^ 0x80) & 0xFF) + low + result += pack("B",value) + return result + + +# Parse the Kindle.info file and return the records as a list of key-values +def parseKindleInfo(): + DB = {} + infoReader = openKindleInfo() + infoReader.read(1) + data = infoReader.read() + if sys.platform.startswith('win'): + items = data.split('{') + else : + items = data.split('[') + for item in items: + splito = item.split(':') + DB[splito[0]] =splito[1] + return DB + +# Get a record from the Kindle.info file for the key "hashedKey" (already hashed and encoded). Return the decoded and decrypted record +def getKindleInfoValueForHash(hashedKey): + global kindleDatabase + encryptedValue = decode(kindleDatabase[hashedKey],charMap2) + if sys.platform.startswith('win'): + return CryptUnprotectData(encryptedValue,"") + else: + cleartext = CryptUnprotectData(encryptedValue) + return decode(cleartext, charMap1) + +# Get a record from the Kindle.info file for the string in "key" (plaintext). Return the decoded and decrypted record +def getKindleInfoValueForKey(key): + return getKindleInfoValueForHash(encodeHash(key,charMap2)) + +# Find if the original string for a hashed/encoded string is known. If so return the original string othwise return an empty string. +def findNameForHash(hash): + names = ["kindle.account.tokens","kindle.cookie.item","eulaVersionAccepted","login_date","kindle.token.item","login","kindle.key.item","kindle.name.info","kindle.device.info", "MazamaRandomNumber"] + result = "" + for name in names: + if hash == encodeHash(name, charMap2): + result = name + break + return result + +# Print all the records from the kindle.info file (option -i) +def printKindleInfo(): + for record in kindleDatabase: + name = findNameForHash(record) + if name != "" : + print (name) + print ("--------------------------") + else : + print ("Unknown Record") + print getKindleInfoValueForHash(record) + print "\n" + +# +# PID generation routines +# + +# Returns two bit at offset from a bit field +def getTwoBitsFromBitField(bitField,offset): + byteNumber = offset // 4 + bitPosition = 6 - 2*(offset % 4) + return ord(bitField[byteNumber]) >> bitPosition & 3 + +# Returns the six bits at offset from a bit field +def getSixBitsFromBitField(bitField,offset): + offset *= 3 + value = (getTwoBitsFromBitField(bitField,offset) <<4) + (getTwoBitsFromBitField(bitField,offset+1) << 2) +getTwoBitsFromBitField(bitField,offset+2) + return value + +# 8 bits to six bits encoding from hash to generate PID string +def encodePID(hash): + global charMap3 + PID = "" + for position in range (0,8): + PID += charMap3[getSixBitsFromBitField(hash,position)] + return PID + +# Encryption table used to generate the device PID +def generatePidEncryptionTable() : + table = [] + for counter1 in range (0,0x100): + value = counter1 + for counter2 in range (0,8): + if (value & 1 == 0) : + value = value >> 1 + else : + value = value >> 1 + value = value ^ 0xEDB88320 + table.append(value) + return table + +# Seed value used to generate the device PID +def generatePidSeed(table,dsn) : + value = 0 + for counter in range (0,4) : + index = (ord(dsn[counter]) ^ value) &0xFF + value = (value >> 8) ^ table[index] + return value + +# Generate the device PID +def generateDevicePID(table,dsn,nbRoll): + seed = generatePidSeed(table,dsn) + pidAscii = "" + pid = [(seed >>24) &0xFF,(seed >> 16) &0xff,(seed >> 8) &0xFF,(seed) & 0xFF,(seed>>24) & 0xFF,(seed >> 16) &0xff,(seed >> 8) &0xFF,(seed) & 0xFF] + index = 0 + for counter in range (0,nbRoll): + pid[index] = pid[index] ^ ord(dsn[counter]) + index = (index+1) %8 + for counter in range (0,8): + index = ((((pid[counter] >>5) & 3) ^ pid[counter]) & 0x1f) + (pid[counter] >> 7) + pidAscii += charMap4[index] + return pidAscii + +# convert from 8 digit PID to 10 digit PID with checksum +def checksumPid(s): + letters = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789" + crc = (~binascii.crc32(s,-1))&0xFFFFFFFF + crc = crc ^ (crc >> 16) + res = s + l = len(letters) + for i in (0,1): + b = crc & 0xff + pos = (b // l) ^ (b % l) + res += letters[pos%l] + crc >>= 8 + return res + + +class MobiPeek: + def loadSection(self, section): + before, after = self.sections[section:section+2] + self.f.seek(before) + return self.f.read(after - before) + def __init__(self, filename): + self.f = file(filename, 'rb') + self.header = self.f.read(78) + self.ident = self.header[0x3C:0x3C+8] + if self.ident != 'BOOKMOBI' and self.ident != 'TEXtREAd': + raise DrmException('invalid file format') + self.num_sections, = unpack_from('>H', self.header, 76) + sections = self.f.read(self.num_sections*8) + self.sections = unpack_from('>%dL' % (self.num_sections*2), sections, 0)[::2] + (0xfffffff, ) + self.sect0 = self.loadSection(0) + self.f.close() + def getBookTitle(self): + # get book title + toff, tlen = unpack('>II', self.sect0[0x54:0x5c]) + tend = toff + tlen + title = self.sect0[toff:tend] + return title + def getexthData(self): + # if exth region exists then grab it + # get length of this header + length, type, codepage, unique_id, version = unpack('>LLLLL', self.sect0[20:40]) + exth_flag, = unpack('>L', self.sect0[0x80:0x84]) + exth = '' + if exth_flag & 0x40: + exth = self.sect0[16 + length:] + return exth + def isNotEncrypted(self): + lock_type, = unpack('>H', self.sect0[0xC:0xC+2]) + if lock_type == 0: + return True + return False + +# DiapDealer's stuff: Parse the EXTH header records and parse the Kindleinfo +# file to calculate the book pid. +def getK4Pids(exth, title): + global kindleDatabase + try: + kindleDatabase = parseKindleInfo() + except Exception as message: + print(message) + + if kindleDatabase != None : + # Get the Mazama Random number + MazamaRandomNumber = getKindleInfoValueForKey("MazamaRandomNumber") + + # Get the HDD serial + encodedSystemVolumeSerialNumber = encodeHash(GetVolumeSerialNumber(),charMap1) + + # Get the current user name + encodedUsername = encodeHash(GetUserName(),charMap1) + + # concat, hash and encode to calculate the DSN + DSN = encode(SHA1(MazamaRandomNumber+encodedSystemVolumeSerialNumber+encodedUsername),charMap1) + + print("\nDSN: " + DSN) + + # Compute the device PID (for which I can tell, is used for nothing). + # But hey, stuff being printed out is apparently cool. + table = generatePidEncryptionTable() + devicePID = generateDevicePID(table,DSN,4) + + print("Device PID: " + checksumPid(devicePID)) + + # Compute book PID + exth_records = {} + nitems, = unpack('>I', exth[8:12]) + pos = 12 + # Parse the exth records, storing data indexed by type + for i in xrange(nitems): + type, size = unpack('>II', exth[pos: pos + 8]) + content = exth[pos + 8: pos + size] + + exth_records[type] = content + pos += size + + # Grab the contents of the type 209 exth record + if exth_records[209] != None: + data = exth_records[209] + else: + raise DrmException("\nNo EXTH record type 209 - Perhaps not a K4 file?") + + # Parse the 209 data to find the the exth record with the token data. + # The last character of the 209 data points to the record with the token. + # Always 208 from my experience, but I'll leave the logic in case that changes. + for i in xrange(len(data)): + if ord(data[i]) != 0: + if exth_records[ord(data[i])] != None: + token = exth_records[ord(data[i])] + + # Get the kindle account token + kindleAccountToken = getKindleInfoValueForKey("kindle.account.tokens") + + print("Account Token: " + kindleAccountToken) + + pidHash = SHA1(DSN+kindleAccountToken+exth_records[209]+token) + + bookPID = encodePID(pidHash) + bookPID = checksumPid(bookPID) + + if exth_records[503] != None: + print "Pid for " + exth_records[503] + ": " + bookPID + else: + print "Pid for " + title + ":" + bookPID + return bookPID + + raise DrmException("\nCould not access K4 data - Perhaps K4 is not installed/configured?") + return null + +# +# Main +# +def main(argv=sys.argv): + global kindleDatabase + import mobidedrm + print ('K4MobiDeDrm v%(__version__)s ' + 'provided by the work of many including DiapDealer, SomeUpdates, IHeartCabbages, CMBDTC, Skindle, DarkReverser, ApprenticeAlf, etc .' % globals()) + + if len(argv)<3: + print "Removes DRM protection from K4PC, K4M, and Mobi ebooks" + print "Usage:" + print " %s []" % argv[0] + return 1 + + if len(argv) == 4: + pidnums = argv[3] + + if len(argv) == 3: + pidnums = "" + + kindleDatabase = None + infile = argv[1] + outfile = argv[2] + try: + # first try with K4PC/K4M + ex = MobiPeek(infile) + if ex.isNotEncrypted(): + print "File was Not Encrypted" + return 2 + title = ex.getBookTitle() + exth = ex.getexthData() + pid = getK4Pids(exth, title) + unlocked_file = mobidedrm.getUnencryptedBook(infile, pid) + except DrmException: + pass + except mobidedrm.DrmException: + pass + else: + file(outfile, 'wb').write(unlocked_file) + return 0 + + # now try from the pid list + pids = pidnums.split(',') + for pid in pids: + try: + print 'Trying: "'+ pid + '"' + unlocked_file = mobidedrm.getUnencryptedBook(infile, pid) + except mobidedrm.DrmException: + pass + else: + file(outfile, 'wb').write(unlocked_file) + return 0 + + # we could not unencrypt book + print "Error: Could Not Unencrypt Book" + return 1 + + +if __name__ == '__main__': + sys.stdout=Unbuffered(sys.stdout) + sys.exit(main()) + + +if not __name__ == "__main__" and inCalibre: + from calibre.customize import FileTypePlugin + + class K4DeDRM(FileTypePlugin): + name = 'K4PC, K4Mac, Mobi DeDRM' # Name of the plugin + description = 'Removes DRM from K4PC, K4Mac, and Mobi files. \ + Provided by the work of many including DiapDealer, SomeUpdates, IHeartCabbages, CMBDTC, Skindle, DarkReverser, ApprenticeAlf, etc.' + supported_platforms = ['osx', 'windows', 'linux'] # Platforms this plugin will run on + author = 'DiapDealer, SomeUpdates' # The author of this plugin + version = (0, 0, 1) # The version number of this plugin + file_types = set(['prc','mobi','azw']) # The file types that this plugin will be applied to + on_import = True # Run this plugin during the import + priority = 200 # run this plugin before mobidedrm, k4pcdedrm, k4dedrm + + def run(self, path_to_ebook): + from calibre.gui2 import is_ok_to_use_qt + from PyQt4.Qt import QMessageBox + global kindleDatabase + global openKindleInfo, CryptUnprotectData, GetUserName, GetVolumeSerialNumber, charMap1, charMap2, charMap3, charMap4 + if sys.platform.startswith('win'): + from k4pcutils import openKindleInfo, CryptUnprotectData, GetUserName, GetVolumeSerialNumber, charMap1, charMap2, charMap3, charMap4 + if sys.platform.startswith('darwin'): + from k4mutils import openKindleInfo, CryptUnprotectData, GetUserName, GetVolumeSerialNumber, charMap1, charMap2, charMap3, charMap4 + import mobidedrm + + pidnums = self.site_customization + + # first try with book specifc pid from K4PC or K4M + try: + kindleDatabase = None + ex = MobiPeek(path_to_ebook) + if ex.isNotEncrypted(): + return path_to_ebook + title = ex.getBookTitle() + exth = ex.getexthData() + pid = getK4Pids(exth, title) + unlocked_file = mobidedrm.getUnencryptedBook(path_to_ebook,pid) + except DrmException: + pass + except mobidedrm.DrmException: + pass + else: + of = self.temporary_file('.mobi') + of.write(unlocked_file) + of.close() + return of.name + + # now try from the pid list + pids = pidnums.split(',') + for pid in pids: + try: + unlocked_file = mobidedrm.getUnencryptedBook(path_to_ebook, pid) + except mobidedrm.DrmException: + pass + else: + of = self.temporary_file('.mobi') + of.write(unlocked_file) + of.close() + return of.name + + #if you reached here then no luck raise and exception + if is_ok_to_use_qt(): + d = QMessageBox(QMessageBox.Warning, "K4MobiDeDRM Plugin", "Error decoding: %s\n" % path_to_ebook) + d.show() + d.raise_() + d.exec_() + raise Exception("K4MobiDeDRM plugin could not decode the file") + return "" + + def customization_help(self, gui=False): + return 'Enter each 10 character PID separated by a comma (no spaces).' diff --git a/Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/lib/k4mutils.py b/Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/lib/k4mutils.py new file mode 100644 index 0000000..cb13e5f --- /dev/null +++ b/Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/lib/k4mutils.py @@ -0,0 +1,319 @@ +# standlone set of Mac OSX specific routines needed for K4DeDRM + +from __future__ import with_statement + +import sys +import os + +#Exception Handling +class K4MDrmException(Exception): + pass + +import signal +import threading +import subprocess +from subprocess import Popen, PIPE, STDOUT + +# **heavily** chopped up and modfied version of asyncproc.py +# to make it actually work on Windows as well as Mac/Linux +# For the original see: +# "http://www.lysator.liu.se/~bellman/download/" +# author is "Thomas Bellman " +# available under GPL version 3 or Later + +# create an asynchronous subprocess whose output can be collected in +# a non-blocking manner + +# What a mess! Have to use threads just to get non-blocking io +# in a cross-platform manner + +# luckily all thread use is hidden within this class + +class Process(object): + def __init__(self, *params, **kwparams): + if len(params) <= 3: + kwparams.setdefault('stdin', subprocess.PIPE) + if len(params) <= 4: + kwparams.setdefault('stdout', subprocess.PIPE) + if len(params) <= 5: + kwparams.setdefault('stderr', subprocess.PIPE) + self.__pending_input = [] + self.__collected_outdata = [] + self.__collected_errdata = [] + self.__exitstatus = None + self.__lock = threading.Lock() + self.__inputsem = threading.Semaphore(0) + self.__quit = False + + self.__process = subprocess.Popen(*params, **kwparams) + + if self.__process.stdin: + self.__stdin_thread = threading.Thread( + name="stdin-thread", + target=self.__feeder, args=(self.__pending_input, + self.__process.stdin)) + self.__stdin_thread.setDaemon(True) + self.__stdin_thread.start() + + if self.__process.stdout: + self.__stdout_thread = threading.Thread( + name="stdout-thread", + target=self.__reader, args=(self.__collected_outdata, + self.__process.stdout)) + self.__stdout_thread.setDaemon(True) + self.__stdout_thread.start() + + if self.__process.stderr: + self.__stderr_thread = threading.Thread( + name="stderr-thread", + target=self.__reader, args=(self.__collected_errdata, + self.__process.stderr)) + self.__stderr_thread.setDaemon(True) + self.__stderr_thread.start() + + def pid(self): + return self.__process.pid + + def kill(self, signal): + self.__process.send_signal(signal) + + # check on subprocess (pass in 'nowait') to act like poll + def wait(self, flag): + if flag.lower() == 'nowait': + rc = self.__process.poll() + else: + rc = self.__process.wait() + if rc != None: + if self.__process.stdin: + self.closeinput() + if self.__process.stdout: + self.__stdout_thread.join() + if self.__process.stderr: + self.__stderr_thread.join() + return self.__process.returncode + + def terminate(self): + if self.__process.stdin: + self.closeinput() + self.__process.terminate() + + # thread gets data from subprocess stdout + def __reader(self, collector, source): + while True: + data = os.read(source.fileno(), 65536) + self.__lock.acquire() + collector.append(data) + self.__lock.release() + if data == "": + source.close() + break + return + + # thread feeds data to subprocess stdin + def __feeder(self, pending, drain): + while True: + self.__inputsem.acquire() + self.__lock.acquire() + if not pending and self.__quit: + drain.close() + self.__lock.release() + break + data = pending.pop(0) + self.__lock.release() + drain.write(data) + + # non-blocking read of data from subprocess stdout + def read(self): + self.__lock.acquire() + outdata = "".join(self.__collected_outdata) + del self.__collected_outdata[:] + self.__lock.release() + return outdata + + # non-blocking read of data from subprocess stderr + def readerr(self): + self.__lock.acquire() + errdata = "".join(self.__collected_errdata) + del self.__collected_errdata[:] + self.__lock.release() + return errdata + + # non-blocking write to stdin of subprocess + def write(self, data): + if self.__process.stdin is None: + raise ValueError("Writing to process with stdin not a pipe") + self.__lock.acquire() + self.__pending_input.append(data) + self.__inputsem.release() + self.__lock.release() + + # close stdinput of subprocess + def closeinput(self): + self.__lock.acquire() + self.__quit = True + self.__inputsem.release() + self.__lock.release() + + +# interface to needed routines in openssl's libcrypto +def _load_crypto_libcrypto(): + from ctypes import CDLL, byref, POINTER, c_void_p, c_char_p, c_int, c_long, \ + Structure, c_ulong, create_string_buffer, addressof, string_at, cast + from ctypes.util import find_library + + libcrypto = find_library('crypto') + if libcrypto is None: + raise K4MDrmException('libcrypto not found') + libcrypto = CDLL(libcrypto) + + AES_MAXNR = 14 + c_char_pp = POINTER(c_char_p) + c_int_p = POINTER(c_int) + + class AES_KEY(Structure): + _fields_ = [('rd_key', c_long * (4 * (AES_MAXNR + 1))), ('rounds', c_int)] + AES_KEY_p = POINTER(AES_KEY) + + def F(restype, name, argtypes): + func = getattr(libcrypto, name) + func.restype = restype + func.argtypes = argtypes + return func + + AES_cbc_encrypt = F(None, 'AES_cbc_encrypt',[c_char_p, c_char_p, c_ulong, AES_KEY_p, c_char_p,c_int]) + + AES_set_decrypt_key = F(c_int, 'AES_set_decrypt_key',[c_char_p, c_int, AES_KEY_p]) + + PKCS5_PBKDF2_HMAC_SHA1 = F(c_int, 'PKCS5_PBKDF2_HMAC_SHA1', + [c_char_p, c_ulong, c_char_p, c_ulong, c_ulong, c_ulong, c_char_p]) + + class LibCrypto(object): + def __init__(self): + self._blocksize = 0 + self._keyctx = None + self.iv = 0 + + def set_decrypt_key(self, userkey, iv): + self._blocksize = len(userkey) + if (self._blocksize != 16) and (self._blocksize != 24) and (self._blocksize != 32) : + raise K4MDrmException('AES improper key used') + return + keyctx = self._keyctx = AES_KEY() + self.iv = iv + rv = AES_set_decrypt_key(userkey, len(userkey) * 8, keyctx) + if rv < 0: + raise K4MDrmException('Failed to initialize AES key') + + def decrypt(self, data): + out = create_string_buffer(len(data)) + rv = AES_cbc_encrypt(data, out, len(data), self._keyctx, self.iv, 0) + if rv == 0: + raise K4MDrmException('AES decryption failed') + return out.raw + + def keyivgen(self, passwd): + salt = '16743' + saltlen = 5 + passlen = len(passwd) + iter = 0x3e8 + keylen = 80 + out = create_string_buffer(keylen) + rv = PKCS5_PBKDF2_HMAC_SHA1(passwd, passlen, salt, saltlen, iter, keylen, out) + return out.raw + return LibCrypto + +def _load_crypto(): + LibCrypto = None + try: + LibCrypto = _load_crypto_libcrypto() + except (ImportError, K4MDrmException): + pass + return LibCrypto + +LibCrypto = _load_crypto() + +# +# Utility Routines +# + +# uses a sub process to get the Hard Drive Serial Number using ioreg +# returns with the first found serial number in that class +def GetVolumeSerialNumber(): + cmdline = '/usr/sbin/ioreg -r -c AppleAHCIDiskDriver' + cmdline = cmdline.encode(sys.getfilesystemencoding()) + p = Process(cmdline, shell=True, bufsize=1, stdin=None, stdout=PIPE, stderr=PIPE, close_fds=False) + poll = p.wait('wait') + results = p.read() + reslst = results.split('\n') + sernum = '9999999999' + cnt = len(reslst) + for j in xrange(cnt): + resline = reslst[j] + pp = resline.find('"Serial Number" = "') + if pp >= 0: + sernum = resline[pp+19:] + sernum = sernum[:-1] + sernum = sernum.lstrip() + break + return sernum + +# uses unix env to get username instead of using sysctlbyname +def GetUserName(): + username = os.getenv('USER') + return username + +# Various character maps used to decrypt books. Probably supposed to act as obfuscation +charMap1 = "n5Pr6St7Uv8Wx9YzAb0Cd1Ef2Gh3Jk4M" +charMap2 = "ZB0bYyc1xDdW2wEV3Ff7KkPpL8UuGA4gz-Tme9Nn_tHh5SvXCsIiR6rJjQaqlOoM" +charMap3 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" +charMap4 = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789" + +def encode(data, map): + result = "" + for char in data: + value = ord(char) + Q = (value ^ 0x80) // len(map) + R = value % len(map) + result += map[Q] + result += map[R] + return result + +import hashlib + +def SHA256(message): + ctx = hashlib.sha256() + ctx.update(message) + return ctx.digest() + +# implements an Pseudo Mac Version of Windows built-in Crypto routine +def CryptUnprotectData(encryptedData): + sp = GetVolumeSerialNumber() + '!@#' + GetUserName() + passwdData = encode(SHA256(sp),charMap1) + crp = LibCrypto() + key_iv = crp.keyivgen(passwdData) + key = key_iv[0:32] + iv = key_iv[32:48] + crp.set_decrypt_key(key,iv) + cleartext = crp.decrypt(encryptedData) + return cleartext + +# Locate and open the .kindle-info file +def openKindleInfo(): + home = os.getenv('HOME') + cmdline = 'find "' + home + '/Library/Application Support" -name ".kindle-info"' + cmdline = cmdline.encode(sys.getfilesystemencoding()) + p1 = Process(cmdline, shell=True, bufsize=1, stdin=None, stdout=PIPE, stderr=PIPE, close_fds=False) + poll = p1.wait('wait') + results = p1.read() + reslst = results.split('\n') + kinfopath = 'NONE' + cnt = len(reslst) + for j in xrange(cnt): + resline = reslst[j] + pp = resline.find('.kindle-info') + if pp >= 0: + kinfopath = resline + break + if not os.path.exists(kinfopath): + raise K4MDrmException('Error: .kindle-info file can not be found') + return open(kinfopath,'r') diff --git a/Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/lib/k4pcutils.py b/Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/lib/k4pcutils.py new file mode 100644 index 0000000..777376d --- /dev/null +++ b/Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/lib/k4pcutils.py @@ -0,0 +1,107 @@ +# K4PC Windows specific routines + +from __future__ import with_statement + +import sys, os + +from ctypes import windll, c_char_p, c_wchar_p, c_uint, POINTER, byref, \ + create_unicode_buffer, create_string_buffer, CFUNCTYPE, addressof, \ + string_at, Structure, c_void_p, cast + +import _winreg as winreg + +import traceback + +MAX_PATH = 255 + +kernel32 = windll.kernel32 +advapi32 = windll.advapi32 +crypt32 = windll.crypt32 + + +# +# Various character maps used to decrypt books. Probably supposed to act as obfuscation +# +charMap1 = "n5Pr6St7Uv8Wx9YzAb0Cd1Ef2Gh3Jk4M" +charMap2 = "AaZzB0bYyCc1XxDdW2wEeVv3FfUuG4g-TtHh5SsIiR6rJjQq7KkPpL8lOoMm9Nn_" +charMap3 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" +charMap4 = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789" + +# +# Exceptions for all the problems that might happen during the script +# +class DrmException(Exception): + pass + + +class DataBlob(Structure): + _fields_ = [('cbData', c_uint), + ('pbData', c_void_p)] +DataBlob_p = POINTER(DataBlob) + + +def GetSystemDirectory(): + GetSystemDirectoryW = kernel32.GetSystemDirectoryW + GetSystemDirectoryW.argtypes = [c_wchar_p, c_uint] + GetSystemDirectoryW.restype = c_uint + def GetSystemDirectory(): + buffer = create_unicode_buffer(MAX_PATH + 1) + GetSystemDirectoryW(buffer, len(buffer)) + return buffer.value + return GetSystemDirectory +GetSystemDirectory = GetSystemDirectory() + +def GetVolumeSerialNumber(): + GetVolumeInformationW = kernel32.GetVolumeInformationW + GetVolumeInformationW.argtypes = [c_wchar_p, c_wchar_p, c_uint, + POINTER(c_uint), POINTER(c_uint), + POINTER(c_uint), c_wchar_p, c_uint] + GetVolumeInformationW.restype = c_uint + def GetVolumeSerialNumber(path = GetSystemDirectory().split('\\')[0] + '\\'): + vsn = c_uint(0) + GetVolumeInformationW(path, None, 0, byref(vsn), None, None, None, 0) + return str(vsn.value) + return GetVolumeSerialNumber +GetVolumeSerialNumber = GetVolumeSerialNumber() + + +def GetUserName(): + GetUserNameW = advapi32.GetUserNameW + GetUserNameW.argtypes = [c_wchar_p, POINTER(c_uint)] + GetUserNameW.restype = c_uint + def GetUserName(): + buffer = create_unicode_buffer(32) + size = c_uint(len(buffer)) + while not GetUserNameW(buffer, byref(size)): + buffer = create_unicode_buffer(len(buffer) * 2) + size.value = len(buffer) + return buffer.value.encode('utf-16-le')[::2] + return GetUserName +GetUserName = GetUserName() + + +def CryptUnprotectData(): + _CryptUnprotectData = crypt32.CryptUnprotectData + _CryptUnprotectData.argtypes = [DataBlob_p, c_wchar_p, DataBlob_p, + c_void_p, c_void_p, c_uint, DataBlob_p] + _CryptUnprotectData.restype = c_uint + def CryptUnprotectData(indata, entropy): + indatab = create_string_buffer(indata) + indata = DataBlob(len(indata), cast(indatab, c_void_p)) + entropyb = create_string_buffer(entropy) + entropy = DataBlob(len(entropy), cast(entropyb, c_void_p)) + outdata = DataBlob() + if not _CryptUnprotectData(byref(indata), None, byref(entropy), + None, None, 0, byref(outdata)): + raise DrmException("Failed to Unprotect Data") + return string_at(outdata.pbData, outdata.cbData) + return CryptUnprotectData +CryptUnprotectData = CryptUnprotectData() + +# +# Locate and open the Kindle.info file. +# +def openKindleInfo(): + regkey = winreg.OpenKey(winreg.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\") + path = winreg.QueryValueEx(regkey, 'Local AppData')[0] + return open(path+'\\Amazon\\Kindle For PC\\{AMAwzsaPaaZAzmZzZQzgZCAkZ3AjA_AY}\\kindle.info','r') diff --git a/Calibre_Plugins/MobiDeDRM_plugin/MobiDeDRM_plugin.py b/Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/lib/mobidedrm.py similarity index 89% rename from Calibre_Plugins/MobiDeDRM_plugin/MobiDeDRM_plugin.py rename to Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/lib/mobidedrm.py index 07d5f6f..5ed58a5 100644 --- a/Calibre_Plugins/MobiDeDRM_plugin/MobiDeDRM_plugin.py +++ b/Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/lib/mobidedrm.py @@ -39,8 +39,12 @@ # trailing data byte flags - version 5 and higher AND header size >= 0xE4. # 0.15 - Now outputs 'hearbeat', and is also quicker for long files. # 0.16 - And reverts to 'done' not 'done.' at the end for unswindle compatibility. +# 0.17 - added modifications to support its use as an imported python module +# both inside calibre and also in other places (ie K4DeDRM tools) +# 0.17a - disabled the standalone plugin feature since a plugin can not import +# a plugin -__version__ = '0.16' +__version__ = '0.17' import sys import struct @@ -248,7 +252,42 @@ class DrmStripper: def getResult(self): return self.data_file -if not __name__ == "__main__": +def getUnencryptedBook(infile,pid): + sys.stdout=Unbuffered(sys.stdout) + data_file = file(infile, 'rb').read() + strippedFile = DrmStripper(data_file, pid) + return strippedFile.getResult() + +def main(argv=sys.argv): + sys.stdout=Unbuffered(sys.stdout) + print ('MobiDeDrm v%(__version__)s. ' + 'Copyright 2008-2010 The Dark Reverser.' % globals()) + if len(argv)<4: + print "Removes protection from Mobipocket books" + print "Usage:" + print " %s " % sys.argv[0] + return 1 + else: + infile = argv[1] + outfile = argv[2] + pid = argv[3] + try: + stripped_file = getUnencryptedBook(infile, pid) + file(outfile, 'wb').write(stripped_file) + except DrmException, e: + print "Error: %s" % e + return 1 + return 0 + + +if __name__ == "__main__": + sys.exit(main()) + +#if not __name__ == "__main__": +if False: + + # note a calibre plugin can not import code with another calibre plugin + # in it as it ends up registering two different plugins from calibre.customize import FileTypePlugin class MobiDeDRM(FileTypePlugin): @@ -256,7 +295,7 @@ if not __name__ == "__main__": description = 'Removes DRM from secure Mobi files' supported_platforms = ['linux', 'osx', 'windows'] # Platforms this plugin will run on author = 'The Dark Reverser' # The author of this plugin - version = (0, 1, 6) # The version number of this plugin + version = (0, 1, 7) # The version number of this plugin file_types = set(['prc','mobi','azw']) # The file types that this plugin will be applied to on_import = True # Run this plugin during the import @@ -270,41 +309,17 @@ if not __name__ == "__main__": try: unlocked_file = DrmStripper(data_file, i).getResult() except DrmException: - # ignore the error - pass + if is_ok_to_use_qt(): + d = QMessageBox(QMessageBox.Warning, "MobiDeDRM Plugin", "Error decoding: %s\n" % path_to_ebook) + d.show() + d.raise_() + d.exec_() + raise Exception("MobiDeDRM Plugin: Error decoding ebook") else: of = self.temporary_file('.mobi') of.write(unlocked_file) of.close() return of.name - if is_ok_to_use_qt(): - d = QMessageBox(QMessageBox.Warning, "MobiDeDRM Plugin", "Couldn't decode: %s\n\nImporting encrypted version." % path_to_ebook) - d.show() - d.raise_() - d.exec_() - return path_to_ebook def customization_help(self, gui=False): return 'Enter PID (separate multiple PIDs with comma)' - -if __name__ == "__main__": - sys.stdout=Unbuffered(sys.stdout) - print ('MobiDeDrm v%(__version__)s. ' - 'Copyright 2008-2010 The Dark Reverser.' % globals()) - if len(sys.argv)<4: - print "Removes protection from Mobipocket books" - print "Usage:" - print " %s " % sys.argv[0] - sys.exit(1) - else: - infile = sys.argv[1] - outfile = sys.argv[2] - pid = sys.argv[3] - data_file = file(infile, 'rb').read() - try: - strippedFile = DrmStripper(data_file, pid) - file(outfile, 'wb').write(strippedFile.getResult()) - except DrmException, e: - print "Error: %s" % e - sys.exit(1) - sys.exit(0) \ No newline at end of file diff --git a/Kindle_4_Mac_Tools/lib/scrolltextwidget.py b/Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/lib/scrolltextwidget.py similarity index 100% rename from Kindle_4_Mac_Tools/lib/scrolltextwidget.py rename to Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/lib/scrolltextwidget.py diff --git a/Kindle_4_Mac_Tools/lib/subasyncio.py b/Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/lib/subasyncio.py similarity index 100% rename from Kindle_4_Mac_Tools/lib/subasyncio.py rename to Kindle_Mobi_Tools/K4_Mobi_DeDRM_Combined_Tool/lib/subasyncio.py diff --git a/Kindle_4_Mac_Tools/K4Munswindle.pyw b/Kindle_Mobi_Tools/Kindle_4_Mac_Unswindle/K4Munswindle.pyw similarity index 100% rename from Kindle_4_Mac_Tools/K4Munswindle.pyw rename to Kindle_Mobi_Tools/Kindle_4_Mac_Unswindle/K4Munswindle.pyw diff --git a/Kindle_4_Mac_Tools/README_K4Mac_Tools.txt b/Kindle_Mobi_Tools/Kindle_4_Mac_Unswindle/README_K4Munswindle.txt similarity index 70% rename from Kindle_4_Mac_Tools/README_K4Mac_Tools.txt rename to Kindle_Mobi_Tools/Kindle_4_Mac_Unswindle/README_K4Munswindle.txt index 43b4664..46f6a38 100644 --- a/Kindle_4_Mac_Tools/README_K4Mac_Tools.txt +++ b/Kindle_Mobi_Tools/Kindle_4_Mac_Unswindle/README_K4Munswindle.txt @@ -1,13 +1,4 @@ -Kindle_4_Mac_Tools version 1.2 - -Kindle_4_Mac_Tools_v1.2.zip -http://www.mediafire.com/?8nz9rkg6p9nq23r - - -New in this release: - - support to identify Topaz Books and print their PID - so that standard Topaz_Tools can be used later if - desired (only works with Kindle Version 1.2.0) +K4MUnswindle Prerequisites: @@ -26,11 +17,7 @@ Prerequisites: The directions for use are: -1. double-click to unzip the Kindle_4_Mac_Tools_v1.2.zip - -2. open the Kindle_4_Mac_Tools folder - -3. double-click on K4Munswindle.pyw +1. double-click on K4Munswindle.pyw In the window that opens: @@ -44,18 +31,18 @@ In the window that opens: After a short delay, your Kindle application should open up automagically -In Kindle for Mac: +2. In Kindle for Mac: - hit the “Home” button to go home. - double-click on ONE of your books. This should open the book. -Once the book you want is open +3. Once the book you want is open - hit the “Home” button and then exit the Kindle for Mac application -Once you have exited the Kindle for Mac application you should see one of the following: +4. Once you have exited the Kindle for Mac application you should see one of the following: - If the book you selected was a Topaz Book: diff --git a/Kindle_4_Mac_Tools/gdb_kindle_cmds_r1.txt b/Kindle_Mobi_Tools/Kindle_4_Mac_Unswindle/gdb_kindle_cmds_r1.txt similarity index 100% rename from Kindle_4_Mac_Tools/gdb_kindle_cmds_r1.txt rename to Kindle_Mobi_Tools/Kindle_4_Mac_Unswindle/gdb_kindle_cmds_r1.txt diff --git a/Kindle_4_Mac_Tools/gdb_kindle_cmds_r2.txt b/Kindle_Mobi_Tools/Kindle_4_Mac_Unswindle/gdb_kindle_cmds_r2.txt similarity index 100% rename from Kindle_4_Mac_Tools/gdb_kindle_cmds_r2.txt rename to Kindle_Mobi_Tools/Kindle_4_Mac_Unswindle/gdb_kindle_cmds_r2.txt diff --git a/Kindle_4_Mac_Tools/lib/mobidedrm.py b/Kindle_Mobi_Tools/Kindle_4_Mac_Unswindle/lib/mobidedrm.py similarity index 100% rename from Kindle_4_Mac_Tools/lib/mobidedrm.py rename to Kindle_Mobi_Tools/Kindle_4_Mac_Unswindle/lib/mobidedrm.py diff --git a/Kindle_4_PC_Tools/lib/scrolltextwidget.py b/Kindle_Mobi_Tools/Kindle_4_Mac_Unswindle/lib/scrolltextwidget.py similarity index 100% rename from Kindle_4_PC_Tools/lib/scrolltextwidget.py rename to Kindle_Mobi_Tools/Kindle_4_Mac_Unswindle/lib/scrolltextwidget.py diff --git a/Kindle_4_PC_Tools/lib/subasyncio.py b/Kindle_Mobi_Tools/Kindle_4_Mac_Unswindle/lib/subasyncio.py similarity index 100% rename from Kindle_4_PC_Tools/lib/subasyncio.py rename to Kindle_Mobi_Tools/Kindle_4_Mac_Unswindle/lib/subasyncio.py diff --git a/Kindle_Mobi_Tools/Kindle_4_PC_Unswindle/README-unswindlev7.txt b/Kindle_Mobi_Tools/Kindle_4_PC_Unswindle/README-unswindlev7.txt new file mode 100644 index 0000000..46dc417 --- /dev/null +++ b/Kindle_Mobi_Tools/Kindle_4_PC_Unswindle/README-unswindlev7.txt @@ -0,0 +1,5 @@ +README + +unswindle can be used to find the book specific PID but it needs to be updated for each version of Kindle4PC that Amazon releases (and therefore is also useful for Linux users who have Wine). This program “patches” the Kindle4PC executable and therefore is very release specific. + +Unfortunately unswindle v7 the latest, has not been updated to work with the latest version of Kindle for PC. You will need to find one of the older versions of Kindle4PC and prevent later updates in order to use this tool. diff --git a/Kindle_4_PC_Tools/Other_Tools/unswindle/mobidedrm.py b/Kindle_Mobi_Tools/Kindle_4_PC_Unswindle/mobidedrm.py similarity index 100% rename from Kindle_4_PC_Tools/Other_Tools/unswindle/mobidedrm.py rename to Kindle_Mobi_Tools/Kindle_4_PC_Unswindle/mobidedrm.py diff --git a/Kindle_4_PC_Tools/Other_Tools/unswindle/unswindle_v7.pyw b/Kindle_Mobi_Tools/Kindle_4_PC_Unswindle/unswindle.pyw similarity index 100% rename from Kindle_4_PC_Tools/Other_Tools/unswindle/unswindle_v7.pyw rename to Kindle_Mobi_Tools/Kindle_4_PC_Unswindle/unswindle.pyw diff --git a/Kindle_Mobi_Tools/PIDCheck.py b/Kindle_Mobi_Tools/PIDCheck.py deleted file mode 100644 index 1960453..0000000 --- a/Kindle_Mobi_Tools/PIDCheck.py +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/python -# -# This is a python script. You need a Python interpreter to run it. -# For example, ActiveState Python, which exists for windows. -# -# Changelog -# 1.00 - Initial version - -__version__ = '1.00' - -import sys -import struct -import binascii - -def checksumPid(s): - letters = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789" - crc = (~binascii.crc32(s,-1))&0xFFFFFFFF - crc = crc ^ (crc >> 16) - res = s - l = len(letters) - for i in (0,1): - b = crc & 0xff - pos = (b // l) ^ (b % l) - res += letters[pos%l] - crc >>= 8 - return res - -if __name__ == "__main__": - if len(sys.argv) != 2: - print "Checks Mobipocket PID checksum" - print "Usage:" - print " %s " % sys.argv[0] - sys.exit(1) - else: - pid = sys.argv[1] - if len(pid) == 8: - pid = checksumPid(pid) - else: - pid = checksumPid(pid[:8]) - print pid - sys.exit(0) \ No newline at end of file diff --git a/Kindle_Mobi_Tools/REAME_MobiDeDRM.txt b/Kindle_Mobi_Tools/REAME_MobiDeDRM.txt deleted file mode 100644 index f3c6ef7..0000000 --- a/Kindle_Mobi_Tools/REAME_MobiDeDRM.txt +++ /dev/null @@ -1,6 +0,0 @@ -- MobiDeDRM.pyw is a simple graphical front end to the mobidedrm.py progam that actually does the DRM removal as long as you know the correct PID to use with it (which depends on the versions of Kindle software used). This is a gui program, simply double-click to launch it. - -PIDCHeck.py is a command line python tools to take an 8 digit PID and add the 2 checksum digits to the end to generate a 10 digit PID - -All of these scripts are python programs. Python 2.X (32 bit) is already installed in Mac OSX and Linux. We recommend ActiveState's Active Python Version 2.X (32 bit) for Windows users. - diff --git a/Kindle_Mobi_Tools/lib/readme.txt b/Kindle_Mobi_Tools/lib/readme.txt deleted file mode 100644 index 3a53cdb..0000000 --- a/Kindle_Mobi_Tools/lib/readme.txt +++ /dev/null @@ -1,38 +0,0 @@ -Kindle Mobipocket tools 0.2 -Copyright (c) 2007, 2009 Igor Skochinsky - -These scripts allow one to read legally purchased Secure Mobipocket books -on Amazon Kindle or Kindle for iPhone. - -* kindlepid.py - This script generates Mobipocket PID from the Kindle serial number or iPhone/iPod Touch - identifier (UDID). That PID can then be added at a Mobi retailer site and used for downloading - books locked to the Kindle. - - Example: - - > kindlepid.py B001BAB012345678 - Mobipocket PID calculator for Amazon Kindle. Copyright (c) 2007, 2009 Igor Skochinsky - Kindle 1 serial number detected - Mobipocked PID for Kindle serial# B001BAB012345678 is V176CXM*FZ - -* kindlefix.py - This script adds a "CustomDRM" flag necessary for opening Secure - Mobipocket books on Kindle. The book has to be enabled for Kindle's PID - (generated by kindlepid.py). The "fixed" book is written with - extension ".azw". That file can then be uploaded to Kindle for reading. - - Example: - > kindlefix.py MyBook.mobi V176CXM*FZ - The Kindleizer v0.2. Copyright (c) 2007, 2009 Igor Skochinsky - Encryption: 2 - Mobi publication type: 2 - Mobi format version: 4 - Found the matching record; setting the CustomDRM flag for Kindle - Output written to MyBook.azw - -* History - 2007-12-12 Initial release - 2009-03-10 Updated scripts to version 0.2 - kindlepid.py: Added support for generating PID for iPhone (thanks to mbp) - kindlefix.py: Fixed corrupted metadata issue (thanks to Mark Peek) diff --git a/Kindle_Mobi_Tools/KindlePID.pyw b/Mobi_Additional_Tools/KindlePID.pyw similarity index 100% rename from Kindle_Mobi_Tools/KindlePID.pyw rename to Mobi_Additional_Tools/KindlePID.pyw diff --git a/Kindle_Mobi_Tools/Kindleizer.pyw b/Mobi_Additional_Tools/Kindleizer.pyw similarity index 100% rename from Kindle_Mobi_Tools/Kindleizer.pyw rename to Mobi_Additional_Tools/Kindleizer.pyw diff --git a/Kindle_Mobi_Tools/README_Kindle_for_iPad_iPhone_iPodTouch.txt b/Mobi_Additional_Tools/README_Kindle_for_iPad_iPhone_iPodTouch.txt similarity index 100% rename from Kindle_Mobi_Tools/README_Kindle_for_iPad_iPhone_iPodTouch.txt rename to Mobi_Additional_Tools/README_Kindle_for_iPad_iPhone_iPodTouch.txt diff --git a/Kindle_Mobi_Tools/lib/kindlefix.py b/Mobi_Additional_Tools/lib/kindlefix.py similarity index 100% rename from Kindle_Mobi_Tools/lib/kindlefix.py rename to Mobi_Additional_Tools/lib/kindlefix.py diff --git a/Kindle_Mobi_Tools/lib/kindlepid.py b/Mobi_Additional_Tools/lib/kindlepid.py similarity index 100% rename from Kindle_Mobi_Tools/lib/kindlepid.py rename to Mobi_Additional_Tools/lib/kindlepid.py diff --git a/Mobi_Additional_Tools/lib/mobidedrm.py b/Mobi_Additional_Tools/lib/mobidedrm.py new file mode 100644 index 0000000..5ed58a5 --- /dev/null +++ b/Mobi_Additional_Tools/lib/mobidedrm.py @@ -0,0 +1,325 @@ +#!/usr/bin/python +# +# This is a python script. You need a Python interpreter to run it. +# For example, ActiveState Python, which exists for windows. +# +# It can run standalone to convert files, or it can be installed as a +# plugin for Calibre (http://calibre-ebook.com/about) so that +# importing files with DRM 'Just Works'. +# +# To create a Calibre plugin, rename this file so that the filename +# ends in '_plugin.py', put it into a ZIP file and import that Calibre +# using its plugin configuration GUI. +# +# Changelog +# 0.01 - Initial version +# 0.02 - Huffdic compressed books were not properly decrypted +# 0.03 - Wasn't checking MOBI header length +# 0.04 - Wasn't sanity checking size of data record +# 0.05 - It seems that the extra data flags take two bytes not four +# 0.06 - And that low bit does mean something after all :-) +# 0.07 - The extra data flags aren't present in MOBI header < 0xE8 in size +# 0.08 - ...and also not in Mobi header version < 6 +# 0.09 - ...but they are there with Mobi header version 6, header size 0xE4! +# 0.10 - Outputs unencrypted files as-is, so that when run as a Calibre +# import filter it works when importing unencrypted files. +# Also now handles encrypted files that don't need a specific PID. +# 0.11 - use autoflushed stdout and proper return values +# 0.12 - Fix for problems with metadata import as Calibre plugin, report errors +# 0.13 - Formatting fixes: retabbed file, removed trailing whitespace +# and extra blank lines, converted CR/LF pairs at ends of each line, +# and other cosmetic fixes. +# 0.14 - Working out when the extra data flags are present has been problematic +# Versions 7 through 9 have tried to tweak the conditions, but have been +# only partially successful. Closer examination of lots of sample +# files reveals that a confusin has arisen because trailing data entries +# are not encrypted, but it turns out that the multibyte entries +# in utf8 file are encrypted. (Although neither kind gets compressed.) +# This knowledge leads to a simplification of the test for the +# trailing data byte flags - version 5 and higher AND header size >= 0xE4. +# 0.15 - Now outputs 'hearbeat', and is also quicker for long files. +# 0.16 - And reverts to 'done' not 'done.' at the end for unswindle compatibility. +# 0.17 - added modifications to support its use as an imported python module +# both inside calibre and also in other places (ie K4DeDRM tools) +# 0.17a - disabled the standalone plugin feature since a plugin can not import +# a plugin + +__version__ = '0.17' + +import sys +import struct +import binascii + +class Unbuffered: + def __init__(self, stream): + self.stream = stream + def write(self, data): + self.stream.write(data) + self.stream.flush() + def __getattr__(self, attr): + return getattr(self.stream, attr) + +class DrmException(Exception): + pass + +# Implementation of Pukall Cipher 1 +def PC1(key, src, decryption=True): + sum1 = 0; + sum2 = 0; + keyXorVal = 0; + if len(key)!=16: + print "Bad key length!" + return None + wkey = [] + for i in xrange(8): + wkey.append(ord(key[i*2])<<8 | ord(key[i*2+1])) + + dst = "" + for i in xrange(len(src)): + temp1 = 0; + byteXorVal = 0; + for j in xrange(8): + temp1 ^= wkey[j] + sum2 = (sum2+j)*20021 + sum1 + sum1 = (temp1*346)&0xFFFF + sum2 = (sum2+sum1)&0xFFFF + temp1 = (temp1*20021+1)&0xFFFF + byteXorVal ^= temp1 ^ sum2 + curByte = ord(src[i]) + if not decryption: + keyXorVal = curByte * 257; + curByte = ((curByte ^ (byteXorVal >> 8)) ^ byteXorVal) & 0xFF + if decryption: + keyXorVal = curByte * 257; + for j in xrange(8): + wkey[j] ^= keyXorVal; + dst+=chr(curByte) + return dst + +def checksumPid(s): + letters = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789" + crc = (~binascii.crc32(s,-1))&0xFFFFFFFF + crc = crc ^ (crc >> 16) + res = s + l = len(letters) + for i in (0,1): + b = crc & 0xff + pos = (b // l) ^ (b % l) + res += letters[pos%l] + crc >>= 8 + return res + +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 + bitpos += 7 + size -= 1 + if (v & 0x80) != 0 or (bitpos >= 28) or (size == 0): + return result + num = 0 + testflags = flags >> 1 + while testflags: + if testflags & 1: + num += getSizeOfTrailingDataEntry(ptr, size - num) + testflags >>= 1 + # Multibyte data, if present, is included in the encryption, so + # we do not need to check the low bit. + # if flags & 1: + # num += (ord(ptr[size - num - 1]) & 0x3) + 1 + return num + +class DrmStripper: + def loadSection(self, section): + if (section + 1 == self.num_sections): + endoff = len(self.data_file) + else: + endoff = self.sections[section + 1][0] + off = self.sections[section][0] + return self.data_file[off:endoff] + + def patch(self, off, new): + self.data_file = self.data_file[:off] + new + self.data_file[off+len(new):] + + def patchSection(self, section, new, in_off = 0): + if (section + 1 == self.num_sections): + endoff = len(self.data_file) + else: + endoff = self.sections[section + 1][0] + off = self.sections[section][0] + assert off + in_off + len(new) <= endoff + self.patch(off + in_off, new) + + def parseDRM(self, data, count, pid): + pid = pid.ljust(16,'\0') + keyvec1 = "\x72\x38\x33\xB0\xB4\xF2\xE3\xCA\xDF\x09\x01\xD6\xE2\xE0\x3F\x96" + temp_key = PC1(keyvec1, pid, False) + temp_key_sum = sum(map(ord,temp_key)) & 0xff + found_key = None + for i in xrange(count): + verification, size, type, cksum, cookie = struct.unpack('>LLLBxxx32s', data[i*0x30:i*0x30+0x30]) + cookie = PC1(temp_key, cookie) + ver,flags,finalkey,expiry,expiry2 = struct.unpack('>LL16sLL', cookie) + if verification == ver and cksum == temp_key_sum and (flags & 0x1F) == 1: + found_key = finalkey + break + if not found_key: + # Then try the default encoding that doesn't require a PID + temp_key = keyvec1 + temp_key_sum = sum(map(ord,temp_key)) & 0xff + for i in xrange(count): + verification, size, type, cksum, cookie = struct.unpack('>LLLBxxx32s', data[i*0x30:i*0x30+0x30]) + cookie = PC1(temp_key, cookie) + ver,flags,finalkey,expiry,expiry2 = struct.unpack('>LL16sLL', cookie) + if verification == ver and cksum == temp_key_sum: + found_key = finalkey + break + return found_key + + def __init__(self, data_file, pid): + if checksumPid(pid[0:-2]) != pid: + raise DrmException("invalid PID checksum") + pid = pid[0:-2] + + self.data_file = data_file + header = data_file[0:72] + if header[0x3C:0x3C+8] != 'BOOKMOBI': + raise DrmException("invalid file format") + self.num_sections, = struct.unpack('>H', data_file[76:78]) + + self.sections = [] + for i in xrange(self.num_sections): + offset, a1,a2,a3,a4 = struct.unpack('>LBBBB', data_file[78+i*8:78+i*8+8]) + flags, val = a1, a2<<16|a3<<8|a4 + self.sections.append( (offset, flags, val) ) + + sect = self.loadSection(0) + records, = struct.unpack('>H', sect[0x8:0x8+2]) + mobi_length, = struct.unpack('>L',sect[0x14:0x18]) + mobi_version, = struct.unpack('>L',sect[0x68:0x6C]) + extra_data_flags = 0 + print "MOBI header version = %d, length = %d" %(mobi_version, mobi_length) + if (mobi_length >= 0xE4) and (mobi_version >= 5): + extra_data_flags, = struct.unpack('>H', sect[0xF2:0xF4]) + print "Extra Data Flags = %d" %extra_data_flags + + crypto_type, = struct.unpack('>H', sect[0xC:0xC+2]) + if crypto_type == 0: + print "This book is not encrypted." + else: + if crypto_type == 1: + raise DrmException("cannot decode Mobipocket encryption type 1") + if crypto_type != 2: + raise DrmException("unknown encryption type: %d" % crypto_type) + + # calculate the keys + drm_ptr, drm_count, drm_size, drm_flags = struct.unpack('>LLLL', sect[0xA8:0xA8+16]) + if drm_count == 0: + raise DrmException("no PIDs found in this file") + found_key = self.parseDRM(sect[drm_ptr:drm_ptr+drm_size], drm_count, pid) + if not found_key: + raise DrmException("no key found. maybe the PID is incorrect") + + # kill the drm keys + self.patchSection(0, "\0" * drm_size, drm_ptr) + # kill the drm pointers + self.patchSection(0, "\xff" * 4 + "\0" * 12, 0xA8) + # clear the crypto type + self.patchSection(0, "\0" * 2, 0xC) + + # decrypt sections + print "Decrypting. Please wait . . .", + new_data = self.data_file[:self.sections[1][0]] + for i in xrange(1, records+1): + data = self.loadSection(i) + extra_size = getSizeOfTrailingDataEntries(data, len(data), extra_data_flags) + if i%100 == 0: + print ".", + # print "record %d, extra_size %d" %(i,extra_size) + new_data += PC1(found_key, data[0:len(data) - extra_size]) + if extra_size > 0: + new_data += data[-extra_size:] + #self.patchSection(i, PC1(found_key, data[0:len(data) - extra_size])) + if self.num_sections > records+1: + new_data += self.data_file[self.sections[records+1][0]:] + self.data_file = new_data + print "done" + + def getResult(self): + return self.data_file + +def getUnencryptedBook(infile,pid): + sys.stdout=Unbuffered(sys.stdout) + data_file = file(infile, 'rb').read() + strippedFile = DrmStripper(data_file, pid) + return strippedFile.getResult() + +def main(argv=sys.argv): + sys.stdout=Unbuffered(sys.stdout) + print ('MobiDeDrm v%(__version__)s. ' + 'Copyright 2008-2010 The Dark Reverser.' % globals()) + if len(argv)<4: + print "Removes protection from Mobipocket books" + print "Usage:" + print " %s " % sys.argv[0] + return 1 + else: + infile = argv[1] + outfile = argv[2] + pid = argv[3] + try: + stripped_file = getUnencryptedBook(infile, pid) + file(outfile, 'wb').write(stripped_file) + except DrmException, e: + print "Error: %s" % e + return 1 + return 0 + + +if __name__ == "__main__": + sys.exit(main()) + +#if not __name__ == "__main__": +if False: + + # note a calibre plugin can not import code with another calibre plugin + # in it as it ends up registering two different plugins + from calibre.customize import FileTypePlugin + + class MobiDeDRM(FileTypePlugin): + name = 'MobiDeDRM' # Name of the plugin + description = 'Removes DRM from secure Mobi files' + supported_platforms = ['linux', 'osx', 'windows'] # Platforms this plugin will run on + author = 'The Dark Reverser' # The author of this plugin + version = (0, 1, 7) # The version number of this plugin + file_types = set(['prc','mobi','azw']) # The file types that this plugin will be applied to + on_import = True # Run this plugin during the import + + def run(self, path_to_ebook): + from calibre.gui2 import is_ok_to_use_qt + from PyQt4.Qt import QMessageBox + PID = self.site_customization + data_file = file(path_to_ebook, 'rb').read() + ar = PID.split(',') + for i in ar: + try: + unlocked_file = DrmStripper(data_file, i).getResult() + except DrmException: + if is_ok_to_use_qt(): + d = QMessageBox(QMessageBox.Warning, "MobiDeDRM Plugin", "Error decoding: %s\n" % path_to_ebook) + d.show() + d.raise_() + d.exec_() + raise Exception("MobiDeDRM Plugin: Error decoding ebook") + else: + of = self.temporary_file('.mobi') + of.write(unlocked_file) + of.close() + return of.name + + def customization_help(self, gui=False): + return 'Enter PID (separate multiple PIDs with comma)' diff --git a/Kindle_Mobi_Tools/lib/mobihuff.py b/Mobi_Additional_Tools/lib/mobihuff.py similarity index 100% rename from Kindle_Mobi_Tools/lib/mobihuff.py rename to Mobi_Additional_Tools/lib/mobihuff.py diff --git a/Kindle_Mobi_Tools/lib/prc.py b/Mobi_Additional_Tools/lib/prc.py similarity index 100% rename from Kindle_Mobi_Tools/lib/prc.py rename to Mobi_Additional_Tools/lib/prc.py diff --git a/Kindle_Mobi_Tools/lib/scrolltextwidget.py b/Mobi_Additional_Tools/lib/scrolltextwidget.py similarity index 100% rename from Kindle_Mobi_Tools/lib/scrolltextwidget.py rename to Mobi_Additional_Tools/lib/scrolltextwidget.py diff --git a/Kindle_Mobi_Tools/lib/subasyncio.py b/Mobi_Additional_Tools/lib/subasyncio.py similarity index 100% rename from Kindle_Mobi_Tools/lib/subasyncio.py rename to Mobi_Additional_Tools/lib/subasyncio.py diff --git a/eReader_Tools/Pml2HTML.pyw b/eReader_PDB_Tools/Pml2HTML.pyw similarity index 100% rename from eReader_Tools/Pml2HTML.pyw rename to eReader_PDB_Tools/Pml2HTML.pyw diff --git a/eReader_Tools/README_eReaderPDB.txt b/eReader_PDB_Tools/README_eReaderPDB.txt similarity index 100% rename from eReader_Tools/README_eReaderPDB.txt rename to eReader_PDB_Tools/README_eReaderPDB.txt diff --git a/eReader_Tools/eReaderPDB2PML.pyw b/eReader_PDB_Tools/eReaderPDB2PML.pyw similarity index 100% rename from eReader_Tools/eReaderPDB2PML.pyw rename to eReader_PDB_Tools/eReaderPDB2PML.pyw diff --git a/eReader_Tools/eReaderPDB2PMLZ.pyw b/eReader_PDB_Tools/eReaderPDB2PMLZ.pyw similarity index 100% rename from eReader_Tools/eReaderPDB2PMLZ.pyw rename to eReader_PDB_Tools/eReaderPDB2PMLZ.pyw diff --git a/eReader_PDB_Tools/lib/erdr2pml.py b/eReader_PDB_Tools/lib/erdr2pml.py new file mode 100644 index 0000000..089d000 --- /dev/null +++ b/eReader_PDB_Tools/lib/erdr2pml.py @@ -0,0 +1,692 @@ +#!/usr/bin/env python +# vim:ts=4:sw=4:softtabstop=4:smarttab:expandtab +# +# erdr2pml.py +# +# This is a python script. You need a Python interpreter to run it. +# For example, ActiveState Python, which exists for windows. +# Changelog +# +# Based on ereader2html version 0.08 plus some later small fixes +# +# 0.01 - Initial version +# 0.02 - Support more eReader files. Support bold text and links. Fix PML decoder parsing bug. +# 0.03 - Fix incorrect variable usage at one place. +# 0.03b - enhancement by DeBockle (version 259 support) +# Custom version 0.03 - no change to eReader support, only usability changes +# - start of pep-8 indentation (spaces not tab), fix trailing blanks +# - version variable, only one place to change +# - added main routine, now callable as a library/module, +# means tools can add optional support for ereader2html +# - outdir is no longer a mandatory parameter (defaults based on input name if missing) +# - time taken output to stdout +# - Psyco support - reduces runtime by a factor of (over) 3! +# E.g. (~600Kb file) 90 secs down to 24 secs +# - newstyle classes +# - changed map call to list comprehension +# may not work with python 2.3 +# without Psyco this reduces runtime to 90% +# E.g. 90 secs down to 77 secs +# Psyco with map calls takes longer, do not run with map in Psyco JIT! +# - izip calls used instead of zip (if available), further reduction +# in run time (factor of 4.5). +# E.g. (~600Kb file) 90 secs down to 20 secs +# - Python 2.6+ support, avoid DeprecationWarning with sha/sha1 +# 0.04 - Footnote support, PML output, correct charset in html, support more PML tags +# - Feature change, dump out PML file +# - Added supprt for footnote tags. NOTE footnote ids appear to be bad (not usable) +# in some pdb files :-( due to the same id being used multiple times +# - Added correct charset encoding (pml is based on cp1252) +# - Added logging support. +# 0.05 - Improved type 272 support for sidebars, links, chapters, metainfo, etc +# 0.06 - Merge of 0.04 and 0.05. Improved HTML output +# Placed images in subfolder, so that it's possible to just +# drop the book.pml file onto DropBook to make an unencrypted +# copy of the eReader file. +# Using that with Calibre works a lot better than the HTML +# conversion in this code. +# 0.07 - Further Improved type 272 support for sidebars with all earlier fixes +# 0.08 - fixed typos, removed extraneous things +# 0.09 - fixed typos in first_pages to first_page to again support older formats +# 0.10 - minor cleanups +# 0.11 - fixups for using correct xml for footnotes and sidebars for use with Dropbook +# 0.12 - Fix added to prevent lowercasing of image names when the pml code itself uses a different case in the link name. +# 0.13 - change to unbuffered stdout for use with gui front ends +# 0.14 - contributed enhancement to support --make-pmlz switch +# 0.15 - enabled high-ascii to pml character encoding. DropBook now works on Mac. + +__version__='0.15' + +# Import Psyco if available +try: + # Dumb speed hack 1 + # http://psyco.sourceforge.net + import psyco + psyco.full() + pass +except ImportError: + pass +try: + # Dumb speed hack 2 + # All map() calls converted to list comprehension (some use zip) + # override zip with izip - saves memory and in rough testing + # appears to be faster zip() is only used in the converted map() calls + from itertools import izip as zip +except ImportError: + pass + +class Unbuffered: + def __init__(self, stream): + self.stream = stream + def write(self, data): + self.stream.write(data) + self.stream.flush() + def __getattr__(self, attr): + return getattr(self.stream, attr) + +import sys +sys.stdout=Unbuffered(sys.stdout) + +import struct, binascii, getopt, zlib, os, os.path, urllib, tempfile + +try: + from hashlib import sha1 +except ImportError: + # older Python release + import sha + sha1 = lambda s: sha.new(s) +import cgi +import logging + +logging.basicConfig() +#logging.basicConfig(level=logging.DEBUG) + +ECB = 0 +CBC = 1 +class Des(object): + __pc1 = [56, 48, 40, 32, 24, 16, 8, 0, 57, 49, 41, 33, 25, 17, + 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, + 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, + 13, 5, 60, 52, 44, 36, 28, 20, 12, 4, 27, 19, 11, 3] + __left_rotations = [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1] + __pc2 = [13, 16, 10, 23, 0, 4,2, 27, 14, 5, 20, 9, + 22, 18, 11, 3, 25, 7, 15, 6, 26, 19, 12, 1, + 40, 51, 30, 36, 46, 54, 29, 39, 50, 44, 32, 47, + 43, 48, 38, 55, 33, 52, 45, 41, 49, 35, 28, 31] + __ip = [57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3, + 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7, + 56, 48, 40, 32, 24, 16, 8, 0, 58, 50, 42, 34, 26, 18, 10, 2, + 60, 52, 44, 36, 28, 20, 12, 4, 62, 54, 46, 38, 30, 22, 14, 6] + __expansion_table = [31, 0, 1, 2, 3, 4, 3, 4, 5, 6, 7, 8, + 7, 8, 9, 10, 11, 12,11, 12, 13, 14, 15, 16, + 15, 16, 17, 18, 19, 20,19, 20, 21, 22, 23, 24, + 23, 24, 25, 26, 27, 28,27, 28, 29, 30, 31, 0] + __sbox = [[14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7, + 0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8, + 4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0, + 15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13], + [15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10, + 3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5, + 0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15, + 13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9], + [10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8, + 13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1, + 13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7, + 1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12], + [7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15, + 13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9, + 10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4, + 3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14], + [2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9, + 14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6, + 4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14, + 11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3], + [12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11, + 10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8, + 9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6, + 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13], + [4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1, + 13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6, + 1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2, + 6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12], + [13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7, + 1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2, + 7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8, + 2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11],] + __p = [15, 6, 19, 20, 28, 11,27, 16, 0, 14, 22, 25, + 4, 17, 30, 9, 1, 7,23,13, 31, 26, 2, 8,18, 12, 29, 5, 21, 10,3, 24] + __fp = [39, 7, 47, 15, 55, 23, 63, 31,38, 6, 46, 14, 54, 22, 62, 30, + 37, 5, 45, 13, 53, 21, 61, 29,36, 4, 44, 12, 52, 20, 60, 28, + 35, 3, 43, 11, 51, 19, 59, 27,34, 2, 42, 10, 50, 18, 58, 26, + 33, 1, 41, 9, 49, 17, 57, 25,32, 0, 40, 8, 48, 16, 56, 24] + # Type of crypting being done + ENCRYPT = 0x00 + DECRYPT = 0x01 + def __init__(self, key, mode=ECB, IV=None): + if len(key) != 8: + raise ValueError("Invalid DES key size. Key must be exactly 8 bytes long.") + self.block_size = 8 + self.key_size = 8 + self.__padding = '' + self.setMode(mode) + if IV: + self.setIV(IV) + self.L = [] + self.R = [] + self.Kn = [ [0] * 48 ] * 16 # 16 48-bit keys (K1 - K16) + self.final = [] + self.setKey(key) + def getKey(self): + return self.__key + def setKey(self, key): + self.__key = key + self.__create_sub_keys() + def getMode(self): + return self.__mode + def setMode(self, mode): + self.__mode = mode + def getIV(self): + return self.__iv + def setIV(self, IV): + if not IV or len(IV) != self.block_size: + raise ValueError("Invalid Initial Value (IV), must be a multiple of " + str(self.block_size) + " bytes") + self.__iv = IV + def getPadding(self): + return self.__padding + def __String_to_BitList(self, data): + l = len(data) * 8 + result = [0] * l + pos = 0 + for c in data: + i = 7 + ch = ord(c) + while i >= 0: + if ch & (1 << i) != 0: + result[pos] = 1 + else: + result[pos] = 0 + pos += 1 + i -= 1 + return result + def __BitList_to_String(self, data): + result = '' + pos = 0 + c = 0 + while pos < len(data): + c += data[pos] << (7 - (pos % 8)) + if (pos % 8) == 7: + result += chr(c) + c = 0 + pos += 1 + return result + def __permutate(self, table, block): + return [block[x] for x in table] + def __create_sub_keys(self): + key = self.__permutate(Des.__pc1, self.__String_to_BitList(self.getKey())) + i = 0 + self.L = key[:28] + self.R = key[28:] + while i < 16: + j = 0 + while j < Des.__left_rotations[i]: + self.L.append(self.L[0]) + del self.L[0] + self.R.append(self.R[0]) + del self.R[0] + j += 1 + self.Kn[i] = self.__permutate(Des.__pc2, self.L + self.R) + i += 1 + def __des_crypt(self, block, crypt_type): + block = self.__permutate(Des.__ip, block) + self.L = block[:32] + self.R = block[32:] + if crypt_type == Des.ENCRYPT: + iteration = 0 + iteration_adjustment = 1 + else: + iteration = 15 + iteration_adjustment = -1 + i = 0 + while i < 16: + tempR = self.R[:] + self.R = self.__permutate(Des.__expansion_table, self.R) + self.R = [x ^ y for x,y in zip(self.R, self.Kn[iteration])] + B = [self.R[:6], self.R[6:12], self.R[12:18], self.R[18:24], self.R[24:30], self.R[30:36], self.R[36:42], self.R[42:]] + j = 0 + Bn = [0] * 32 + pos = 0 + while j < 8: + m = (B[j][0] << 1) + B[j][5] + n = (B[j][1] << 3) + (B[j][2] << 2) + (B[j][3] << 1) + B[j][4] + v = Des.__sbox[j][(m << 4) + n] + Bn[pos] = (v & 8) >> 3 + Bn[pos + 1] = (v & 4) >> 2 + Bn[pos + 2] = (v & 2) >> 1 + Bn[pos + 3] = v & 1 + pos += 4 + j += 1 + self.R = self.__permutate(Des.__p, Bn) + self.R = [x ^ y for x, y in zip(self.R, self.L)] + self.L = tempR + i += 1 + iteration += iteration_adjustment + self.final = self.__permutate(Des.__fp, self.R + self.L) + return self.final + def crypt(self, data, crypt_type): + if not data: + return '' + if len(data) % self.block_size != 0: + if crypt_type == Des.DECRYPT: # Decryption must work on 8 byte blocks + raise ValueError("Invalid data length, data must be a multiple of " + str(self.block_size) + " bytes\n.") + if not self.getPadding(): + raise ValueError("Invalid data length, data must be a multiple of " + str(self.block_size) + " bytes\n. Try setting the optional padding character") + else: + data += (self.block_size - (len(data) % self.block_size)) * self.getPadding() + if self.getMode() == CBC: + if self.getIV(): + iv = self.__String_to_BitList(self.getIV()) + else: + raise ValueError("For CBC mode, you must supply the Initial Value (IV) for ciphering") + i = 0 + dict = {} + result = [] + while i < len(data): + block = self.__String_to_BitList(data[i:i+8]) + if self.getMode() == CBC: + if crypt_type == Des.ENCRYPT: + block = [x ^ y for x, y in zip(block, iv)] + processed_block = self.__des_crypt(block, crypt_type) + if crypt_type == Des.DECRYPT: + processed_block = [x ^ y for x, y in zip(processed_block, iv)] + iv = block + else: + iv = processed_block + else: + processed_block = self.__des_crypt(block, crypt_type) + result.append(self.__BitList_to_String(processed_block)) + i += 8 + if crypt_type == Des.DECRYPT and self.getPadding(): + s = result[-1] + while s[-1] == self.getPadding(): + s = s[:-1] + result[-1] = s + return ''.join(result) + def encrypt(self, data, pad=''): + self.__padding = pad + return self.crypt(data, Des.ENCRYPT) + def decrypt(self, data, pad=''): + self.__padding = pad + return self.crypt(data, Des.DECRYPT) + +class Sectionizer(object): + def __init__(self, filename, ident): + self.contents = file(filename, 'rb').read() + self.header = self.contents[0:72] + self.num_sections, = struct.unpack('>H', self.contents[76:78]) + if self.header[0x3C:0x3C+8] != ident: + raise ValueError('Invalid file format') + self.sections = [] + for i in xrange(self.num_sections): + offset, a1,a2,a3,a4 = struct.unpack('>LBBBB', self.contents[78+i*8:78+i*8+8]) + flags, val = a1, a2<<16|a3<<8|a4 + self.sections.append( (offset, flags, val) ) + def loadSection(self, section): + if section + 1 == self.num_sections: + end_off = len(self.contents) + else: + end_off = self.sections[section + 1][0] + off = self.sections[section][0] + return self.contents[off:end_off] + +def sanitizeFileName(s): + r = '' + for c in s: + if c in "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.-": + r += c + return r + +def fixKey(key): + def fixByte(b): + return b ^ ((b ^ (b<<1) ^ (b<<2) ^ (b<<3) ^ (b<<4) ^ (b<<5) ^ (b<<6) ^ (b<<7) ^ 0x80) & 0x80) + return "".join([chr(fixByte(ord(a))) for a in key]) + +def deXOR(text, sp, table): + r='' + j = sp + for i in xrange(len(text)): + r += chr(ord(table[j]) ^ ord(text[i])) + j = j + 1 + if j == len(table): + j = 0 + return r + +class EreaderProcessor(object): + def __init__(self, section_reader, username, creditcard): + self.section_reader = section_reader + data = section_reader(0) + version, = struct.unpack('>H', data[0:2]) + self.version = version + logging.info('eReader file format version %s', version) + if version != 272 and version != 260 and version != 259: + raise ValueError('incorrect eReader version %d (error 1)' % version) + data = section_reader(1) + self.data = data + des = Des(fixKey(data[0:8])) + cookie_shuf, cookie_size = struct.unpack('>LL', des.decrypt(data[-8:])) + if cookie_shuf < 3 or cookie_shuf > 0x14 or cookie_size < 0xf0 or cookie_size > 0x200: + raise ValueError('incorrect eReader version (error 2)') + input = des.decrypt(data[-cookie_size:]) + def unshuff(data, shuf): + r = [''] * len(data) + j = 0 + for i in xrange(len(data)): + j = (j + shuf) % len(data) + r[j] = data[i] + assert len("".join(r)) == len(data) + return "".join(r) + r = unshuff(input[0:-8], cookie_shuf) + + def fixUsername(s): + r = '' + for c in s.lower(): + if (c >= 'a' and c <= 'z' or c >= '0' and c <= '9'): + r += c + return r + + user_key = struct.pack('>LL', binascii.crc32(fixUsername(username)) & 0xffffffff, binascii.crc32(creditcard[-8:])& 0xffffffff) + drm_sub_version = struct.unpack('>H', r[0:2])[0] + self.num_text_pages = struct.unpack('>H', r[2:4])[0] - 1 + self.num_image_pages = struct.unpack('>H', r[26:26+2])[0] + self.first_image_page = struct.unpack('>H', r[24:24+2])[0] + if self.version == 272: + self.num_footnote_pages = struct.unpack('>H', r[46:46+2])[0] + self.first_footnote_page = struct.unpack('>H', r[44:44+2])[0] + self.num_sidebar_pages = struct.unpack('>H', r[38:38+2])[0] + self.first_sidebar_page = struct.unpack('>H', r[36:36+2])[0] + # self.num_bookinfo_pages = struct.unpack('>H', r[34:34+2])[0] + # self.first_bookinfo_page = struct.unpack('>H', r[32:32+2])[0] + # self.num_chapter_pages = struct.unpack('>H', r[22:22+2])[0] + # self.first_chapter_page = struct.unpack('>H', r[20:20+2])[0] + # self.num_link_pages = struct.unpack('>H', r[30:30+2])[0] + # self.first_link_page = struct.unpack('>H', r[28:28+2])[0] + # self.num_xtextsize_pages = struct.unpack('>H', r[54:54+2])[0] + # self.first_xtextsize_page = struct.unpack('>H', r[52:52+2])[0] + + # **before** data record 1 was decrypted and unshuffled, it contained data + # to create an XOR table and which is used to fix footnote record 0, link records, chapter records, etc + self.xortable_offset = struct.unpack('>H', r[40:40+2])[0] + self.xortable_size = struct.unpack('>H', r[42:42+2])[0] + self.xortable = self.data[self.xortable_offset:self.xortable_offset + self.xortable_size] + else: + self.num_footnote_pages = 0 + self.num_sidebar_pages = 0 + self.first_footnote_page = -1 + self.first_sidebar_page = -1 + # self.num_bookinfo_pages = 0 + # self.num_chapter_pages = 0 + # self.num_link_pages = 0 + # self.num_xtextsize_pages = 0 + # self.first_bookinfo_page = -1 + # self.first_chapter_page = -1 + # self.first_link_page = -1 + # self.first_xtextsize_page = -1 + + logging.debug('self.num_text_pages %d', self.num_text_pages) + logging.debug('self.num_footnote_pages %d, self.first_footnote_page %d', self.num_footnote_pages , self.first_footnote_page) + logging.debug('self.num_sidebar_pages %d, self.first_sidebar_page %d', self.num_sidebar_pages , self.first_sidebar_page) + self.flags = struct.unpack('>L', r[4:8])[0] + reqd_flags = (1<<9) | (1<<7) | (1<<10) + if (self.flags & reqd_flags) != reqd_flags: + print "Flags: 0x%X" % self.flags + raise ValueError('incompatible eReader file') + des = Des(fixKey(user_key)) + if version == 259: + if drm_sub_version != 7: + raise ValueError('incorrect eReader version %d (error 3)' % drm_sub_version) + encrypted_key_sha = r[44:44+20] + encrypted_key = r[64:64+8] + elif version == 260: + if drm_sub_version != 13: + raise ValueError('incorrect eReader version %d (error 3)' % drm_sub_version) + encrypted_key = r[44:44+8] + encrypted_key_sha = r[52:52+20] + elif version == 272: + encrypted_key = r[172:172+8] + encrypted_key_sha = r[56:56+20] + self.content_key = des.decrypt(encrypted_key) + if sha1(self.content_key).digest() != encrypted_key_sha: + raise ValueError('Incorrect Name and/or Credit Card') + + def getNumImages(self): + return self.num_image_pages + + def getImage(self, i): + sect = self.section_reader(self.first_image_page + i) + name = sect[4:4+32].strip('\0') + data = sect[62:] + return sanitizeFileName(name), data + + + # def getChapterNamePMLOffsetData(self): + # cv = '' + # if self.num_chapter_pages > 0: + # for i in xrange(self.num_chapter_pages): + # chaps = self.section_reader(self.first_chapter_page + i) + # j = i % self.xortable_size + # offname = deXOR(chaps, j, self.xortable) + # offset = struct.unpack('>L', offname[0:4])[0] + # name = offname[4:].strip('\0') + # cv += '%d|%s\n' % (offset, name) + # return cv + + # def getLinkNamePMLOffsetData(self): + # lv = '' + # if self.num_link_pages > 0: + # for i in xrange(self.num_link_pages): + # links = self.section_reader(self.first_link_page + i) + # j = i % self.xortable_size + # offname = deXOR(links, j, self.xortable) + # offset = struct.unpack('>L', offname[0:4])[0] + # name = offname[4:].strip('\0') + # lv += '%d|%s\n' % (offset, name) + # return lv + + # def getExpandedTextSizesData(self): + # ts = '' + # if self.num_xtextsize_pages > 0: + # tsize = deXOR(self.section_reader(self.first_xtextsize_page), 0, self.xortable) + # for i in xrange(self.num_text_pages): + # xsize = struct.unpack('>H', tsize[0:2])[0] + # ts += "%d\n" % xsize + # tsize = tsize[2:] + # return ts + + # def getBookInfo(self): + # bkinfo = '' + # if self.num_bookinfo_pages > 0: + # info = self.section_reader(self.first_bookinfo_page) + # bkinfo = deXOR(info, 0, self.xortable) + # bkinfo = bkinfo.replace('\0','|') + # bkinfo += '\n' + # return bkinfo + + def getText(self): + des = Des(fixKey(self.content_key)) + r = '' + for i in xrange(self.num_text_pages): + logging.debug('get page %d', i) + r += zlib.decompress(des.decrypt(self.section_reader(1 + i))) + + # now handle footnotes pages + if self.num_footnote_pages > 0: + r += '\n' + # the record 0 of the footnote section must pass through the Xor Table to make it useful + sect = self.section_reader(self.first_footnote_page) + fnote_ids = deXOR(sect, 0, self.xortable) + # the remaining records of the footnote sections need to be decoded with the content_key and zlib inflated + des = Des(fixKey(self.content_key)) + for i in xrange(1,self.num_footnote_pages): + logging.debug('get footnotepage %d', i) + id_len = ord(fnote_ids[2]) + id = fnote_ids[3:3+id_len] + fmarker = '\n' % id + fmarker += zlib.decompress(des.decrypt(self.section_reader(self.first_footnote_page + i))) + fmarker += '\n\n' + r += fmarker + fnote_ids = fnote_ids[id_len+4:] + + # now handle sidebar pages + if self.num_sidebar_pages > 0: + r += '\n' + # the record 0 of the sidebar section must pass through the Xor Table to make it useful + sect = self.section_reader(self.first_sidebar_page) + sbar_ids = deXOR(sect, 0, self.xortable) + # the remaining records of the sidebar sections need to be decoded with the content_key and zlib inflated + des = Des(fixKey(self.content_key)) + for i in xrange(1,self.num_sidebar_pages): + id_len = ord(sbar_ids[2]) + id = sbar_ids[3:3+id_len] + smarker = '\n' % id + smarker += zlib.decompress(des.decrypt(self.section_reader(self.first_footnote_page + i))) + smarker += '\n\n' + r += smarker + sbar_ids = sbar_ids[id_len+4:] + + return r + +def cleanPML(pml): + # Convert special characters to proper PML code. High ASCII start at (\x80, \a128) and go up to (\xff, \a255) + pml2 = pml + for k in xrange(128,256): + badChar = chr(k) + pml2 = pml2.replace(badChar, '\\a%03d' % k) + return pml2 + +def convertEreaderToPml(infile, name, cc, outdir): + if not os.path.exists(outdir): + os.makedirs(outdir) + + print " Decoding File" + sect = Sectionizer(infile, 'PNRdPPrs') + er = EreaderProcessor(sect.loadSection, name, cc) + + if er.getNumImages() > 0: + print " Extracting images" + imagedir = bookname + '_img/' + imagedirpath = os.path.join(outdir,imagedir) + if not os.path.exists(imagedirpath): + os.makedirs(imagedirpath) + for i in xrange(er.getNumImages()): + name, contents = er.getImage(i) + file(os.path.join(imagedirpath, name), 'wb').write(contents) + + print " Extracting pml" + pml_string = er.getText() + pmlfilename = bookname + ".pml" + file(os.path.join(outdir, pmlfilename),'wb').write(cleanPML(pml_string)) + + # bkinfo = er.getBookInfo() + # if bkinfo != '': + # print " Extracting book meta information" + # file(os.path.join(outdir, 'bookinfo.txt'),'wb').write(bkinfo) + + +def usage(): + print "Converts DRMed eReader books to PML Source" + print "Usage:" + print " erdr2pml [options] infile.pdb [outdir] \"your name\" credit_card_number " + print " " + print "Options: " + print " -h prints this message" + print " --make-pmlz create PMLZ instead of using output directory" + print " " + print "Note:" + print " if ommitted, outdir defaults based on 'infile.pdb'" + print " It's enough to enter the last 8 digits of the credit card number" + return + +def main(argv=None): + global bookname + try: + opts, args = getopt.getopt(sys.argv[1:], "h", ["make-pmlz"]) + except getopt.GetoptError, err: + print str(err) + usage() + return 1 + make_pmlz = False + zipname = None + for o, a in opts: + if o == "-h": + usage() + return 0 + elif o == "--make-pmlz": + make_pmlz = True + zipname = '' + + print "eRdr2Pml v%s. Copyright (c) 2009 The Dark Reverser" % __version__ + + if len(args)!=3 and len(args)!=4: + usage() + return 1 + else: + if len(args)==3: + infile, name, cc = args[0], args[1], args[2] + outdir = infile[:-4] + '_Source' + elif len(args)==4: + infile, outdir, name, cc = args[0], args[1], args[2], args[3] + + if make_pmlz : + # ignore specified outdir, use tempdir instead + outdir = tempfile.mkdtemp() + + bookname = os.path.splitext(os.path.basename(infile))[0] + + try: + print "Processing..." + import time + start_time = time.time() + convertEreaderToPml(infile, name, cc, outdir) + + if make_pmlz : + import zipfile + import shutil + print " Creating PMLZ file" + zipname = infile[:-4] + '.pmlz' + myZipFile = zipfile.ZipFile(zipname,'w',zipfile.ZIP_STORED, False) + list = os.listdir(outdir) + for file in list: + localname = file + filePath = os.path.join(outdir,file) + if os.path.isfile(filePath): + myZipFile.write(filePath, localname) + elif os.path.isdir(filePath): + imageList = os.listdir(filePath) + localimgdir = os.path.basename(filePath) + for image in imageList: + localname = os.path.join(localimgdir,image) + imagePath = os.path.join(filePath,image) + if os.path.isfile(imagePath): + myZipFile.write(imagePath, localname) + myZipFile.close() + # remove temporary directory + shutil.rmtree(outdir) + + end_time = time.time() + search_time = end_time - start_time + print 'elapsed time: %.2f seconds' % (search_time, ) + if make_pmlz : + print 'output is %s' % zipname + else : + print 'output in %s' % outdir + print "done" + except ValueError, e: + print "Error: %s" % e + return 1 + return 0 + +if __name__ == "__main__": + #import cProfile + #command = """sys.exit(main())""" + #cProfile.runctx( command, globals(), locals(), filename="cprofile.profile" ) + + sys.exit(main()) diff --git a/eReader_Tools/lib/ereader2html.py b/eReader_PDB_Tools/lib/ereader2html.py similarity index 100% rename from eReader_Tools/lib/ereader2html.py rename to eReader_PDB_Tools/lib/ereader2html.py diff --git a/eReader_Tools/lib/scrolltextwidget.py b/eReader_PDB_Tools/lib/scrolltextwidget.py similarity index 100% rename from eReader_Tools/lib/scrolltextwidget.py rename to eReader_PDB_Tools/lib/scrolltextwidget.py diff --git a/eReader_Tools/lib/subasyncio.py b/eReader_PDB_Tools/lib/subasyncio.py similarity index 100% rename from eReader_Tools/lib/subasyncio.py rename to eReader_PDB_Tools/lib/subasyncio.py diff --git a/eReader_Tools/lib/xpml2xhtml.py b/eReader_PDB_Tools/lib/xpml2xhtml.py similarity index 100% rename from eReader_Tools/lib/xpml2xhtml.py rename to eReader_PDB_Tools/lib/xpml2xhtml.py