From ad5cb056f052e6dcc0fcb96021b21c80b0def731 Mon Sep 17 00:00:00 2001 From: penenkel <7736404+penenkel@users.noreply.github.com> Date: Mon, 30 Nov 2020 23:25:01 +0100 Subject: [PATCH] Add conversion from bytearray to bytes so that pids are hashable --- DeDRM_plugin/k4mobidedrm.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/DeDRM_plugin/k4mobidedrm.py b/DeDRM_plugin/k4mobidedrm.py index 43392ee..6f49dbb 100644 --- a/DeDRM_plugin/k4mobidedrm.py +++ b/DeDRM_plugin/k4mobidedrm.py @@ -228,7 +228,10 @@ def GetDecryptedBook(infile, kDatabases, androidFiles, serials, pids, starttime serials.extend(androidkindlekey.get_serials(aFile)) # extend PID list with book-specific PIDs from seriala and kDatabases md1, md2 = mb.getPIDMetaInfo() - totalpids.extend(kgenpids.getPidList(md1, md2, serials, kDatabases)) + bookspecific = kgenpids.getPidList(md1, md2, serials, kDatabases) + # kgenpids.getPidList returns each pid as a (mutable) bytearray + # conversion to (immutable) bytes is nessesary as otherwise the set() function below will fail + totalpids.extend((bytes(pid) for pid in bookspecific)) # remove any duplicates totalpids = list(set(totalpids)) print("Found {1:d} keys to try after {0:.1f} seconds".format(time.time()-starttime, len(totalpids)))