Remove DRM from Adobe Digital Editions – How-To guide

[updated 17 Oct 2011]

Like Adobe says: “Make reading an engaging experience!” So engage yourself and break free your pdf books, which you bought legally. In the first article “Remove DRM from Adobe Digital Editions – Background” I showed how it was started. Now let’s roll up the sleeves. I will show how to strip DRM protection.

STEP 1 – Find the inept files with code for Python

Find in the internet two text files: ineptkey.pyw — version 5.4 and ineptpdf.pyw — version 8.4.50. Versions can be different, but they should not be too far away from what I have indicated. Save them in your folder, we will need these files a little bit later.

STEP 2 – Install Adobe Digital Editions and activate

I used version 1.7.2 of ADE. Here’s a screenshot below:

ade-activation

And once you are done, you should see this:

ade-activation-success

STEP 3 — Install Python with Crypto modules

Link the Python distribution Python 2.7 (do not use version 3!, it is not going to work for this task). File name is python-2.7.1.msi in my case.

python-2.7.1

For the crypto modules go to PyCrypto and choose file dedicated version for Python 2.7 (if you installed Python 2.7 of course, because they should match!): pycrypto-2.1.0.win32-py2.7.exe

crypto-for-python

Look at your ineptkey.pyw and ineptpdf.pyw files in Windows Explorer, they should look like this now:

inept-files

STEP 4 — Retrieve your Adept key

At that point it is important that you have not only installed Adobe Digital Editions but also have it activated, otherwise you will get an error “Adobe Digital Editions not activated”:

ade-not-activated

OK, double-click ineptkey.pyw script, in a second you should see the message “Key successfully retrieved to adeptkey.der”:

adept-key-retrieved

Check the folder with the script, there will be the key:

adept-key

Important to understand, that it is your own key, which can be applied to all books you buy in the future. Therefore, this step ( adept key extraction) is done normally only once. Keep your adeptkey.der in a safe place. Things may change with Digital Editions and the possibility to retrieve the key may not be available anymore.

STEP 5 — Decryption

Double-click ineptpdf.pyw file to see this dialog screen:

inept-pdf-decrypter-8.4.50

Type in required information and click Decrypt. Done! Try to open your pdf book in Acrobat Reader now.

STEP 6 — Cleaning

Sometimes while browsing inside the decrypted books, you may see the Adobe Acrobat error: “There was an error processing a page. There was a problem reading this document (110).”

acrobat-error-110

Or there could be another error: “An error exists on this page. Acrobat may not display the page correctly. Please contact the person who created the PDF document to correct the problem.”

acrobat-error-000

To fix that I use Elcomsoft Advanced PDF password recovery program (APDFPR), as in that case the reason was the Java Script (JS) code left in the document:

js-to-remove-from-pdf

You can also try to sanitize your document if APDFPR does not help getting rid of 110 error. Find this option in Acrobat Professional under Tools > Protection (see the screenshots below):

pdf-sanitize-1 pdf-sanitize

If some pages in the decrypted document are still not willing to show, try more gentle scrolling (seriously) and avoid pushing PageDown key, or choose alternative PDF viewing software.

EXTRA STEP (If you have epub document to decrypt)

If you have epub book to decrypt, you should look for ineptepub.pyw file, the latest version tested was 5.2.

77 thoughts on “Remove DRM from Adobe Digital Editions – How-To guide

  1. Steve

    I’m having trouble with step 3, the “crypto modules”.
    I’m using a mac and I can’t seem to find a way to install them

    Reply
  2. Steve

    It’s working now. I had to install macPorts and Xcode first before being able to install the crypto modules

    thanks!

    Reply
  3. Budi

    Thanks for your step by step clearly guide .
    Finally, after more thank 5 times trying to remove DRM without success, I got a pdf free DRM ebook.
    Now, I just want to share with anyone who has tried to remove DRM with older version of software and fail. My sugestion is always use a clean system with the latest version tools !!!
    Otherwise you will fail again and again … I don’t know where the fault is?
    I guess the ineptkey.pyw got a wrong key.

    Reply
    1. Astrum Post author

      Thank you for sharing your ideas, I think it is a valuable suggestion that clean system should be used, thanks again!
      Cheers

      Reply
  4. Q

    Hi, can you PLEASE create a zip file with ALL the necessary components in one place for a PC computer? I can’t seem to get the correct corresponding versions of each software, and I’ve been spending days trying to figure this out. All I want to do is to be able to print my Adobe Digital Editions file. Would be GREATLY appreciated

    Reply
  5. Vinay Kumar

    I am getting this error when i click on “adeptkey.der”

    “the file is invalid for use as the following: Security Certificate”

    Reply
    1. Astrum Post author

      You don’t need to click on that file. Why did you click on that? You double-click on ineptpdf.pyw file and provide your adeptkey.der in the dialog form. That’s it.

      Reply
  6. Bloody.Falcon

    Thanks for the great info. However, I have a question regarding the “There was an error processing a page. There was a problem reading this document (110).”

    I tried to use APDFPR 5.0 Professional to open the decrypted PDF to fix the error. However, when I open the file with APDFPR. APDFPR says “This document is not encrypted”. How can I use APDFPR to fix the JS error? Thanks.

    Reply
    1. Astrum Post author

      OK, then there is nothing you can do with APDFPR unfortunately. Try “Sanitize Document” option in Tools for Adobe Acrobat Professional, if you happen to have one.

      Reply
  7. Bloody.Falcon

    Hi Astrum,

    Thanks for the reply.

    I do have Acrobat 9 Professional. How can I “sanitize document”? My problem is after I decrypted the ADE file, some pages couldn’t be read and has the 110 error when I scroll to that page.

    Reply
  8. Bloody.Falcon

    I tried to hold the control button when I click the ok button while error shows up.
    Acrobat says “Unrecognized object name”

    Reply
  9. Bloody.Falcon

    Haven’t tried to sanitize the pdf, as i couldn’t find that option in Acrobat 9.

    But foxit can read the decrypted pdf with no error. All pages show up correctly. Thanks for your help =D

    Reply
  10. dbeaudoin87

    For those of you experiencing the Adobe Acrobat error: “There was an error processing a page. There was a problem reading this document (110).”, I have found another working solution.

    1. Load the pdf with the error into Foxit PhantomPDF Business 5.0.1.0523 (other versions may work, but this is the one I used)
    2. Choose Tools/PDF Optimizer .. it will provide you with a number of options for cleaning the document. I used the default options for my PDF, but you can fine tune as necessary
    3. Click OK to optimize the PDF
    4. You will now have a chance to pick a new name for the optimized PDF and then click Save
    5. The resulting optimized PDF should now be readable in Adobe Acrobat

    Hope this works for you! :)

    Reply
  11. TL

    Hi,
    I’m having trouble with using ineptpdf.pyw in that it’s not working for me.
    I’ve installed python, pycrypto, and pywin and got the adeptkey but when I try to open ineptpdf a dos dialog box blinks and then nothing happens.

    Any thoughts on what’s wrong?

    Reply
    1. TL

      It’s alright, I got it working!

      Actually I used ineptpdf ver.7.4 rather than the newest one.

      Thanks for instructions.

      Reply
  12. mm

    I’ve been following this method to unlock ebooks for while now but a recent book purchased (2011 published) could not be unlocked. I expect Adobe had developed a work-around to this method.

    Reply
  13. ketones

    I have a ebook with this error: “There was an error processing a page. There was a problem reading this document (110).”

    I tried the various methods that you suggest but still couldn’t solve this. PDF Password Recovery tells me the pdf is not encrypt and Adobe Acrobat, Sanitize Document didn’t work too. It just says “The document could not be sanitized because of errors during the sanitization process”.

    Any other suggestion?

    Reply
  14. orb

    It worked for me with an encrypted PDF – thank you so much for your tutorial.

    Adobe Digital Edition 1.7.2 is not running on Mac OS 10.7, so this is the only way to read the PDF on the newest Mac OS. I did the decryption on a Windows XP VM on Mac.

    Reply
  15. Dave Veilleux

    I tried the steps in the how to…I could not find the inekey.pyw nor the ineptpdf.pyw, where should they be located?

    I then tried downloading the scripts from pastebin, the ineptpdf.pyw seems to work but I cannot obtian the key, when I run the ineptkey.pyw, nothing happens, no file is created, no error message, nothing. Can you help?

    Thx

    Reply
    1. hm

      I have the same problem that nothing happens when I click on ineptkey.pyw.
      I got version 5 with this revision history:
      # Revision history:
      # 1 – Initial release, for Adobe Digital Editions 1.7
      # 2 – Better algorithm for finding pLK; improved error handling
      # 3 – Rename to INEPT
      # 4 – Series of changes by joblack (and others?) —
      # 4.1 – quick beta fix for ADE 1.7.2 (anon)
      # 4.2 – added old 1.7.1 processing
      # 4.3 – better key search
      # 4.4 – Make it working on 64-bit Python
      # 5 – Clean up and improve 4.x changes;
      # Clean up and merge OS X support by unknown

      Until that step ev. worked fine for me with “python-2.7.3.msi” and “pycrypto-2.1.0.win32-py2.7.exe”.

      Can you please help me ?
      Thx

      Reply
      1. davest

        Hi, I have the same problem, I have ineptkey.pyw version 5 (couldn’t find 5.4), python-2.7.3 and pycrypto-2.1.0. When I double click ineptkey, nothing happens, please help

        Reply
  16. Meomeo986

    I got the same problem with Dave Veilleux, just double click the files (which script i got from pastebin) and not any of them work, nothing happened :(

    Reply
      1. Meomeo986

        no, all of my books are pdf. By the way, im using Win7 Home pre 64bit, ADE 1.7.2.1131, installed Python 2.7.2, PyCrypto 2.3 (already tried 2.1, didnt work either)
        Could you please give me some advices bout where to get those working ineptkey.pyw and ineptpdf.pyw files?

        Reply
  17. mm

    Dear Astrum
    Apologies for the slow follow-up from my query of 27 Aug last year- a bit distracted and forgot to tick the notify box. The steps worked well for all my DRMs but one. The problem was a monster reference volume ( some 2000+pages – CIM mining engineering handbook) which I would like to carry around on my tablet with other references. The dialog box of the program doing theconversion goes strange during conversion – expands to the full width of my screen showing some sort of very long path – and the ouput pdf created gives the error “There was an error opening document. The file is damaged and could not be repaired”. Any suggestions on this one?

    Reply
    1. Astrum Post author

      Thanks for that update! I noticed there could be some very specific errors. But when you work with already decrypted document, you can sometimes fix it with other tools. For instance, I used Foxit PhantomPDF: open the book in it, from menu choose Tools > PDF Optimizer , then select all options and click OK. In most cases it help recover file to be read with Acrobat software. So you can try just Foxit free reader, which is not worse than Adobe products. Good luck!

      Reply
  18. Bob

    Dear Astrum,
    Thanks for this great tutorial. But could you please help me in finding the ineptkey 5.4 & ineptpdf 8.4.5o. I hope these are the latest version? I am unable to find these versions anywhere on the net. Thanks a ton!

    Reply
  19. Jen-nay Batten

    Works Great! Now I am able to use my PAID digital book on all of my digital devices. Come on now, this is 2012.. who doesn’t have multiple digital devices? WTF Adobe? & the author who decided to cripple the PDF.

    Reply
  20. Baha

    Hi. thank you for your information about solving adobe 110 error. I have tried foxit phantomPDF to solve problem. yea now it does not has an error called 110 but the page which i try to view gives an other error and i could not view the page correctly and the page which i try to view has a missing figures. When I want to compare the page by using foxit reader and adobe acrobet reader, I realize that it has a missing figures. How can I fix this problem. I had try to solve this problem several months ago but it did not.When I read your article I hope that it will work but unfortunately not. I hope you will fix it. Thank you.

    Reply
    1. Astrum Post author

      Well, I have no remedy for that. Unfortunately, what I’ve learned with these tools and methods you may lose some data inside the document. The good thing — you can read it for ninety-something percent now. Good luck.

      Reply
  21. James Wall

    Hi astrum

    Sorry to bother you but I am having trouble on step 3. I am using a mac with snow leopard I cannot get pycryto to work. is there anyway around this for mac? Any help will be greatly appreciated?

    Reply
  22. k-bot

    I’ve tried running inept.pyw repeatedly. So far nothing. I copied the code from the entry at pasties.com, the entry at pastebin doesn’t contain any code.

    Reply
  23. frank

    I was able to follow all instructions, but the new PDF file that was created doesn’t open in Adobe’s Reader X nor the Foxit reader. Error: “There was an error opening this document. There was a problem reading this document (14). ”

    Any ideas how to solve this?

    Thanks.

    Reply
  24. AKC

    Does it work with locklizard protected PDFs? PDFs require online authentication & i need to know if someone has been succcessful in removing DRM using this method /?

    Reply
  25. Zeeshan

    i’m getting this error, when i run ineptkey

    “Traceback (most recent call last):
    File “D:\ineptkey.pyw”, line 198, in main
    retrieve_key(keypath)
    File “D:\ineptkey.pyw”, line 140, in retrieve_key
    vendor = cpuid0()
    File “D:\ineptkey.pyw”, line 103, in cpuid0
    cpuid0__(buffer)
    WindowsError: exception: access violation writing 0x0000000001DC08A0″

    Reply
      1. Jack

        I did and got this error:

        Traceback (most recent call last):
        File “C:\Users\Raya\Desktop\ineptkey.pyw, version 5\ineptkey.pyw.py”, line 361, in main
        success = retrieve_key(keypath)
        File “C:\Users\Raya\Desktop\ineptkey.pyw, version 5\ineptkey.pyw.py”, line 277, in retrieve_key
        userkey = AES.new(keykey, AES.MODE_CBC).decrypt(userkey)
        File “C:\Python27\lib\site-packages\Crypto\Cipher\AES.py”, line 95, in new
        return AESCipher(key, *args, **kwargs)
        File “C:\Python27\lib\site-packages\Crypto\Cipher\AES.py”, line 59, in __init__
        blockalgo.BlockAlgo.__init__(self, _AES, key, *args, **kwargs)
        File “C:\Python27\lib\site-packages\Crypto\Cipher\blockalgo.py”, line 141, in __init__
        self._cipher = factory.new(key, *args, **kwargs)
        ValueError: IV must be 16 bytes long

        Reply
        1. Siegfried

          The line
          self._aes = AES.new(bookkey, AES.MODE_CBC)
          in file aineptepub.pyw contains an error. The function Crypto.Cipher.AES.new() needs an additional parameter, which must be 16 bytes long. Change it to
          self._aes = AES.new(bookkey, AES.MODE_CBC, ‘0123456789abcdef’)
          and all will work fine.

          Reply
  26. Jack

    I doubled click the ineptkey.pyw and got this message:

    Traceback (most recent call last):
    File “C:\Users\Raya\Desktop\ineptkey.pyw, version 5\ineptkey.pyw.py”, line 361, in main
    success = retrieve_key(keypath)
    File “C:\Users\Raya\Desktop\ineptkey.pyw, version 5\ineptkey.pyw.py”, line 277, in retrieve_key
    userkey = AES.new(keykey, AES.MODE_CBC).decrypt(userkey)
    File “C:\Python27\lib\site-packages\Crypto\Cipher\AES.py”, line 95, in new
    return AESCipher(key, *args, **kwargs)
    File “C:\Python27\lib\site-packages\Crypto\Cipher\AES.py”, line 59, in __init__
    blockalgo.BlockAlgo.__init__(self, _AES, key, *args, **kwargs)
    File “C:\Python27\lib\site-packages\Crypto\Cipher\blockalgo.py”, line 141, in __init__
    self._cipher = factory.new(key, *args, **kwargs)
    ValueError: IV must be 16 bytes long

    Reply
    1. Jack

      I have downloaded it now, but I am afraid to uninstall version 2 and install version 1.7.2 so I can lose the ebooks I bought it for my study, any clues? I am new to this issue.

      Reply
    2. Jack

      I have installed 1.7.2 and then uninstalled version 2, however, I got this message:

      Traceback (most recent call last):
      File “C:\Users\Raya\Desktop\Removing DRM\ineptkey.pyw.py”, line 361, in main
      success = retrieve_key(keypath)
      File “C:\Users\Raya\Desktop\Removing DRM\ineptkey.pyw.py”, line 277, in retrieve_key
      userkey = AES.new(keykey, AES.MODE_CBC).decrypt(userkey)
      File “C:\Python27\lib\site-packages\Crypto\Cipher\AES.py”, line 95, in new
      return AESCipher(key, *args, **kwargs)
      File “C:\Python27\lib\site-packages\Crypto\Cipher\AES.py”, line 59, in __init__
      blockalgo.BlockAlgo.__init__(self, _AES, key, *args, **kwargs)
      File “C:\Python27\lib\site-packages\Crypto\Cipher\blockalgo.py”, line 141, in __init__
      self._cipher = factory.new(key, *args, **kwargs)
      ValueError: IV must be 16 bytes long

      Reply
      1. Astrum Post author

        Which versions of PYW files do you use?
        The proved ones are the following:
        ineptepub.pyw 5.2
        ineptkey.pyw 5.4
        ineptpdf.pyw 8.4.50

        Reply
          1. Astrum Post author

            ineptepub.pyw is only for epub ebooks format, you propbably have yours in pdf format
            You’d better use ver 5.4
            Is this your email M******raya@hotmail.com?

          2. Jack

            I got ver 5.4 and ineptpdf.pyw 8.4.50 but I got the following error:
            Traceback (most recent call last):
            File “C:\Users\Raya\Desktop\PYW\pyw\pyw\ineptkey.5.4.pyw”, line 449, in main
            success = retrieve_key(keypath)
            File “C:\Users\Raya\Desktop\PYW\pyw\pyw\ineptkey.5.4.pyw”, line 343, in retrieve_key
            aes = AES(keykey)
            File “C:\Users\Raya\Desktop\PYW\pyw\pyw\ineptkey.5.4.pyw”, line 113, in __init__
            self._aes = _AES.new(key, _AES.MODE_CBC)
            File “C:\Python27\lib\site-packages\Crypto\Cipher\AES.py”, line 95, in new
            return AESCipher(key, *args, **kwargs)
            File “C:\Python27\lib\site-packages\Crypto\Cipher\AES.py”, line 59, in __init__
            blockalgo.BlockAlgo.__init__(self, _AES, key, *args, **kwargs)
            File “C:\Python27\lib\site-packages\Crypto\Cipher\blockalgo.py”, line 141, in __init__
            self._cipher = factory.new(key, *args, **kwargs)
            ValueError: IV must be 16 bytes long

          3. Astrum Post author

            I honestly don’t know, sorry.
            These solutions are not supported, so using of exact version which proved to work might help.
            I would recommend also to make sure you run this with administrator’s rights.

      2. ArkanoidX

        If anyone have this problem, I’ve solved changing line 113 of version 5.4
        with:
        self._aes = _AES.new(key, _AES.MODE_CBC, “\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00”)

        Seems that there’s a but related with this argument that was optional before (regression):
        https://bugs.launchpad.net/pycrypto/+bug/1018283

        Same thing should be done in the ineptepub.py
        HTH

        Reply
  27. Peripes

    Just in case any of you still have problems visualizing some of the pages on your PDFs. Use Adobe Digital Editions to open your DRM free files, apparently ADE can handle cetain types of pictures that are shown as errors in Adobe Reader.

    I had this problem with an economics book that had lots of graphs but when opened them in ADE it showed them perfectly.

    Reply

Leave a Reply