View Single Post
  #2  
Old 10-19-2009, 03:24 AM
Stream Recorder
 
Posts: n/a
Default

Re: How to remove DRM from sony ebooks


It is possible to remove DRM protection from EPUB files using free python scripts:

Circumventing Adobe ADEPT (Adobe Digital Experience Protection Technology) DRM for EPUB:
Quote:
By way of a concrete reverse-engineering contribution, I have successfully circumvented Adobe's ADEPT DRM scheme for EPUB files. The same circumvention probably also allows decryption of ADEPT-encrypted PDF files, although I haven't looked into it yet.

ADEPT is pretty close to faultless as a crypto system -- a per-user RSA key encrypts a per-book AES key which encrypts the content. It uses AES in CBC mode with a random IV. It uses RSA with PKCS#1 v1.5 padding, which is perfectly adequate for this case. Unfortunately for Adobe, this isn't a crypto system, but a DRM system. DRM systems ultimately depend not on the strength of their cryptography, but the complexity of their obfuscation. There is very little obfuscation in how Adobe Digital Editions hides and encrypts the per-user RSA key, allowing fairly simple duplication of exactly the same process Digital Editions uses to retrieve it.

In practical terms, this breaks ADEPT circumvention into two components: key retrieval and decryption. Key retrieval depends only on the details of Digital Editions and can change seamlessly with an update to the same. Decryption however is a property of the architecture of the system as a whole. Preventing circumventing decryption with previously retrieved keys would require changes to both DE and Adobe Content Server and would take quite some time to propagate to all ACS customers. The upshot being that if you want to decrypt ADEPT books in the future, grab your key now -- no garauntees that you'll be able to do so in the future, but a previously-retrieved key should keep on working.

Here are the scripts:
Key-retrieval script (ineptkey.pyw version 3) and Decryption script (ineptepub.pyw version 2):
Code:
http://pastebin.com/f26972321
http://pastebin.com/f28fdd6b3
To use:
  1. install Python 2.6+ (32bit) and PyCrypto,
  2. run the key-retrieval script ineptkey.pyw,
  3. then run the decryption script ineptepub.pyw using the retrieved key.

And on a preachy note, please don't be a jerk with these. DRM is bad, but piracy is wrong kids, and only validates the opinions of those who think they need DRM in the first place.
Reply With Quote