29

Have several copies of Acrobat Professional that were purchased previously, installed and activated. However there is no documentation of the serial numbers, the Adobe online account ID or any details for these.

Need to move the licenses to upgraded Windows 7 PCs (current ones are on Windows XP that are about to be decommissioned).

Requirement is to ONLY move the licenses to the upgraded workstations. NOT to have multiple instances of the same license running concurrently.

Note: Adobe support is not very helpful since there isn't much information about the licenses.

DO NOT want to use 3rd party tools to extract serial numbers.

Is there a way to get this information from the registry or any other location so that the licenses can be transferred without breaking the activation? If so how?

2
  • Why no third party tools? (Just asking) Jul 17, 2014 at 22:49
  • Many levels of approval is required to use 3rd party tools and there is a lot of hassle with that
    – thilina R
    Jul 21, 2014 at 21:42

1 Answer 1

46

This is what I was able to find after a few Google searches

STEP 1: Find Adobe Key (Encrypted)

Use one of the methods below.

M1. Using SQLite DB: The activation information is stored at the location below:

C:\Program Files (x86)\Common Files\Adobe\Adobe PCD\cache\cache.db

This is a SQLite DB which can be opened with SQLite Database Browser. Using SQLite Database Browser, you need to look for the key SN

M2. Using the registry:

For 32 bit OS :

HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Adobe Acrobat\10.0\Registration\SERIAL

For 64 bit OS :

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Adobe\Adobe Acrobat\10.0\Registration\SERIAL

Replace 10.0 with version of Adobe being used

STEP 2: Decrypt Key

Use one of the methods below.

M1: JavaScript code to decrypt Serial:

function DecodeAdobeKey(sAdobeEncryptedKey)
{
    var regex=/[0-9]{24}/g;
    if(!regex.test(sAdobeEncryptedKey))
    {
        return 'corrupted serial';
    }
    var AdobeCipher = new Array(),index=0,sAdobeDecryptedKey='';
    AdobeCipher[index++] = '0000000001';
    AdobeCipher[index++] = '5038647192';
    AdobeCipher[index++] = '1456053789';
    AdobeCipher[index++] = '2604371895';
    AdobeCipher[index++] = '4753896210';
    AdobeCipher[index++] = '8145962073';
    AdobeCipher[index++] = '0319728564';
    AdobeCipher[index++] = '7901235846';
    AdobeCipher[index++] = '7901235846';
    AdobeCipher[index++] = '0319728564';
    AdobeCipher[index++] = '8145962073';
    AdobeCipher[index++] = '4753896210';
    AdobeCipher[index++] = '2604371895';
    AdobeCipher[index++] = '1426053789';
    AdobeCipher[index++] = '5038647192';
    AdobeCipher[index++] = '3267408951';
    AdobeCipher[index++] = '5038647192';
    AdobeCipher[index++] = '2604371895';
    AdobeCipher[index++] = '8145962073';
    AdobeCipher[index++] = '7901235846';
    AdobeCipher[index++] = '3267408951';
    AdobeCipher[index++] = '1426053789';
    AdobeCipher[index++] = '4753896210';
    AdobeCipher[index++] = '0319728564';
   
    //decode the adobe key
   for(var i=0;i<24;i++)
   {
       if (i%4 == 0 && i>0)
           sAdobeDecryptedKey += '-';
       sAdobeDecryptedKey += AdobeCipher[i].charAt( sAdobeEncryptedKey.charAt(i) );
   }
   return sAdobeDecryptedKey;
}

M2: PowerShell Code to decrypt Serial

function ConvertFrom-EncryptedAdobeKey {
    [CmdletBinding()]
    Param(
        [Parameter(Position=0, Mandatory=$true)] 
        [string]
        [ValidateLength(24,24)]
        $EncryptedKey
    )

    $AdobeCipher = "0000000001", "5038647192", "1456053789", "2604371895",
        "4753896210", "8145962073", "0319728564", "7901235846",
        "7901235846", "0319728564", "8145962073", "4753896210",
        "2604371895", "1426053789", "5038647192", "3267408951",
        "5038647192", "2604371895", "8145962073", "7901235846",
        "3267408951", "1426053789", "4753896210", "0319728564"
       
    $counter = 0

    $DecryptedKey = ""

    While ($counter -ne 24) {
        $DecryptedKey += $AdobeCipher[$counter].substring($EncryptedKey.SubString($counter, 1), 1)
        $counter ++
    }

    $DecryptedKey
}

M3: VB Code to decrypt Serial:

Function DecodeAdobeKey(strAdobeEncryptedKey)
Dim AdobeCipher(24)
Dim strAdobeDecryptedKey, i, j
 
AdobeCipher(0) = "0000000001"
AdobeCipher(1) = "5038647192"
AdobeCipher(2) = "1456053789"
AdobeCipher(3) = "2604371895"
AdobeCipher(4) = "4753896210"
AdobeCipher(5) = "8145962073"
AdobeCipher(6) = "0319728564"
AdobeCipher(7) = "7901235846"
AdobeCipher(8) = "7901235846"
AdobeCipher(9) = "0319728564"
AdobeCipher(10) = "8145962073"
AdobeCipher(11) = "4753896210"
AdobeCipher(12) = "2604371895"
AdobeCipher(13) = "1426053789"
AdobeCipher(14) = "5038647192"
AdobeCipher(15) = "3267408951"
AdobeCipher(16) = "5038647192"
AdobeCipher(17) = "2604371895"
AdobeCipher(18) = "8145962073"
AdobeCipher(19) = "7901235846"
AdobeCipher(20) = "3267408951"
AdobeCipher(21) = "1426053789"
AdobeCipher(22) = "4753896210"
AdobeCipher(23) = "0319728564"
 
'decode the adobe key
for i = 0 To 23
if (i Mod 4 = 0 And i > 0) Then
'every 4 characters add a "-"
strAdobeDecryptedKey = strAdobeDecryptedKey & "-"
end if
 
'Grab the next number from the adobe encrypted key. Add one to 'i' because it isn't base 0
j = mid (strAdobeEncryptedKey, i + 1, 1)
 
'Add one to J because it isn't base 0 and grab that numbers position in the cipher
k = mid (AdobeCipher(i), j + 1, 1)
strAdobeDecryptedKey = strAdobeDecryptedKey & k
 
Next
DecodeAdobeKey = strAdobeDecryptedKey
End Function

M4: Java Code to decrypt Serial:

public static String decrypt(String encryptedKey) {
    String[] AdobeCipher = { "0000000001", "5038647192", "1456053789", "2604371895", "4753896210", "8145962073",
            "0319728564", "7901235846", "7901235846", "0319728564", "8145962073", "4753896210", "2604371895",
            "1426053789", "5038647192", "3267408951", "5038647192", "2604371895", "8145962073", "7901235846",
            "3267408951", "1426053789", "4753896210", "0319728564" };

    String sAdobeDecryptedKey = "";
    for (int i = 0; i < 24; i++) {
        if (i % 4 == 0 && i > 0)
            sAdobeDecryptedKey += '-';
        String ndx=encryptedKey.substring(i, i+1);
        int tmp=Integer.parseInt(ndx);
        sAdobeDecryptedKey += AdobeCipher[i].substring(tmp, tmp+1);
    }
    return sAdobeDecryptedKey;
}

STEP 3: Download and Install the software with same serial

Download same version of the Adobe software that was install previously from the official Adobe repository using the links below:

Adobe 10, 11

Adobe 8, 9

Adobe 7 - Download for Adobe Professional and Standard version 7 and Serial key available here - The serial numbers provided as a part of the download may only be used by customers who legitimately purchased CS2 or Acrobat 7 and need to maintain their current use of these products. (Can download by using ANY Adobe ID to sign in - Not just the Adobe ID it was purchased under)

References:

JavaScript Code

PowerShell Code

VB Code

Everything about Adobe’s cache.db (well, not quite)

Find Your Adobe Acrobat Serial Number

10
  • 1
    Also a huge thanks for this one. Just a couple of points: In the VB source code, you need to declare Dim j as Integer Dim k as Integer Using SQLite Database Browser, you need to look for the key SN and copy/paste it into VB/PS/JS program.
    – user386835
    Nov 5, 2014 at 5:05
  • 2
    I love the javascript function - so easy! Just open developer tools in a browser, go to the console, and paste it in. Next step - run the function with the encode key, and out pops the key!
    – JoBu1324
    Jul 22, 2015 at 20:45
  • 1
    A Python implementation: gist.github.com/fdemmer/dda13fe0d24e44d4b04560c092808c91
    – Florian
    Dec 29, 2017 at 9:21
  • 1
    Does this work for CS6? Jul 2, 2018 at 1:23
  • 1
    Teacher here during the 2020 Corona virus lock down. Just used this thread to move Acrobat 9 Pro from my puny work laptop to my more powerful PC where I actually teach from. Thank you, thank you, thank you!
    – Idle_Mind
    Apr 2, 2020 at 19:27

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .