From 763ddb81e2cc5e5b17c738c9dc269a70156754fb Mon Sep 17 00:00:00 2001 From: Giovanni Carvelli Date: Sun, 19 May 2024 18:54:18 -0400 Subject: [PATCH 1/2] Support multiple keys on MacOS --- DeDRM_plugin/adobekey.py | 54 ++++++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/DeDRM_plugin/adobekey.py b/DeDRM_plugin/adobekey.py index 5ad771f0..7fdb265a 100644 --- a/DeDRM_plugin/adobekey.py +++ b/DeDRM_plugin/adobekey.py @@ -379,40 +379,46 @@ def findActivationDat(): return None def adeptkeys(): - # TODO: All the code to support extracting multiple activation keys - # TODO: seems to be Windows-only currently, still needs to be added for Mac. actpath = findActivationDat() if actpath is None: raise ADEPTError("Could not find ADE activation.dat file.") tree = etree.parse(actpath) adept = lambda tag: '{%s}%s' % (NSMAP['adept'], tag) expr = '//%s/%s' % (adept('credentials'), adept('privateLicenseKey')) - userkey = tree.findtext(expr) - - exprUUID = '//%s/%s' % (adept('credentials'), adept('user')) - keyName = "" - try: - keyName = tree.findtext(exprUUID)[9:] + "_" - except: - pass + userkeyelems = tree.findall(expr) + + userkeys = [] + keynames = [] + for userkeyelem in userkeyelems: + userkey = userkeyelem.text + + exprUUID = '//%s/%s' % (adept('credentials'), adept('user')) + keyName = "" + try: + keyName = tree.findtext(exprUUID)[9:] + "_" + except: + pass + + try: + exprMail = '//%s/%s' % (adept('credentials'), adept('username')) + keyName = keyName + tree.find(exprMail).attrib["method"] + "_" + keyName = keyName + tree.findtext(exprMail) + "_" + except: + pass - try: - exprMail = '//%s/%s' % (adept('credentials'), adept('username')) - keyName = keyName + tree.find(exprMail).attrib["method"] + "_" - keyName = keyName + tree.findtext(exprMail) + "_" - except: - pass - - if keyName == "": - keyName = "Unknown" - else: - keyName = keyName[:-1] + if keyName == "": + keyName = "Unknown" + else: + keyName = keyName[:-1] + userkey = b64decode(userkey) + userkey = userkey[26:] + userkeys.append(userkey) + keynames.append(keyName) - userkey = b64decode(userkey) - userkey = userkey[26:] - return [userkey], [keyName] + print("Found {0:d} keys".format(len(userkeys))) + return userkeys, keynames else: def adeptkeys(): From 767350322847db43229d85e3abf70c06675dff23 Mon Sep 17 00:00:00 2001 From: Giovanni Carvelli Date: Fri, 5 Jul 2024 17:23:31 -0400 Subject: [PATCH 2/2] remove print statement --- DeDRM_plugin/adobekey.py | 1 - 1 file changed, 1 deletion(-) diff --git a/DeDRM_plugin/adobekey.py b/DeDRM_plugin/adobekey.py index 7fdb265a..bdcdb1f0 100644 --- a/DeDRM_plugin/adobekey.py +++ b/DeDRM_plugin/adobekey.py @@ -417,7 +417,6 @@ def adeptkeys(): userkeys.append(userkey) keynames.append(keyName) - print("Found {0:d} keys".format(len(userkeys))) return userkeys, keynames else: