<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/rss-style.xsl" type="text/xsl"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	     xmlns:dc="http://purl.org/dc/elements/1.1/"
	   xmlns:atom="http://www.w3.org/2005/Atom"
	     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	  xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>Adobe &#8211; Terence Eden’s Blog</title>
	<atom:link href="https://shkspr.mobi/blog/tag/adobe/feed/" rel="self" type="application/rss+xml" />
	<link>https://shkspr.mobi/blog</link>
	<description>Regular nonsense about tech and its effects 🙃</description>
	<lastBuildDate>Wed, 13 Aug 2025 06:21:12 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://shkspr.mobi/blog/wp-content/uploads/2023/07/cropped-avatar-32x32.jpeg</url>
	<title>Adobe &#8211; Terence Eden’s Blog</title>
	<link>https://shkspr.mobi/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title><![CDATA[Download ACSM files in Linux - without using Adobe Digital Editions!]]></title>
		<link>https://shkspr.mobi/blog/2021/07/download-acsm-files-in-linux-without-using-adobe-digital-editions/</link>
					<comments>https://shkspr.mobi/blog/2021/07/download-acsm-files-in-linux-without-using-adobe-digital-editions/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 26 Jul 2021 11:15:07 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=39673</guid>

					<description><![CDATA[After my rant the other day about Adobe Digital Editions, I discovered libgourou by Grégory Soutadé  libgourou is a free implementation of Adobe&#039;s ADEPT protocol used to add DRM on ePub files. It overcome the lacks of Adobe support for Linux platforms.  There are a few limitations, but nothing too serious:   Only ePub is supported. No PDF Command line only Alpha quality software. It works - but i…]]></description>
										<content:encoded><![CDATA[<p>After my rant the other day about Adobe Digital Editions, I discovered <a href="https://www.mobileread.com/forums/showthread.php?t=340479"><code>libgourou</code> by Grégory Soutadé</a></p>

<blockquote><p>libgourou is a free implementation of Adobe's ADEPT protocol used to add DRM on ePub files. It overcome the lacks of Adobe support for Linux platforms.</p></blockquote>

<p>There are a few limitations, but nothing too serious:</p>

<ul>
<li>Only ePub is supported. No PDF</li>
<li>Command line only</li>
<li>Alpha quality software. It works - but is a bit finickity</li>
</ul>

<p>You can compile the code yourself, but I just <a href="http://indefero.soutade.fr/p/libgourou/downloads/">downloaded the pre-built binaries</a>.</p>

<p>On Ubuntu / Pop I needed to <code>sudo apt install libzip-dev</code>.</p>

<p>Once you've unzipped the download, <code>cd</code> into it and run:</p>

<p><code>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD</code></p>

<p>Then</p>

<p><code>./adept_activate -u youremail@example.com -p SuperStrongPassword</code></p>

<p>Use the same credentials as you do in Adobe Digital Editions. You can just use the <code>-u</code> flag and type your password in at the prompt - but I couldn't get that to work. The <code>-p</code> flag worked fine.</p>

<p>After a few seconds, you'll see:
<code>youremail@example.com fully signed and device activated in /home/you/libgourou_utils_0.3.1/./.adept</code></p>

<p>Then run:
<code>./acsmdownloader -f whatever.acsm</code></p>

<p>After a few moments, you'll see:
<code>Created whatever.epub</code></p>

<p>That's it! Your file is downloaded and you can read the ePub.</p>

<p>Note: If you try to download a PDF, you'll get an error saying:
<code>Exception code : 0x5007
Message        : whatever.epub</code></p>

<p>You can rename the file back to .pdf, but it will still be encrypted.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=39673&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2021/07/download-acsm-files-in-linux-without-using-adobe-digital-editions/feed/</wfw:commentRss>
			<slash:comments>13</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[A brief look at ACSM files]]></title>
		<link>https://shkspr.mobi/blog/2021/07/a-brief-look-at-acsm-files/</link>
					<comments>https://shkspr.mobi/blog/2021/07/a-brief-look-at-acsm-files/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sat, 24 Jul 2021 11:26:29 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[ebook]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=39629</guid>

					<description><![CDATA[Adobe&#039;s accursed eBook DRM is just the worst. Not only does it lock up books that you have purchased - but it&#039;s impossible to use sensibly on Linux.  Sure, you can futz around with Docker, WINE, and old versions of Python - and if you&#039;re lucky, you might get a book out of it.  I wasn&#039;t quite so lucky. I wanted to see if I could download an ePub without using Adobe Digital Editions. Spoilers! I…]]></description>
										<content:encoded><![CDATA[<p>Adobe's accursed eBook DRM is just the worst. Not only does it lock up books that you have purchased - but it's impossible to use sensibly on Linux.</p>

<p>Sure, you can futz around with <a href="https://github.com/timakro/adobe_diged_docker">Docker, WINE, and old versions of Python</a> - and if you're lucky, you might get a book out of it.</p>

<p>I wasn't quite so lucky. I wanted to see if I could download an ePub without using Adobe Digital Editions. Spoilers! I couldn't. But this is what I found.</p>

<h2 id="the-first-acsm-file"><a href="https://shkspr.mobi/blog/2021/07/a-brief-look-at-acsm-files/#the-first-acsm-file">The First ACSM file</a></h2>

<p>When you buy an eBook, the vendor sends you a <code>.acsm</code> file. Adobe Content Server Message is a simple XML file. This is what it looks like and what each line means:</p>

<pre><code class="language-XML">&lt;fulfillmentToken fulfillmentType="buy" auth="user" xmlns="http://ns.adobe.com/adept"&gt;
  &lt;distributor&gt;urn:uuid:b479af7f-09bf-48f5-a6c6-...&lt;/distributor&gt;
  &lt;operatorURL&gt;http://drm.firebrandtech.com/fulfillment&lt;/operatorURL&gt;
  &lt;transaction&gt;67809895895d46aab...&lt;/transaction&gt;
  &lt;expiration&gt;2021-07-19T18:55:59-04:00&lt;/expiration&gt;
</code></pre>

<p>This states I've purchased the book, who distributes it, where the download server is, and some metadata</p>

<p>Next, metadata about the book:</p>

<pre><code class="language-XML">  &lt;resourceItemInfo&gt;
    &lt;resource&gt;urn:uuid:77d79621-0e96-4f4f-8fee-...&lt;/resource&gt;
    &lt;resourceItem&gt;0&lt;/resourceItem&gt;
    &lt;metadata&gt;
      &lt;dc:title xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;The End of Bias&lt;/dc:title&gt;
      &lt;dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;Jessica Nordell&lt;/dc:creator&gt;
      &lt;dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;Granta Publications&lt;/dc:publisher&gt;
      &lt;dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;urn:ean:9781846276774&lt;/dc:identifier&gt;
      &lt;dc:format xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;application/pdf&lt;/dc:format&gt;
    &lt;/metadata&gt;
    &lt;licenseToken&gt;
      &lt;resource&gt;urn:uuid:77d79621-0e96-4f4f-8fee-...&lt;/resource&gt;
      &lt;permissions&gt;
        &lt;display/&gt;
        &lt;excerpt/&gt;
        &lt;print/&gt;
        &lt;play/&gt;
      &lt;/permissions&gt;
    &lt;/licenseToken&gt;
  &lt;/resourceItemInfo&gt;
</code></pre>

<p>Finally, a digital signature:</p>

<pre><code class="language-XML">  &lt;hmac&gt;rL4Ttn7ASp16Y4...=&lt;/hmac&gt;
&lt;/fulfillmentToken&gt;
</code></pre>

<h2 id="the-second-acsm-file"><a href="https://shkspr.mobi/blog/2021/07/a-brief-look-at-acsm-files/#the-second-acsm-file">The Second ACSM file</a></h2>

<p>When you open the <code>.acsm</code> file in Adobe Digital Editions (ADE), the software creates a new <code>.acsm</code> file.  This one is signed with the key that Adobe generates when you register with it.  This is what the file looks like and what each line means:</p>

<p>First, information about me as a user, and my device:</p>

<pre><code class="language-XML">&lt;fulfill xmlns="http://ns.adobe.com/adept"&gt;
  &lt;user&gt;urn:uuid:99b1e32d-5b39-4968-8ef6-c5cb6a739ec8&lt;/user&gt;
  &lt;device&gt;urn:uuid:ac790662-5da0-4075-aee2-99b3c4592619&lt;/device&gt;
  &lt;deviceType&gt;standalone&lt;/deviceType&gt;
</code></pre>

<p>Then a repeat of the original <code>.acsm</code>:</p>

<pre><code class="language-XML">  &lt;fulfillmentToken fulfillmentType="buy" auth="user"&gt;
    &lt;distributor&gt;urn:uuid:b479af7f-09bf-48f5-a6c6-...&lt;/distributor&gt;
    &lt;operatorURL&gt;http://drm.firebrandtech.com/fulfillment&lt;/operatorURL&gt;
    &lt;transaction&gt;67809895895d46...&lt;/transaction&gt;
    &lt;expiration&gt;2021-07-19T18:55:59-04:00&lt;/expiration&gt;
    &lt;resourceItemInfo&gt;
      &lt;resource&gt;urn:uuid:77d79621-0e96-4f4f-8fee-...&lt;/resource&gt;
      &lt;resourceItem&gt;0&lt;/resourceItem&gt;
      &lt;metadata&gt;
        &lt;dc:title xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;The End of Bias&lt;/dc:title&gt;
        &lt;dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;Jessica Nordell&lt;/dc:creator&gt;
        &lt;dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;Granta Publications&lt;/dc:publisher&gt;
        &lt;dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;urn:ean:9781846276774&lt;/dc:identifier&gt;
        &lt;dc:format xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;application/pdf&lt;/dc:format&gt;
      &lt;/metadata&gt;
      &lt;licenseToken&gt;
        &lt;resource&gt;urn:uuid:77d79621-0e96-4f4f-8fee-...&lt;/resource&gt;
        &lt;permissions&gt;
          &lt;display/&gt;
          &lt;excerpt/&gt;
          &lt;print/&gt;
          &lt;play/&gt;
        &lt;/permissions&gt;
      &lt;/licenseToken&gt;
    &lt;/resourceItemInfo&gt;
</code></pre>

<p>Then, a <em>different</em> HMAC:</p>

<pre><code class="language-XML">    &lt;hmac&gt;rL4Ttn7ASp16...=&lt;/hmac&gt;
  &lt;/fulfillmentToken&gt;
</code></pre>

<p>And, finally, another digital signature</p>

<pre><code class="language-XML">  &lt;signature&gt;znoLnR2A4wG1uE85oXPYzSZjTRNo76ctgfR8COY8nlNTCcPge9O6VeB5UY...=&lt;/signature&gt;
&lt;/fulfill&gt;
</code></pre>

<h2 id="posting-the-file"><a href="https://shkspr.mobi/blog/2021/07/a-brief-look-at-acsm-files/#posting-the-file">POSTING the file</a></h2>

<p>Digital Editions then posts the new <code>.acsm</code> file to the DRM server mentioned.  It replies with a location where the file can be downloaded from.  In this case:</p>

<pre><code class="language-txt">http://drm.firebrandtech.com/media/77d79621-0e96-4f4f-8fee-....pdf
</code></pre>

<p>That's literally just the resource's UUID as the filename.  It can be downloaded and opened in ADE.</p>

<h2 id="signing-the-file-yourself"><a href="https://shkspr.mobi/blog/2021/07/a-brief-look-at-acsm-files/#signing-the-file-yourself">Signing the file yourself</a></h2>

<p>So, if you've downloaded the first <code>.acsm</code> file and have your encryption keys extracted from ADE you can sign it yourself, right?</p>

<p>I dunno. I'm no good at reverse engineering binaries. I suspect so. ADE is a Shockwave / Flash app - so I doubt it has anything too taxing in there - but it is beyond my skillset.</p>

<h2 id="further-reading"><a href="https://shkspr.mobi/blog/2021/07/a-brief-look-at-acsm-files/#further-reading">Further Reading</a></h2>

<ul>
<li><a href="https://github.com/gedonder/book">gedonder's notes on ACSM</a></li>
<li><a href="https://karl-voit.at/2017/08/26/ADE-error-2038/">Karl Voit's rant about ADE</a></li>
</ul>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=39629&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2021/07/a-brief-look-at-acsm-files/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[iToldYouSo]]></title>
		<link>https://shkspr.mobi/blog/2012/08/itoldyouso/</link>
					<comments>https://shkspr.mobi/blog/2012/08/itoldyouso/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 13 Aug 2012 21:14:20 +0000</pubDate>
				<category><![CDATA[mobile]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[BBC]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[iplayer]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=6216</guid>

					<description><![CDATA[Two years ago, a bunch of smart people told the BBC that its plans to build iPlayer for Android on Adobe Flash was nuts.  We argued loudly, passionately, deployed logic and reason, and provided specific technical details.  Naturally, we were ignored.  Sure, Flash was only on a few high end devices now, but the BBC were confident that Flash would be soon be available on all Android devices and our …]]></description>
										<content:encoded><![CDATA[<p>Two years ago, <a href="http://www.bbc.co.uk/blogs/bbcinternet/2010/06/bbc_iplayer_on_mobile_a_new_ve.html">a bunch of smart people told the BBC that its plans to build iPlayer for Android on Adobe Flash was nuts</a>.</p>

<p>We argued loudly, passionately, deployed logic and reason, and provided specific technical details.</p>

<p>Naturally, we were ignored.</p>

<p>Sure, Flash was only on a few high end devices now, but the BBC were confident that Flash would be soon be available on all Android devices and our perceived problems would evaporate.</p>

<p>Naturally, reality decided to ignore their wishful thinking.</p>

<p>Two years and one week after the BBC announced its Flash for Android strategy, <a href="https://web.archive.org/web/20120702080349/http://m.engadget.com/2012/06/28/adobe-confirms-it-wont-support-flash-on-android-4-1/">Adobe announced it was killing Flash for Android</a>.</p>

<p>High end Android devices like the Nexus - and any device running Android 4.1 would be incapable of running Flash. So there was no way to use iPlayer.</p>

<blockquote class="social-embed" id="social-embed-235083606605824001" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/BBCiPlayer" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-square" src="data:image/webp;base64,UklGRnoBAABXRUJQVlA4IG4BAACQBwCdASowADAAPrVUpk4nJKOiI4oA4BaJQBn8VFQWBRsWQIZx46bO1l3LT8I2g2xqBnltPBLtIQFKXnZL1dZDQzv3eRAA/v6G6EpSP25Tgl6hbRsJ2I60F49v72n/XfSsNse3rGDCm2OdeAcYFFg7QLImaW1s1yEK8+07VuCFO7skrPOUOzaT/m8HQu2vA8YdCutiEfljCYEZjaj98PeYAPyjjU9VL5Lh9+fRFJEp97Pvzx7j5G0OnFm4r5HCXh1hsDaf58b1UIJ6Bke/XM14JMDrCw6JyGTir5p7WwH2tQc1jP7z3f0y/0xtTpKhkzvifDwgdpbGpey3OhHqJHRmHDYFZ7rP4S41KRFYbXa6to8SVKf2Uf42g5bxd3h1OP4CK2mjhw2YykHvFE7Cd7/L8EBR33BhJMNRQbOz96hDIvY3lNfo5s10UbIeQDxBx9MrstH7Ibvi4oeVEKQMUqUmtaiCFuo6kVJNOboAAAA=" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">BBC iPlayer</p>@BBCiPlayer</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody">For those asking about Nexus 7 / Jelly Bean 4.1 - we are testing the app and will be releasing an update soon. Thanks for your patience.</section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/BBCiPlayer/status/235083606605824001"><span aria-label="2 likes" class="social-embed-meta">❤️ 2</span><span aria-label="10 replies" class="social-embed-meta">💬 10</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2012-08-13T18:41:14.000Z" itemprop="datePublished">18:41 - Mon 13 August 2012</time></a></footer></blockquote>

<p>This failure is exactly what happens when you choose vendor driven proprietary "solutions" rather than established and open standards.</p>

<p>This embarrassing turn of events is exactly what happens when you refuse to listen to the geeks making logical arguments.</p>

<p>This monumental cock-up over the Olympics is exactly what happens when you refuse to engage with reality and let prejudice drive your decision making process.</p>

<p>Here are the facts:</p>

<ul><li>Most Android devices cannot use the Flash based iPlayer app. </li>
<li>Mobile Flash is now dead for future phones and tablets. </li>
<li>Android devices can play <em>exactly the same files as those served to the iPhone via iPlayer</em>. </li>
</ul>

<p>So why not just serve up the iPhone's MP4 files to any device which can play them? The BBC <strong>refuse</strong> to answer that simple question.</p>

<p>Want to know something funny? I was blogging about <a href="https://shkspr.mobi/blog/2008/03/bbc-iplayer-on-your-phone-in-4-easy-steps-and-2-hard-ones/">how to deliver iPlayer's iPhone streams to other models of mobile in March 2008</a>!</p>

<p>Plus ça change.</p>

<p>We can only guess what shenanigans were involved with the BBC's original decision to bet the Android farm on Flash.</p>

<p>Perhaps now our BBC will pay more attention to the geeks who care so much about it.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=6216&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2012/08/itoldyouso/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
	</channel>
</rss>
