From ffd7d41bcd81c34d73db868b96f4c5c53810a2c8 Mon Sep 17 00:00:00 2001 From: tomthumb1997 <37314994+tomthumb1997@users.noreply.github.com> Date: Mon, 12 Mar 2018 20:34:58 -0400 Subject: [PATCH] Update kgenpids.py --- DeDRM_calibre_plugin/DeDRM_plugin/kgenpids.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/DeDRM_calibre_plugin/DeDRM_plugin/kgenpids.py b/DeDRM_calibre_plugin/DeDRM_plugin/kgenpids.py index d899193..9b4373e 100644 --- a/DeDRM_calibre_plugin/DeDRM_plugin/kgenpids.py +++ b/DeDRM_calibre_plugin/DeDRM_plugin/kgenpids.py @@ -12,6 +12,7 @@ __version__ = '2.1' # Revision history: # 2.0 - Fix for non-ascii Windows user names # 2.1 - Actual fix for non-ascii WIndows user names. +# x.x - Return information needed for KFX decryption import sys import os, csv @@ -172,6 +173,9 @@ def pidFromSerial(s, l): # Parse the EXTH header records and use the Kindle serial number to calculate the book pid. def getKindlePids(rec209, token, serialnum): + if rec209 is None: + return [serialnum] + pids=[] if isinstance(serialnum,unicode): @@ -198,7 +202,7 @@ keynames = ['kindle.account.tokens','kindle.cookie.item','eulaVersionAccepted',' def getK4Pids(rec209, token, kindleDatabase): global charMap1 pids = [] - + try: # Get the kindle account token, if present kindleAccountToken = (kindleDatabase[1])['kindle.account.tokens'].decode('hex') @@ -217,7 +221,7 @@ def getK4Pids(rec209, token, kindleDatabase): # Get the Mazama Random number MazamaRandomNumber = (kindleDatabase[1])['MazamaRandomNumber'].decode('hex') #print u"Got MazamaRandomNumber from database {0}".format(kindleDatabase[0]) - + try: # Get the SerialNumber token, if present IDString = (kindleDatabase[1])['SerialNumber'].decode('hex') @@ -249,6 +253,10 @@ def getK4Pids(rec209, token, kindleDatabase): #print u"DSN",DSN.encode('hex') pass + if rec209 is None: + pids.append(DSN+kindleAccountToken) + return pids + # Compute the device PID (for which I can tell, is used for nothing). table = generatePidEncryptionTable() devicePID = generateDevicePID(table,DSN,4)