<?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>drm &#8211; Terence Eden’s Blog</title>
	<atom:link href="https://shkspr.mobi/blog/tag/drm/feed/" rel="self" type="application/rss+xml" />
	<link>https://shkspr.mobi/blog</link>
	<description>Regular nonsense about tech and its effects 🙃</description>
	<lastBuildDate>Sun, 08 Mar 2026 09:38:24 +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>drm &#8211; Terence Eden’s Blog</title>
	<link>https://shkspr.mobi/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title><![CDATA[Improving PixelMelt's Kindle Web Deobfuscator]]></title>
		<link>https://shkspr.mobi/blog/2025/10/improving-pixelmelts-kindle-web-deobfuscator/</link>
					<comments>https://shkspr.mobi/blog/2025/10/improving-pixelmelts-kindle-web-deobfuscator/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 19 Oct 2025 11:34:37 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[ebooks]]></category>
		<category><![CDATA[kindle]]></category>
		<category><![CDATA[python]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=64017</guid>

					<description><![CDATA[A few days ago, someone called PixelMelt published a way for Amazon&#039;s customers to download their purchased books without DRM. Well… sort of.  In their post &#34;How I Reversed Amazon&#039;s Kindle Web Obfuscation Because Their App Sucked&#34; they describe the process of spoofing a web browser, downloading a bunch of JSON files, reconstructing the obfuscated SVGs used to draw individual letters, and running O…]]></description>
										<content:encoded><![CDATA[<p>A few days ago, someone called PixelMelt published a way for Amazon's customers to download their purchased books without DRM. Well… <em>sort of</em>.</p>

<p>In their post "<a href="https://blog.pixelmelt.dev/kindle-web-drm/">How I Reversed Amazon's Kindle Web Obfuscation Because Their App Sucked</a>" they describe the process of spoofing a web browser, downloading a bunch of JSON files, reconstructing the obfuscated SVGs used to draw individual letters, and running OCR on them to extract text.</p>

<p>There were a few problems with this approach.</p>

<p>Firstly, the downloader was hard-coded to only work with the .com site. That fix was simple - do a search and replace on <code>amazon.com</code> with <code>amazon.co.uk</code>. Easy!</p>

<p>But the harder problem was with the OCR. The code was designed to visually centre each extracted glyph. That gives a nice amount of whitespace around the character which makes it easier for OCR to run. The only problem is that some characters are ambiguous when centred:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2025/10/centred-fs8.png" alt="Several letters drawn with vertical centering." width="1134" height="177" class="aligncenter size-full wp-image-64025">

<p>When I ran the code, lots of full-stops became midpoints, commas became apostrophes, and various other characters went a bit wonky.</p>

<p>That made the output rather hard to read. This was compounded by the way line-breaks were treated. Modern eBooks are designed to be reflowable - no matter the size of your screen, lines should only break on a new paragraph. This had forced linebreaks at the end of every displayed line - rather than at the end of a paragraph.</p>

<p>So I decided to fix it.</p>

<h2 id="a-new-approach"><a href="https://shkspr.mobi/blog/2025/10/improving-pixelmelts-kindle-web-deobfuscator/#a-new-approach">A New Approach</a></h2>

<p>I decided that OCRing an entire page would yield better results than single characters. I was (mostly) right.  Here's what a typical page looks like after de-obfuscation and reconstruction:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2025/10/sample-page.webp" alt="A page of text." width="500" height="800" class="aligncenter size-full wp-image-64027">

<p>As you can see - the typesetting is good for the body text, but skew-whiff for the title. Bold and italics are preserved. There are no links or images.</p>

<p>Here's how I did it.</p>

<h3 id="extract-the-characters"><a href="https://shkspr.mobi/blog/2025/10/improving-pixelmelts-kindle-web-deobfuscator/#extract-the-characters">Extract the characters</a></h3>

<p>As in the original code, I took the SVG path of the character and rendered it as a monochrome PNG. Rather than centring the glyph, I used the height and width provided in the <code>glyphs.json</code> file. That gave me a directory full of individual letters, numbers, punctuation marks, and ligatures. These were named by fontKey (bold, italic, normal, etc).</p>

<h3 id="create-a-blank-page"><a href="https://shkspr.mobi/blog/2025/10/improving-pixelmelts-kindle-web-deobfuscator/#create-a-blank-page">Create a blank page</a></h3>

<p>The <code>page_data_0_4.json</code> has a width and height of the page. I created a white PNG with the same dimensions. The individual characters could then be placed on that.</p>

<h3 id="resize-the-characters"><a href="https://shkspr.mobi/blog/2025/10/improving-pixelmelts-kindle-web-deobfuscator/#resize-the-characters">Resize the characters</a></h3>

<p>In the <code>page_data_0_4.json</code> each run of text has a fontKey - which allows the correct glyph to be selected. There's also a <code>fontSize</code> parameter. Most text seems to be (the ludicrously precise) <code>19.800001</code>. If a font had a different size, I temporarily scaled the glyph in proportion to 19.8.</p>

<p>Each glyph has an associated <code>xPosition</code>, along with a <code>transform</code> which gives X and Y offsets.  That allows for indenting and other text layouts.</p>

<p>The characters were then pasted on to the blank page.</p>

<p>Once every character from that page had been extracted, resized, and placed - the page was saved as a monochrome PNG.</p>

<h3 id="ocr-the-page"><a href="https://shkspr.mobi/blog/2025/10/improving-pixelmelts-kindle-web-deobfuscator/#ocr-the-page">OCR the page</a></h3>

<p><a href="https://tesseract-ocr.github.io/tessdoc/">Tesseract 5</a> is a fast, modern, and <em>reasonably</em> accurate OCR engine for Linux.</p>

<p>Running <code>tesseract page_0022.png output -l eng</code> produced a .txt file with all the text extracted.</p>

<p>For a more useful HTML style layout, the <a href="https://en.wikipedia.org/wiki/HOCR">hOCR output</a> can be used: <code>tesseract page_0022.png output -l eng hocr</code></p>

<p>Or, a PDF with embedded text: <code>tesseract page_0022.png output -l eng pdf</code></p>

<h3 id="mistakes"><a href="https://shkspr.mobi/blog/2025/10/improving-pixelmelts-kindle-web-deobfuscator/#mistakes">Mistakes</a></h3>

<p>OCR isn't infallible. Even with a high resolution image and a clear font, there were some errors.</p>

<ul>
<li>Superscript numerals for footnotes were often missing from the OCR.</li>
<li>Words can run together even if they are well spaced.</li>
<li>Tesseract can recognise bold and italic characters - but it outputs everything as plain text.</li>
</ul>

<h2 id="whats-missing"><a href="https://shkspr.mobi/blog/2025/10/improving-pixelmelts-kindle-web-deobfuscator/#whats-missing">What's missing?</a></h2>

<p>Images aren't downloaded. I took a brief look and, while there are links to them in the metadata, they're downloaded as encrypted blobs. I'm not clever enough to do anything with them.</p>

<p>The OCR can't pick out semantic meaning. Chapter headings and footnotes are rendered the same way as text.</p>

<p>Layout is flat. The image of the page might have an indent, but the outputted text won't.</p>

<h2 id="whats-next"><a href="https://shkspr.mobi/blog/2025/10/improving-pixelmelts-kindle-web-deobfuscator/#whats-next">What's next?</a></h2>

<p>This is very far from perfect. It can give you a visually <em>similar</em> layout to a book you have purchased from Amazon. But it won't be reflowable.</p>

<p>The text will be <em>reasonably</em> accurate. But there will be plenty of mistakes.</p>

<p>You can get an HTML layout with hOCR. But it will be missing formatting and links.</p>

<p>Processing all the JSON files and OCRing all the images is <em>relatively</em> quick. But tweaking and assembling is still fairly manual.</p>

<p>There's nothing particularly clever about what I've done. The original code didn't come with an open source software licence, so I am unable to share my changes - but any moderately competent programmer could recreate this.</p>

<p>Personally, I've just stopped buying books from Amazon. I find that <a href="https://shkspr.mobi/blog/2025/02/automatic-kobo-and-kindle-ebook-arbitrage/">Kobo is often cheaper</a> and their DRM is easy to bypass. But if you have many books trapped in Amazon - or a book is only published there - this is a barely adequate way to liberate it for your personal use.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=64017&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2025/10/improving-pixelmelts-kindle-web-deobfuscator/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Extracting content from an LCP "protected" ePub]]></title>
		<link>https://shkspr.mobi/blog/2025/03/towards-extracting-content-from-an-lcp-protected-epub/</link>
					<comments>https://shkspr.mobi/blog/2025/03/towards-extracting-content-from-an-lcp-protected-epub/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 16 Mar 2025 12:34:57 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[ebooks]]></category>
		<category><![CDATA[epub]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=58843</guid>

					<description><![CDATA[As Cory Doctorow once said &#34;Any time that someone puts a lock on something that belongs to you but won&#039;t give you the key, that lock&#039;s not there for you.&#34;  But here&#039;s the thing with the LCP DRM scheme; they do give you the key! As I&#039;ve written about previously, LCP mostly relies on the user entering their password (the key) when they want to read the book. Oh, there&#039;s some deep cryptographic…]]></description>
										<content:encoded><![CDATA[<p>As Cory Doctorow once said "<a href="https://www.bbc.co.uk/news/business-12701664">Any time that someone puts a lock on something that belongs to you but won't give you the key, that lock's not there for you.</a>"</p>

<p>But here's the thing with the LCP DRM scheme; they <em>do</em> give you the key! As <a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/">I've written about previously</a>, LCP mostly relies on the user entering their password (the key) when they want to read the book. Oh, there's some deep cryptographic magic in the background but, ultimately, the key is sat on your computer waiting to be found.  Of course, cryptography is Very Hard™ which make retrieving the key almost impossible - so perhaps we can use a different technique to extract the unencrypted content?</p>

<p>One popular LCP app is <a href="https://thorium.edrlab.org/en/">Thorium</a>. It is an <a href="https://www.electronjs.org/">Electron Web App</a>. That means it is a bundled browser running JavaScript. That also means it can trivially be debugged. The code is running on your own computer, it doesn't touch anyone else's machine. There's no reverse engineering. No cracking of cryptographic secrets. No circumvention of any technical control. It doesn't reveal any <a href="https://en.wikipedia.org/wiki/Illegal_number">illegal numbers</a>. It doesn't jailbreak anything. We simply ask the reader to give us the content we've paid for - and it agrees.</p>

<h2 id="here-be-dragons"><a href="https://shkspr.mobi/blog/2025/03/towards-extracting-content-from-an-lcp-protected-epub/#here-be-dragons">Here Be Dragons</a></h2>

<p>This is a manual, error-prone, and tiresome process.  This cannot be used to automatically remove DRM.  I've only tested this on Linux. It must only be used on books that you have legally acquired. I am using it for research and private study.</p>

<p>This uses <a href="https://github.com/edrlab/thorium-reader/releases/tag/v3.1.0">Thorium 3.1.0 AppImage</a>.</p>

<p>First, extract the application:</p>

<pre><code class="language-bash">./Thorium-3.1.0.AppImage --appimage-extract
</code></pre>

<p>That creates a directory called <code>squashfs-root</code> which contains all the app's code.</p>

<p>The Thorium app can be run with remote debugging enabled by using:</p>

<pre><code class="language-bash">./squashfs-root/thorium --remote-debugging-port=9223 --remote-allow-origins=*
</code></pre>

<p>Within the Thorium app, open up the book you want to read.</p>

<p>Open up Chrome and go to <code>http://localhost:9223/</code> - you will see a list of Thorium windows. Click on the link which relates to your book.</p>

<p>In the Thorium book window, navigate through your book. In the debug window, you should see the text and images pop up.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2025/03/debug-fs8.png" alt="Chrome debug screen." width="800" height="298" class="aligncenter size-full wp-image-58845">

<p>In the debug window's "Content" tab, you'll be able to see the images and HTML that the eBook contains.</p>

<h2 id="images"><a href="https://shkspr.mobi/blog/2025/03/towards-extracting-content-from-an-lcp-protected-epub/#images">Images</a></h2>

<p>The images are the full resolution files decrypted from your ePub. They can be right-clicked and saved from the developer tools.</p>

<h2 id="files"><a href="https://shkspr.mobi/blog/2025/03/towards-extracting-content-from-an-lcp-protected-epub/#files">Files</a></h2>

<p>An ePub file is just a zipped collection of files. Get a copy of your ePub and rename it to <code>whatever.zip</code> then extract it. You will now be able to see the names of all the files - images, css, fonts, text, etc - but their contents will be encrypted, so you can't open them.</p>

<p>You can, however, give their filenames to the Electron app and it will read them for you.</p>

<h2 id="images"><a href="https://shkspr.mobi/blog/2025/03/towards-extracting-content-from-an-lcp-protected-epub/#images">Images</a></h2>

<p>To get a Base64 encoded version of an image, run this command in the debug console:</p>

<pre><code class="language-js">fetch("httpsr2://...--/xthoriumhttps/ip0.0.0.0/p/OEBPS/image/whatever.jpg") .then(response =&gt; response.arrayBuffer())
  .then(buffer =&gt; {
    let base64 = btoa(
      new Uint8Array(buffer).reduce((data, byte) =&gt; data + String.fromCharCode(byte), '')
    );
    console.log(`data:image/jpeg;base64,${base64}`);
  });
</code></pre>

<p><a href="https://github.com/w3c/epub-specs/issues/1888#issuecomment-958439051">Thorium uses the <code>httpsr2</code> URl scheme</a> - you can find the exact URl by looking at the content tab.</p>

<h2 id="css"><a href="https://shkspr.mobi/blog/2025/03/towards-extracting-content-from-an-lcp-protected-epub/#css">CSS</a></h2>

<p>The CSS can be read directly and printed to the console:</p>

<pre><code class="language-js">fetch("httpsr2://....--/xthoriumhttps/ip0.0.0.0/p/OEBPS/css/styles.css").then(response =&gt; response.text())
  .then(cssText =&gt; console.log(cssText));
</code></pre>

<p>However, it is <em>much</em> larger than the original CSS - presumably because Thorium has injected its own directives in there.</p>

<h2 id="metadata"><a href="https://shkspr.mobi/blog/2025/03/towards-extracting-content-from-an-lcp-protected-epub/#metadata">Metadata</a></h2>

<p>Metadata like the <a href="https://wiki.mobileread.com/wiki/NCX">NCX</a> and the <a href="https://opensource.com/article/22/8/epub-file">OPF</a> can also be decrypted without problem:</p>

<pre><code class="language-js">fetch("httpsr2://....--/xthoriumhttps/ip0.0.0.0/p/OEBPS/content.opf").then(response =&gt; response.text())
  .then(metadata =&gt; console.log(metadata));
</code></pre>

<p>They have roughly the same filesize as their encrypted counterparts - so I don't think anything is missing from them.</p>

<h2 id="fonts"><a href="https://shkspr.mobi/blog/2025/03/towards-extracting-content-from-an-lcp-protected-epub/#fonts">Fonts</a></h2>

<p>If a font has been used in the document, it should be available. It can be grabbed as Base64 encoded text to the console using:</p>

<pre><code class="language-js">fetch("httpsr2://....--/xthoriumhttps/ip0.0.0.0/p/OEBPS/font/Whatever.ttf") .then(response =&gt; response.arrayBuffer())
  .then(buffer =&gt; {
    let base64 = btoa(
      new Uint8Array(buffer).reduce((data, byte) =&gt; data + String.fromCharCode(byte), '')
    );
    console.log(`${base64}`);
  });
</code></pre>

<p>From there it can be copied into a new file and then decoded.</p>

<h2 id="text"><a href="https://shkspr.mobi/blog/2025/03/towards-extracting-content-from-an-lcp-protected-epub/#text">Text</a></h2>

<p>The HTML of the book is also visible on the Content tab. It is <em>not</em> the original content from the ePub. It has a bunch of CSS and JS added to it. But, once you get to the body, you'll see something like:</p>

<pre><code class="language-html">&lt;body&gt;
    &lt;section epub:type="chapter" role="doc-chapter"&gt;
        &lt;h2 id="_idParaDest-7" class="ct"&gt;&lt;a id="_idTextAnchor007"&gt;&lt;/a&gt;&lt;span id="page75" role="doc-pagebreak" aria-label="75" epub:type="pagebreak"&gt;&lt;/span&gt;Book Title&lt;/h2&gt;
        &lt;div class="_idGenObjectLayout-1"&gt;
            &lt;figure class="Full-Cover-White"&gt;
                &lt;img class="_idGenObjectAttribute-1" src="image/cover.jpg" alt="" /&gt;
            &lt;/figure&gt;
        &lt;/div&gt;
        &lt;div id="page76" role="doc-pagebreak" aria-label="76" epub:type="pagebreak" /&gt;
        &lt;section class="summary"&gt;&lt;h3 class="summary"&gt;&lt;span class="border"&gt;SUMMARY&lt;/span&gt;&lt;/h3&gt; 
        &lt;p class="BT-Sans-left-align---p1"&gt;Lorem ipsum etc.&lt;/p&gt;
    &lt;/section&gt;
</code></pre>

<p>Which looks like plain old ePub to me.  You can use the <code>fetch</code> command as above, but you'll still get the verbose version of the xHTML.</p>

<h2 id="putting-it-all-together"><a href="https://shkspr.mobi/blog/2025/03/towards-extracting-content-from-an-lcp-protected-epub/#putting-it-all-together">Putting it all together</a></h2>

<p>If you've unzipped the original ePub, you'll see the internal directory structure. It should look something like this:</p>

<pre><code class="language-_">├── META-INF
│&nbsp;&nbsp; └── container.xml
├── mimetype
└── OEBPS
    ├── content.opf
    ├── images
    │&nbsp;&nbsp; ├── cover.jpg
    │&nbsp;&nbsp; ├── image1.jpg
    │&nbsp;&nbsp; └── image2.png
    ├── styles
    │&nbsp;&nbsp; └── styles.css
    ├── content
    │&nbsp;&nbsp; ├── 001-cover.xhtml
    │&nbsp;&nbsp; ├── 002-about.xhtml
    │&nbsp;&nbsp; ├── 003-title.xhtml
    │&nbsp;&nbsp; ├── 004-chapter_01.xhtml
    │&nbsp;&nbsp; ├── 005-chapter_02.xhtml
    │&nbsp;&nbsp; └── 006-chapter_03.xhtml
    └── toc.ncx
</code></pre>

<p>Add the extracted files into that exact structure. Then zip them. Rename the .zip to .epub. That's it. You now have a DRM-free copy of the book that you purchased.</p>

<h2 id="bonus-pdf-extraction"><a href="https://shkspr.mobi/blog/2025/03/towards-extracting-content-from-an-lcp-protected-epub/#bonus-pdf-extraction">BONUS! PDF Extraction</a></h2>

<p>LCP 2.0 PDFs are also extractable. Again, you'll need to open your purchased PDF in Thorium with debug mode active. In the debugger, you should be able to find the URl for the decrypted PDF.</p>

<p>It can be fetched with:</p>

<pre><code class="language-js">fetch("thoriumhttps://0.0.0.0/pub/..../publication.pdf") .then(response =&gt; response.arrayBuffer())
  .then(buffer =&gt; {
    let base64 = btoa(
      new Uint8Array(buffer).reduce((data, byte) =&gt; data + String.fromCharCode(byte), '')
    );
    const blob = new Blob([buffer], { type: "application/pdf" });
    const link = document.createElement("a");
    link.href = URL.createObjectURL(blob);
    link.download = "publication.pdf"; // filename for saving
    link.click();
    URL.revokeObjectURL(link.href);
  });
</code></pre>

<p>Copy the output and Base64 decode it. You'll have an unencumbered PDF.</p>

<h2 id="next-steps"><a href="https://shkspr.mobi/blog/2025/03/towards-extracting-content-from-an-lcp-protected-epub/#next-steps">Next Steps</a></h2>

<p>That's probably about as far as I am competent to take this.</p>

<p>But, for now, <a href="https://proofwiki.org/wiki/ProofWiki:Jokes/Physicist_Mathematician_and_Engineer_Jokes/Burning_Hotel#Variant_1">a solution exists</a>. If I ever buy an ePub with LCP Profile 2.0 encryption, I'll be able to manually extract what I need from it - without reverse engineering the encryption scheme.</p>

<h2 id="ethics"><a href="https://shkspr.mobi/blog/2025/03/towards-extracting-content-from-an-lcp-protected-epub/#ethics">Ethics</a></h2>

<p>Before I published this blog post, <a href="https://mastodon.social/@Edent/114155981621627317">I publicised my findings on Mastodon</a>.  Shortly afterwards, I received a LinkedIn message from someone senior in the Readium consortium - the body which has created the LCP DRM.</p>

<p>They said:</p>

<blockquote><p>Hi Terence, You've found a way to hack LCP using Thorium. Bravo!
</p><p>We certainly didn't sufficiently protect the system, we are already working on that.
</p><p>From your Mastodon messages, you want to post your solution on your blog. This is what triggers my message. 
</p><p>From a manual solution, others will create a one-click solution. As you say, LCP is a "reasonably inoffensive" protection. We managed to convince publishers (even big US publishers) to adopt a solution that is flexible for readers and appreciated by public libraries and booksellers. 
</p><p>Our gains are re-injected in open-source software and open standards (work on EPUB and Web Publications). 
</p><p>If the DRM does not succeed, harder DRMs (for users) will be tested.
</p><p>I let you think about that aspect</p></blockquote>

<p>I did indeed think about that aspect. A day later I replied, saying:</p>

<blockquote><p>Thank you for your message.

</p><p>Because Readium doesn't freely licence its DRM, it has an adverse effect on me and other readers like me.
</p><ul>    <li>My eReader hardware is out of support from the manufacturer - it will never receive an update for LCP support.</li>
    <li>My reading software (KOReader) have publicly stated that they cannot afford the fees you charge and will not be certified by you.</li>

    <li>Kobo hardware cannot read LCP protected books.</li>

    <li>There is no guarantee that LCP compatible software will be released for future platforms.</li></ul>
<p>In short, I want to read my books on <em>my</em> choice of hardware and software; not yours.

</p><p>I believe that everyone deserves the right to read on their platform of choice without having to seek permission from a 3rd party.

</p><p>The technique I have discovered is basic. It is an unsophisticated use of your app's built-in debugging functionality. I have not reverse engineered your code, nor have I decrypted your secret keys. I will not be publishing any of your intellectual property.

</p><p>In the spirit of openness, I intend to publish my research this week, alongside our correspondence.
</p></blockquote>

<p>Their reply, shortly before publication, contained what I consider to be a crude attempt at emotional manipulation.</p>

<blockquote><p>Obviously, we are on different sides of the channel on the subject of DRMs. 

</p><p>I agree there should be many more LCP-compliant apps and devices; one hundred is insufficient. KOReader never contacted us: I don't think they know how low the certification fee would be (pricing is visible on the EDRLab website). FBReader, another open-source reading app, supports LCP on its downloadable version. Kobo support is coming. Also, too few people know that certification is free for specialised devices (e.g. braille and audio devices from Hims or Humanware). 
</p><p>We were planning to now focus on new accessibility features on our open-source Thorium Reader, better access to annotations for blind users and an advanced reading mode for dyslexic people. Too bad; disturbances around LCP will force us to focus on a new round of security measures, ensuring the technology stays useful for ebook lending (stop reading after some time) and as a protection against oversharing. 
</p><p>You can, for sure, publish information relative to your discoveries to the extent UK laws allow. After study, we'll do our best to make the technology more robust. If your discourse represents a circumvention of this technical protection measure, we'll command a take-down as a standard procedure. </p></blockquote>

<p>A bit of a self-own to admit that they failed to properly prioritise accessibility!</p>

<p>Rather than rebut all their points, I decided to keep my reply succinct.</p>

<blockquote><p>As you have raised the possibility of legal action, I think it is best that we terminate this conversation.</p></blockquote>

<p>I sincerely believe that this post is a legitimate attempt to educate people about the deficiencies in Readium's DRM scheme. Both readers and publishers need to be aware that their Thorium app easily allows access to unprotected content.</p>

<p>I will, of course, publish any further correspondence related to this issue.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=58843&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2025/03/towards-extracting-content-from-an-lcp-protected-epub/feed/</wfw:commentRss>
			<slash:comments>17</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Some thoughts on LCP eBook DRM]]></title>
		<link>https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/</link>
					<comments>https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Fri, 14 Mar 2025 12:34:22 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[ereader]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=58799</guid>

					<description><![CDATA[There&#039;s a new(ish) DRM scheme in town! LCP is Readium&#039;s &#34;Licensed Content Protection&#34;.  At the risk of sounding like an utter corporate stooge, I think it is a relatively inoffensive and technically interesting DRM scheme. Primarily because, once you&#039;ve downloaded your DRM-infected book, you don&#039;t need to rely on an online server to unlock it.  How does it work?  When you buy a book, your vendor…]]></description>
										<content:encoded><![CDATA[<p>There's a new(ish) DRM scheme in town! LCP is <a href="https://readium.org/lcp-specs/">Readium's "Licensed Content Protection"</a>.</p>

<p>At the risk of sounding like an utter corporate stooge, I think it is a relatively inoffensive and technically interesting DRM scheme. Primarily because, once you've downloaded your DRM-infected book, you don't need to rely on an online server to unlock it.</p>

<h2 id="how-does-it-work"><a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#how-does-it-work">How does it work?</a></h2>

<p>When you buy<sup id="fnref:licence"><a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#fn:licence" class="footnote-ref" title="*sigh* yeah, technically licencing." role="doc-noteref">0</a></sup> a book, your vendor sends you a <code>.lcpl</code> file. This is a plain JSON file which contains some licencing information and a link to download the ePub.</p>

<p>Here's a recent one of mine (truncated for legibility):</p>

<pre><code class="language-json">{
    "issued": "2025-03-04T12:34:56Z",
    "encryption": {
        "profile": "http://readium.org/lcp/profile-2.0",
        "content_key": {
            "algorithm": "http://www.w3.org/2001/04/xmlenc#aes256-cbc",
            "encrypted_value": "+v0+dDvngHcD...qTZgmdCHmgg=="
        },
        "user_key": {
            "algorithm": "http://www.w3.org/2001/04/xmlenc#sha256",
            "text_hint": "What is your username?",
            "key_check": "mAGgB...buDPQ=="
        }b
    },
    "links": [
        {
            "rel": "publication",
            "href": "https://example.com/96514dea-...-b26601238752",
            "type": "application/epub+zip",
            "title": "96514dea-...-b26601238752.epub",
            "length": 14364567,
            "hash": "be103c0e4d4de...fb3664ecb31be8"
        },
        {
            "rel": "status",
            "href": "https://example.com/api/v1/lcp/license/fdcddcc9-...-f73c9ddd9a9a/status",
            "type": "application/vnd.readium.license.status.v1.0+json"
        }
    ],
    "signature": {
        "certificate": "MIIDLTCC...0faaoCA==",
        "value": "ANQuF1FL.../KD3cMA5LE",
        "algorithm": "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha256"
    }
}
</code></pre>

<p>Here's how the DRM works.</p>

<ol>
<li>Your client downloads the ePub from the <code>links</code> section.</li>
<li>An ePub is just a zip file full of HTML files, the client unzips it.

<ul>
<li>The metadata and cover image are <strong>not</strong> encrypted - so you can always see the title and cover. All the rest - HMTL, images, fonts, etc - are encrypted with AES 256 CBC.</li>
</ul></li>
<li>The <code>.lcpl</code> file is placed in the <code>META-INF</code> directory and renamed <code>license.lcpl</code>.</li>
<li>A new ePub is created by re-zipping the files together.</li>
</ol>

<p>When your client opens the encrypted ePub, it asks you for a password. If you don't know it, you get the hint given in the LCPL file. In this case, it is my username for the service where I bought the book.</p>

<p>The password is used by Readium's super-secret <a href="https://en.wikipedia.org/wiki/Binary_blob">BLOB</a> to decrypt the file.  You can then read the book.</p>

<p>But here's the nifty thing, the encrypted file is readable by <em>any</em> certified app.  I used the LCPL to download the book in two different readers. I unzipped both of them and they were bit-for-bit identical. I copied the book from one reader to another, and it was read fine.  I built my own by downloading the ePub and manually inserting the licence file - and it was able to be opened by both readers.</p>

<h2 id="apps-and-certification"><a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#apps-and-certification">Apps and Certification</a></h2>

<p>In order for this to work, the app needs to be certified and to include a binary BLOB which does all the decryption. <a href="https://readium.org/awesome-readium/">Readium have a list of readers which are available</a>, and there are plenty for all platforms.</p>

<p>On Linux, I tried <a href="https://thorium.edrlab.org/en/">Thorium</a> and <a href="https://fbreader.org/linux/packages">FBReader</a>. Both were absolutely fine. For my eInk Android, I used <a href="https://fbreader.org/android">FBReader Premium</a> (available for free if you don't have Google Play installed). Again, it was a decent reading experience.</p>

<p>I took the file created by Thorium on Linux, copied it to Android, set the Android offline, typed in my password, and the book opened.</p>

<h2 id="open-source-and-drm"><a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#open-source-and-drm">Open Source and DRM</a></h2>

<p>To be fair to Readium, <a href="https://github.com/readium/">they publish a <em>lot</em> of Open Source code</a> and the <a href="https://readium.org/lcp-specs/">specification</a> seems well documented.</p>

<p>But the proprietary BLOB used for the decryption is neither <em>libre</em> -</p>

<blockquote><p><a href="https://github.com/edrlab/thorium-reader">Thorium Reader supports LCP-protected publications via an additional software component which is not available in this open-source codebase</a></p></blockquote>

<p>Nor <em>gratis</em> -</p>

<blockquote><p><a href="https://www.edrlab.org/projects/readium-lcp/pricing/">Our pricing is structured into tiers based on a company’s revenue</a></p></blockquote>

<h2 id="whats-the-worst-that-could-happen-with-this-drm"><a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#whats-the-worst-that-could-happen-with-this-drm">What's the worst that could happen with this DRM?</a></h2>

<p>Ultimately, our fear of DRM comes down to someone else being able to control how, when, and even if we can read our purchased books.  Could that happen here?</p>

<p>I'm going to go with a cautious <em>maybe</em>.</p>

<h3 id="positives"><a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#positives">Positives</a></h3>

<p>Once downloaded, the ePub is under your control. Back it up on a disk, store it in the cloud, memorise the bytes. It is yours and can't be forcibly deleted.  You can even share it with a friend! But you'd have to tell them the book's password which would make it trivially linkable to you if it ever got shared widely.</p>

<p>At the moment, any LCP book reading app will open it. Even if your licence is somehow revoked, apps don't <em>need</em> to go online. So there is no checking for revocation.</p>

<p><a href="https://www.w3.org/publishing/epub3/">ePub is an open standard</a> made up of zipped HTML, CSS, images, and fonts. An <em>unencrypted</em> ePub should be readable far into the future. LCP is a (paid for) <a href="https://www.iso.org/standard/84957.html">ISO Standard</a> which is maintained by a <a href="https://readium.org/membership/overview/">foundation</a> which is primarily run by <a href="https://www.edrlab.org/about/">an EU non-profit</a>. So, hopefully, the DRM scheme will also be similarly long-lived.</p>

<p>Because the underlying book is an ePub, it should have the same accessibility features as a normal ePub. No restrictions on font-sizes, text-to-speech, or anything similar.</p>

<p>Privacy. The BLOB only checks with the <em>issuer</em> of the book whether the licence is valid. That's useful for library books where you are allowed to borrow the text for a specific time. If you bought books from a dozen sources, there's no central server which tracks what you're reading across all services.</p>

<h3 id="downsides"><a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#downsides">Downsides</a></h3>

<p>Will the proprietary BLOB work in the future? If it never gets ported to Android 2027 or TempleOS, will your books be rendered unreadable on your chosen platform?</p>

<p>The LCPL file contains dates and signatures related to the licence. Perhaps the BLOB is instructed to check the licence after a certain period of time. Will your books refuse to open if the BLOB hasn't gone online for a few years?</p>

<p>If you forget your password, you can't open the book. Thankfully, the LCPL does contain a "hint" section and a link back to the retailer.  However, it's up to you to securely store your books' passwords.</p>

<p>The book seller knows what device you're reading on. When you load the LCPL file into a reader, the app downloads the ePub and sends some data back to the server. The URl is in the <code>status</code> section of the LCPL file. After opening the file on a few apps, mine looked like:</p>

<pre><code class="language-json">{
    "id": "fdcddcc9-...-f73c9ddd9a9a",
    "status": "active",
    "updated": {
        "license": "2025-03-04T12:34:56Z",
        "status": "2025-03-09T20:20:20Z"
    },
    "message": "The license is in active state",
    "links": [
        {
            "rel": "license",
            "href": "https://example.com/lcp/license/fdcddcc9-...-f73c9ddd9a9a",
            "type": "application/vnd.readium.lcp.license.v1.0+json"
        }
    ],
    "events": [
        {
            "name": "Thorium",
            "timestamp": "2025-03-04T15:49:37Z",
            "type": "register",
            "id": "7d248cae-...-c109b887b7dd"
        },
        {
            "name": "FBReader@framework",
            "timestamp": "2025-03-08T22:36:26Z",
            "type": "register",
            "id": "46838356-...-73132673"
        },
        {
            "name": "FBReader Premium@Boyue Likebook-K78W",
            "timestamp": "2025-03-09T14:54:26Z",
            "type": "register",
            "id": "e351...3b0a"
        }
    ]
}
</code></pre>

<p>So the book seller knows the apps I use and, potentially, some information about the platform they're running on. They also know when I downloaded the book. They may also know if I've lent a book to a friend.</p>

<p>It is trivial to bypass this just by downloading the ePub manually and inserting the LCPL file as above.</p>

<h2 id="drm-removal"><a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#drm-removal">DRM Removal</a></h2>

<p>As I've shown before, you can use <a href="https://shkspr.mobi/blog/2021/12/quick-and-dirty-way-to-rip-an-ebook-from-android/">OCR to rip an eBook</a>. Take a bunch of screenshots, extract the text, done. OK, you might lose some of the semantics and footnotes, but I'm sure a bit of AI can solve that. The names of embedded fonts can easily be read from the ePub. But that's not quite the same as removing the DRM and getting the original ePub.</p>

<p>When the DeDRM project published a way to remove LCP 1.0, <a href="https://github.com/noDRM/DeDRM_tools/issues/18">they were quickly hit with legal attacks</a>. The project removed the code - although it is trivial to find on 3rd party sites. Any LCP DRM removal tool you can find at the moment is only likely to work on <a href="https://readium.org/lcp-specs/releases/lcp/latest#63-basic-encryption-profile-10">Basic Encryption Profile 1.0</a>.</p>

<p>There are now multiple different encryption profiles:</p>

<blockquote><p><a href="https://www.edrlab.org/projects/readium-lcp/encryption-profiles/">In 2024, the EDRLab Encryption Profile 1.0 was superseded by 10 new profiles, numbered “2.0” to “2.9”. Every LCP license provider chooses one randomly and can easily change the profile.</a></p></blockquote>

<p>If I'm reading <a href="https://github.com/search?q=repo%3Aedrlab/thorium-reader%20decryptPersist&amp;type=code">the source code</a> correctly<sup id="fnref:idiot"><a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#fn:idiot" class="footnote-ref" title="Not a given! I have no particular skill in this area. If you know more, please correct me." role="doc-noteref">1</a></sup>, the user's password is SHA-256 hashed and then prefixed with a secret from the LCP code.  That is used as the decryption key for AES-256-CBC.</p>

<p>I'm sure there's some digital trickery and obfuscation in there but, at some point, the encrypted ePub is decrypted on the user's machine. Maybe it is as simple as grabbing the binary and forcing it to spit out keys. Maybe it takes some dedicated poking about in memory to grab the decrypted HTML. Given that the key is based on a known password, perhaps it can be brute-forced?</p>

<p>I'll bet someone out there has a clever idea.  After all, as was written by the prophets:</p>

<blockquote><p><a href="https://www.wired.com/2006/09/quickest-patch-ever/">trying to make digital files uncopyable is like trying to make water not wet</a><sup id="fnref:wet"><a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#fn:wet" class="footnote-ref" title="Is water wet? I dunno. Take it up with Bruce!" role="doc-noteref">2</a></sup></p></blockquote>

<div id="footnotes" role="doc-endnotes">
<hr aria-label="Footnotes">
<ol start="0">

<li id="fn:licence">
<p>*<em>sigh</em>* yeah, technically licencing.&nbsp;<a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#fnref:licence" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

<li id="fn:idiot">
<p>Not a given! I have no particular skill in this area. If you know more, please correct me.&nbsp;<a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#fnref:idiot" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

<li id="fn:wet">
<p><a href="https://www.sciencefocus.com/science/is-water-wet">Is water wet?</a> I dunno. Take it up with Bruce!&nbsp;<a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#fnref:wet" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

</ol>
</div>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=58799&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[How Blockbuster was superior to Netflix]]></title>
		<link>https://shkspr.mobi/blog/2022/12/how-blockbuster-was-superior-to-netflix/</link>
					<comments>https://shkspr.mobi/blog/2022/12/how-blockbuster-was-superior-to-netflix/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 22 Dec 2022 12:34:22 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[libraries]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=44235</guid>

					<description><![CDATA[It&#039;s a Friday night in the late 1990s and my teenaged friend group are bored.  We&#039;re not cool enough to hang about in the park drinking cider. And we&#039;re not nerdy enough to play D&#38;D.  We don&#039;t have enough money to go to the cinema.  What we do have is a Blockbuster card and, between us, just enough cash to rent a newly released movie.  Eight of us pile into the local Blockbuster and begin to…]]></description>
										<content:encoded><![CDATA[<p>It's a Friday night in the late 1990s and my teenaged friend group are bored.  We're not cool enough to hang about in the park drinking cider. And we're not nerdy enough to play D&amp;D.  We don't have enough money to go to the cinema.</p>

<p>What we <em>do</em> have is a Blockbuster card and, between us, just enough cash to rent a newly released movie.  Eight of us pile into the local Blockbuster and begin to scavenge the shelves. DVDs have yet to appear in our sleepy town, so we hold up chunky VHS boxes for appraisal.</p>

<p>"The English Patient?" "Rubbish."</p>

<p>"Trainspotting?" "Seen it."</p>

<p>"The Full Monty?" "My mum won't let me watch that."</p>

<p>"Titanic?" "Oooooh! Go on then!"</p>

<p>I took the empty carcass up to the desk. The incredibly worldly-wise 19 year old looked at us disdainfully. "Sorry mate, out of stock."</p>

<p>You see, hard as it may be to believe, the local Blockbuster franchise had underestimated the popularity of Titanic.  They'd purchased a dozen copies to rent out.  Once those walked out the door, that was it.  We could ask them to ring us when a tape was returned - but we'd be at the bottom of a long waiting list.</p>

<p>So we leafed through a few display racks and went home with the kid's film about a genie, "Shazaam". It wasn't very good, as I recall.</p>

<p>If only Netflix were like that!  Imagine if you tried to watch Stranger Things and were told that too many people were streaming the first episode.  Netflix will notify you when there's a slot available. In the meantime, why not watch "Clarissa Explains It All"?</p>

<p>Wouldn't that be brilliant! Netflix could restrict demand, make things artificially scarce, and just generally make a worse user experience for everyone.</p>

<p>Wait... no... that'd be shit!</p>

<p>And yet, that's <em>exactly</em> how digital library books work in the UK!</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2022/12/wait-list.webp" alt="Screenshot from an online library. Two Agatha Christie books are available to borrow. The other two have a wait list." width="1024" height="469" class="aligncenter size-full wp-image-44398">

<p>Look, perhaps a Netflix for books wouldn't work; it's harder to read than it is to stick on TV in the background. But there's a healthy library scene in the UK. Authors get paid when people borrow their books.  So why are libraries restricted to only loaning out a limited number of copies at once?</p>

<p>There's a part of me - a very small part - which can see the utility in this. If everyone could borrow the latest Dan Brown smash-hit all at once, would they ever explore any further? When you're told "Sorry, we don't have that - but you might like..." it could expand your reading horizons.</p>

<p>But that's a weak argument.  With an endless supply of books, people can choose what they want to read, when they want to read it.</p>

<p>There is no digital scarcity. We need to rid the world of this analogue thinking.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=44235&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2022/12/how-blockbuster-was-superior-to-netflix/feed/</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[You can't screenshot or right click this image]]></title>
		<link>https://shkspr.mobi/blog/2022/12/you-cant-screenshot-or-right-click-this-image/</link>
					<comments>https://shkspr.mobi/blog/2022/12/you-cant-screenshot-or-right-click-this-image/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sat, 10 Dec 2022 12:34:18 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[images]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=44057</guid>

					<description><![CDATA[People contact me with all sorts of weird opportunities. Some are fun. Some are not. I&#039;ve lost count of the number of NFT grifters who&#039;ve asked me to &#34;revolutionise&#34; the art space.  I&#039;m generally not a fan.  But I had one chat with someone who wanted to do something intriguing.  They were worried about people right-clicking or screenshotting their precious images and had a plan to stop that.  I…]]></description>
										<content:encoded><![CDATA[<p>People contact me with all sorts of <em>weird</em> opportunities. Some are fun. Some are not. I've lost count of the number of NFT grifters who've asked me to "revolutionise" the art space.  I'm generally not a fan.  But I had one chat with someone who wanted to do something intriguing.  They were worried about people right-clicking or screenshotting their precious images and had a plan to stop that.</p>

<p>I tried to explain to them that DRM <em>always</em> fails; you can't make data which can't be copied. I explained that artificial scarcity was harmful. They didn't care.</p>

<p>But, their proposed solution was intriguing. And, with their kind permission, I'm posting it here.  To be clear, I don't think this is <em>good</em> but I think it is vaguely interesting.</p>

<h2 id="interlacing"><a href="https://shkspr.mobi/blog/2022/12/you-cant-screenshot-or-right-click-this-image/#interlacing">Interlacing</a></h2>

<p>Back in the olden days, video was often <em>interlaced</em>. That is, the TV transmitter would broadcast the odd lines first, then the even lines. Your TV would draw the odd line then, in the millisecond before they faded away from the cathode-ray tube, draw the even lines.</p>

<p>Could we do the same with images?</p>

<p>Let's take this image of a Total Legitimate Bored Ape™
<img src="https://shkspr.mobi/blog/wp-content/uploads/2022/11/ape.png" alt="A badly drawn cartoon of a monkey in a t-shirt." width="640" height="640" class="aligncenter size-full wp-image-44063"></p>

<p>With a scrap of Python, we can knock this into two interlaced images:</p>

<pre><code class="language-python">from PIL import Image
image = Image.open("ape.png")
pixels = image.load()
image.mode = "RGBA"

for y in range(image.height) :
   if (y%2 == 1) :
      for x in range(image.width) :
         pixels[x,y] = (0,0,0,0)

image.save("ape1.png")

for y in range(image.height) :
   if (y%2 == 0) :
      for x in range(image.width) :
         pixels[x,y] = (0,0,0,0)

image.save("ape2.png")
</code></pre>

<p>Which gives us:
<img src="https://shkspr.mobi/blog/wp-content/uploads/2022/11/ape2.png" alt="Only the odd lines of the image are displayed." width="640" height="640" class="aligncenter size-full wp-image-44061" id="ape1"></p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2022/11/ape1.png" alt="Only the even lines of the image are displayed." width="640" height="640" class="aligncenter size-full wp-image-44062" id="ape2">

<p>Using JavaScript the first frame can be rendered onto a <code>&lt;canvas&gt;</code> element for a millisecond, wiped, and then the second displayed. Repeat.</p>

<p>Here's a demo of it in action - I kinda like the retro effect!</p>

<h3 id="%e2%9a%a0%ef%b8%8f-strobe-effect-warning"><a href="https://shkspr.mobi/blog/2022/12/you-cant-screenshot-or-right-click-this-image/#%e2%9a%a0%ef%b8%8f-strobe-effect-warning">⚠️ Strobe Effect Warning</a></h3>

<p><canvas id="cv" style="background-color: black;"></canvas></p>

<script>var image1  = document.getElementById("ape1"); var image2  = document.getElementById("ape2"); var canvas  = document.getElementById("cv"); canvas.width  = image1.width; canvas.height = image1.height;  var context = canvas.getContext("2d"); function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function drawInterlace() { frame = 0; while(true) { frame++; await sleep(1);  context.clearRect(0, 0, canvas.width, canvas.height); if (frame%2 == 0) {context.drawImage(image1, 0, 0); } else { context.drawImage(image2, 0, 0); } }  } drawInterlace();</script>

<p>If you right click on it, you'll only get half the image. If you take a screenshot, you'll only get half the image.  FOOLPROOF DRM!!!!!!</p>

<h2 id="expanding-the-complexity"><a href="https://shkspr.mobi/blog/2022/12/you-cant-screenshot-or-right-click-this-image/#expanding-the-complexity">Expanding the complexity</a></h2>

<p>Of course, you can <a href="https://stackoverflow.com/questions/20973528/canvas-disable-image-download">scramble an image before unscrambling it to the canvas</a> and all sort of other tricks.  You could have dozens of images rendering to the canvas in sequence.  You could draw individual pixels programmatically.  You could...</p>

<p>None of it matters of course. If you send pixels to a computer screen, they can be copied. It is possible to slow people down - but all it takes is for one person to work out how your scheme works and then it crumbles to dust.</p>

<p>As I said, I have a soft-spot for the shimmery effect. And I think it is kinda fun - in a code-golf way - to design obfuscation schemes.</p>

<p>But using anything like this for a form of digital restrictions management is daft.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=44057&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2022/12/you-cant-screenshot-or-right-click-this-image/feed/</wfw:commentRss>
			<slash:comments>14</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Liberating out-of-copyright photos from SmartFrame's DRM]]></title>
		<link>https://shkspr.mobi/blog/2022/05/liberating-out-of-copyright-photos-from-smartframes-drm/</link>
					<comments>https://shkspr.mobi/blog/2022/05/liberating-out-of-copyright-photos-from-smartframes-drm/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 15 May 2022 11:34:11 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[copyright]]></category>
		<category><![CDATA[drm]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=42639</guid>

					<description><![CDATA[During the middle of the 20th Century, the UK&#039;s Royal Air Force took thousands of photographs of the country from above. Think of it like a primitive Google Earth.  Those photographs are &#34;Crown Copyright&#34;. For photographs created before 1st June 1957, the copyright expires after 50 years.  Recently, the organisation &#34;Historic England&#34; started sharing high-resolution copies of these photos on a…]]></description>
										<content:encoded><![CDATA[<p>During the middle of the 20th Century, the UK's Royal Air Force took thousands of photographs of the country from above. Think of it like a primitive Google Earth.</p>

<p>Those photographs are "<a href="https://www.nationalarchives.gov.uk/information-management/re-using-public-sector-information/uk-government-licensing-framework/crown-copyright/">Crown Copyright</a>". For photographs <em>created</em> before 1st June 1957, the <a href="https://www.nationalarchives.gov.uk/documents/information-management/crown-copyright-flowchart.pdf">copyright expires after 50 years</a>.</p>

<p>Recently, the organisation "Historic England" started <a href="https://historicengland.org.uk/images-books/archive/collections/aerial-photos/">sharing high-resolution copies of these photos on a nifty interactive map</a>.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2022/05/Aerial-Photo-Explorer.png" alt=" Aerial Photo Explorer  You can explore over 400,000 digitised photos taken from our aerial photo collections of over 6 million photographs preserved in the Historic England Archive.  Use our nationally important collections of aerial photographs to explore your area. Find the place where you live or why not look for your favourite football ground, railway station or the places you visit?" width="849" height="678" class="aligncenter size-full wp-image-42657">

<p>But there were two problems.</p>

<p>Firstly, they claimed that the photographs were still under copyright. This (no doubt inadvertent) mistake was <a href="https://twitter.com/pigsonthewing/status/1507400294702981163">pointed out to them</a> and was eventually corrected.</p>

<blockquote class="social-embed" id="social-embed-1510239159805530121" 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/pigsonthewing" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRrYDAABXRUJQVlA4IKoDAADwEQCdASowADAAPq08nEmmIyKhMdzMAMAViWkAE5p6E/xXik6xN8Zwr7T/+F3wLlP89/2vfqakd6L/tvJJ8EWL7/r/cB8cuc/6O/6PuC/zD+s/8Lseeh3+wDbdZZIOUutWeAlrKn0vZLhoUfe59gJtXuiynqfdB/Dddl//olVMU0LjG9WXfeLJgpiIk34Ijxvl5+PHy9yoAAD+/xJ782o2s7OG+c8yViHQzcD//PJDdiXuQvetMArL7g4N6X7rcYsgDz1fd96/hGmJbkN+Z5QmPCC97b/IeP8CMhbYNwTuSVafN3PxoWesOXdtQMZznzLfs0l33lbgKtPxX1zcmPwOYniW1w/80D8d28kVwj1tJVNi4MUtiV7R72bZIW49bKFoOvjk2Mbxqt7yqcHc7LWw9YzqvGg6w4iDvJEli7OXx2r+xkn3+pUxW52dKsJuckC3g8PJcmp/p9hykuafjy1z69z1+nkvKKv57SZ8b0gUU4wepbX2w/2Zih0vrdmRQfJ4c2zQiEIwC7+G/r0gidEX/irE1+oAj9QwObbawaAKDu35rQ6Hy74Io99V7D5OnmrkeDP2hbqeiAdvlHnGPovshZUhWLcywrYomB5lrQ/3BmqnNvVf6u0ObEc9gclPAGY96PZULHDsZ3z/cm4NKpEesAm/SmEFiAWcifsPWEB6rf2j9XbFqJDffBu8tHEqi5s6A5XyiO5yz7QNDSjq4pRe2Wt9x0gkzn5Y5dpZU/9j7psMtou27d9JEzP0WV04IKvsJkSbynkn+8XBmNMBL3sg7BKzP7RQxcVzYIjG1u82WMz9hBQWn6oz09ryl6axXcAnYkwhpVLUH/sVu0wTYNcOCvqhLZG11G2LRm+27O7I+Mr02ttiVC4vFhorifmBBB/3lvsHaI0jCpDpRHAPv/vZme0UX+yd+4QoKacMXGTHuXp6sjOBALdafy/LlibgvSSa//6ex6ACSvMlBN4iIEFvdV/XcoL/xhZSr7HF0+C+Tyv7CA6XawEcFCGzCd0wNbmTmHaNpBlP0yDrGjdPUF7BFEFZcBAwECiEFTCFjed2ObKZMRFtAvg9FKAUvT+g5d+1CyyCoZF4fEf/u8JThe6sdniY95G2tsVub4Wr14o47Jeb5X1ef+0l/kDGrDDrScm5mRiEMBuPyB5311AfYvu8InJ/8YaPxLcMoMsR9Vjq/vAzEeKNVnWSPmV60BnYjq0W3WODb1yjgMyR/CIEJX7uGXB1p1+Y8AAAAA==" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Andy Mabbett</p>@pigsonthewing</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">It seems that, without announcement,  <a href="https://twitter.com/HistoricEngland">@HistoricEngland</a> have dropped the claim that copyright-expired pre-June 1957 RAF images are still in copyright, from their Aerial Photo Explorer <a href="https://x.com/pigsonthewing/status/1510239159805530121/photo/1">pic.x.com/uceK7qzQxd</a><div class="social-embed-media-grid"><a href="https://pbs.twimg.com/media/FPVyT3DXIAc3a-y.png" class="social-embed-media-link"><img class="social-embed-media" alt="" src="data:image/webp;base64,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"></a></div></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/pigsonthewing/status/1510239159805530121"><span aria-label="8 likes" class="social-embed-meta">❤️ 8</span><span aria-label="1 replies" class="social-embed-meta">💬 1</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2022-04-02T12:54:09.000Z" itemprop="datePublished">12:54 - Sat 02 April 2022</time></a></footer></blockquote>

<p>The second, and to my mind more troubling, problem is that the photos were "protected" using SmartFrame's Digital Restrictions Management.</p>

<p>SmartFrame has some useful features - it allows for high-resolution photos to be loaded "zoomed out" in lower resolution. The user can then zoom in on a portion which then gets loaded as higher resolution. That's it really. SmartFrame's main selling point is that it "<a href="https://smartframe.io/">brings robust image control</a>". AKA, it uses DRM to prevent users from downloading images.</p>

<p>It also promises "<a href="https://web.archive.org/web/20220521140631/https://smartframe.io/complete-image-protection/">Complete image protection</a>". This is nonsense. If you transmit an image to a user, the user can copy that image.</p>

<p>Here's how easy it is to download the images which SmartFrame claims to protect.</p>

<h2 id="screenshots"><a href="https://shkspr.mobi/blog/2022/05/liberating-out-of-copyright-photos-from-smartframes-drm/#screenshots">Screenshots</a></h2>

<p>The obvious flaw in SmartFrame is that users can take screenshots of the high-resolution image. Zoom in, screenshot, pan left, another screenshot, repeat.</p>

<p>Of course, stitching together all those images is a bit of a pain. But perfectly possible to automate if you wanted to.</p>

<h2 id="canvas-chunks"><a href="https://shkspr.mobi/blog/2022/05/liberating-out-of-copyright-photos-from-smartframes-drm/#canvas-chunks">Canvas Chunks</a></h2>

<p>The way SmartFrame works is by loading small "chunks" of the image and then drawing then on a <code>&lt;canvas&gt;</code> element.</p>

<p>In your browser's network inspector, you'll see each 256x256 sub-image loading.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2022/05/Chunked.png" alt="Screenshot of a network inspection panel. Dozens of JPEG images are being downloaded." width="897" height="405" class="aligncenter size-full wp-image-42655">
The images are not encrypted, so they can be saved directly. Again, it is a manual and tedious process to scrape them all and then stitch them together.</p>

<p>Inspecting the network requests shows that they all use the same Accept Header of <code>authorization/wndeym9ajvin,*/*</code> - that appears to be common across multiple SmartFrame instances. Bad form of them to reuse that key!</p>

<h2 id="canvas-access"><a href="https://shkspr.mobi/blog/2022/05/liberating-out-of-copyright-photos-from-smartframes-drm/#canvas-access">Canvas Access</a></h2>

<p>It's fairly easy to download anything drawn onto a <code>&lt;canvas&gt;</code> element by running:</p>

<pre><code class="language-js">var c = document.getElementsByClassName("stage") 
c[0].toDataURL() 
</code></pre>

<p>However, SmartFrame have overloaded the <code>.toDataURL()</code> function - so it produces a warning when you try that. It's simple enough to disable their JS once the image has loaded.</p>

<p>Of course, the <code>&lt;canvas&gt;</code> is smaller than the full resolution image - so you may need to manually increase its size first.</p>

<p>It's also possible to simply right-click on the <code>&lt;canvas&gt;</code> in the inspector and copy the Base64 representation of the image:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2022/05/Copy-canvas.png" alt="Screenshot of the context menu showing a download option." width="800" height="404" class="aligncenter size-full wp-image-42656">

<h2 id="putting-it-all-together"><a href="https://shkspr.mobi/blog/2022/05/liberating-out-of-copyright-photos-from-smartframes-drm/#putting-it-all-together">Putting it all together</a></h2>

<p>I am indebted to <a href="https://twitter.com/sil/status/1525374913535692802">Stuart Langridge for connecting all the dots</a>. He has <a href="https://gist.github.com/stuartlangridge/82c87a601a7e2ae566e640d93138ed85">written and fully documented some code</a> which is, essentially:</p>

<ol>
<li>Grab the canvas</li>
<li>Resize it</li>
<li>Wait several seconds for the image chunks to fully load onto the canvas</li>
<li>Turn the canvas into a Data URL</li>
<li>Download the data</li>
</ol>

<p>It looks something like this:</p>

<pre><code class="language-js">var container = document.querySelector("div.articlePage.container");
container.style.width="6000px";
container.style.maxWidth="6000px";

setTimeout(()=&gt;{
  var stage = document.querySelector("canvas.stage");
  var url = document.createElement("canvas").toDataURL.call(stage);
  var a = document.createElement("a");
  a.href = url;
  a.download = "liberated.png";
  a.click();
}, 3000);
</code></pre>

<p>And that's it. A user can paste a dozen lines of Javascript into their browser's console and get a full-resolution PNG.</p>

<h2 id="warnings"><a href="https://shkspr.mobi/blog/2022/05/liberating-out-of-copyright-photos-from-smartframes-drm/#warnings">Warnings</a></h2>

<p>This technique should only be used to download images which are free of copyright restrictions.</p>

<p>Companies should be careful before buying a DRM solution and ensure that it is fit for purpose. SmartFrame really isn't suitable as sold. Despite its grandiose claims of "Super-strong encryption" and "Multi-layered theft-prevention" - it took less than weekend to bypass.</p>

<p>It is possible that SmartFrame will update their systems to defeat this particular flaw. But, thankfully, DRM can never work effectively. You can't give users a locked box <em>and</em> a key - then expect them to only unlock the box under the "right" circumstances.
As <a href="https://www.wired.com/2006/09/quickest-patch-ever/">Bruce Schneier once said</a>:</p>

<blockquote><p>trying to make digital files uncopyable is like trying to make water not wet.</p></blockquote>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=42639&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2022/05/liberating-out-of-copyright-photos-from-smartframes-drm/feed/</wfw:commentRss>
			<slash:comments>40</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Quick and dirty way to rip an eBook from Android]]></title>
		<link>https://shkspr.mobi/blog/2021/12/quick-and-dirty-way-to-rip-an-ebook-from-android/</link>
					<comments>https://shkspr.mobi/blog/2021/12/quick-and-dirty-way-to-rip-an-ebook-from-android/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 27 Dec 2021 12:34:32 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[MSc]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=41412</guid>

					<description><![CDATA[I recently purchased a book for my MSC which was only available via a crappy Android app. There was no obvious way to decrypt it to read on a more sensible device, so I resorted to the ancient art of screenscraping.  This is a quick-and-dirty way to grab images of the pages and convert them to a standard PDF using Linux. There&#039;s a lot more you can do to make the end book more useful, but this&#039;ll…]]></description>
										<content:encoded><![CDATA[<p>I recently purchased a book for my MSC which was <em>only</em> available via a crappy Android app. There was no obvious way to decrypt it to read on a more sensible device, so I resorted to the ancient art of screenscraping.</p>

<p>This is a quick-and-dirty way to grab images of the pages and convert them to a standard PDF using Linux. There's a lot more you can do to make the end book more useful, but this'll get you started</p>

<h2 id="lots-of-screen-shots"><a href="https://shkspr.mobi/blog/2021/12/quick-and-dirty-way-to-rip-an-ebook-from-android/#lots-of-screen-shots">Lots of Screen Shots</a></h2>

<p>With a USB cable plugged into my phone and laptop, I wrote a horrible little bash script:</p>

<pre><code class="language-bash">#!/bin/bash
for i in {00001..00555}; do
   adb exec-out screencap -p &gt; $i.png
   adb shell input tap 1000 2000
   sleep 1s
done
echo All done
</code></pre>

<p>This runs a loop 555 times. Takes a screenshot, names it for the loop number with padded zeros, taps the bottom right of the screen, then waits for a second to ensure the page has refreshed.  Slow and dull, but works reliably.</p>

<p>Images range from 200KB to 2MB depending on complexity.  Back them up before doing the next bit.</p>

<h2 id="cropping"><a href="https://shkspr.mobi/blog/2021/12/quick-and-dirty-way-to-rip-an-ebook-from-android/#cropping">Cropping</a></h2>

<p>The screenshots are all 1080x2160. But the page only takes up part of that. The top left corner is at 50x432 and the bottom right is at 1028x1726.</p>

<p>This command crops all the images. It is destructive, so make sure you have a backup.</p>

<pre><code class="language-_">mogrify -crop 978x1294+50+432 +repage *.png
</code></pre>

<p>It's also useful to trim the images to remove any whitespace from the borders. That makes a smaller file size.</p>

<pre><code class="language-_">mogrify -trim *.png
</code></pre>

<p>Images can be shrunk with:</p>

<pre><code class="language-_">pngquant *.png
</code></pre>

<h2 id="pdf-and-ocr"><a href="https://shkspr.mobi/blog/2021/12/quick-and-dirty-way-to-rip-an-ebook-from-android/#pdf-and-ocr">PDF and OCR</a></h2>

<p>Sticking all the images together into a single PDF is pretty easy:</p>

<pre><code class="language-_">convert *.png +repage output.pdf
</code></pre>

<p>The <code>+repage</code> option keeps the aspect ratio of the trimmed image.</p>

<p>But there's no text to search. There are a bunch of OCR programs on Linux, I like <a href="http://www.tobias-elze.de/pdfsandwich/"><code>PDF Sandwich</code></a>:</p>

<pre><code class="language-_">pdfsandwich -rgb -nopreproc output.pdf
</code></pre>

<p>That'll get you a colour PDF with OCR'd text embedded in it.  The text is "sandwiched" behind the image of the page, so you can't see it but can search for it.</p>

<p>You can also use <a href="https://github.com/ocrmypdf/OCRmyPDF/">OCRmyPDF</a> which may result in a smaller file:</p>

<pre><code class="language-_">ocrmypdf -l eng output.pdf output_ocr.pdf
</code></pre>

<p>And that's it. I now have a searchable PDF which I can read on any device.</p>

<h2 id="what-have-we-learned"><a href="https://shkspr.mobi/blog/2021/12/quick-and-dirty-way-to-rip-an-ebook-from-android/#what-have-we-learned">What have we learned?</a></h2>

<p>DRM on textbooks is an annoyance. For computer science books, it's little more than a fig-leaf.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=41412&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2021/12/quick-and-dirty-way-to-rip-an-ebook-from-android/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Download 1080p streams from iPlayer]]></title>
		<link>https://shkspr.mobi/blog/2021/11/download-1080p-streams-from-iplayer/</link>
					<comments>https://shkspr.mobi/blog/2021/11/download-1080p-streams-from-iplayer/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Fri, 26 Nov 2021 12:34:03 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[BBC]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[iplayer]]></category>
		<category><![CDATA[iplayer-dl]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[NaBloPoMo]]></category>
		<category><![CDATA[python]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=41074</guid>

					<description><![CDATA[Way back in 2010, Paul Battley was blogging about device discrimination on the Internet. The new iPlayer service was using TLS certificates to ensure that only specific devices were able to stream media from the BBC&#039;s servers.  That&#039;s a situation which continues over a decade later. If you watch iPlayer on your laptop, you&#039;re stuck with 720p quality. If you want 1080p and above, you need a…]]></description>
										<content:encoded><![CDATA[<p>Way back in 2010, Paul Battley was blogging about <a href="https://po-ru.com/2010/06/07/device-discrimination-on-the-internet">device discrimination on the Internet</a>. The new iPlayer service was using TLS certificates to ensure that only specific devices were able to stream media from the BBC's servers.</p>

<p>That's a situation which continues over a decade later. If you watch iPlayer on your laptop, you're stuck with 720p quality. If you want 1080p and above, you need a specially certified device.</p>

<p>Well, that's what everyone <em>thought!</em></p>

<p>A few weeks ago, I found <a href="https://www.avforums.com/threads/is-there-a-way-to-get-iplayer-content-in-1080p.2319869/#post-29211339">this curious forum post</a> which said</p>

<blockquote><p>Yes, iPlayer 1080p is possible, not as simple as just using one of these webUI tools but its certainly possible with youtube-dl and a good look around..
<code>audio_eng_1=128000-video=12000000.m3u8</code></p></blockquote>

<p>There wasn't much information about it that I could find. And then I stumbled onto <a href="https://github.com/ytdl-org/youtube-dl/issues/30136">this GitHub issue for <code>youtube-dl</code></a>.</p>

<p>With a bit of faffing around, I was able to patch my YouTube downloader (<code>/usr/local/lib/python3.9/dist-packages/youtube_dl/extractor/bbc.py</code>) with this code:</p>

<pre><code class="language-python">for fmt in formats:
   if '-video=5070000.m3u8' in fmt.get('url', ''):
      formats = [
         {'url': fmt['url'].replace('-video=5070000.m3u8', '-video=12000000.m3u8'),
          'height': 1080, 'vbr': 12000,
          'abr': fmt.get('abr'),
          'protocol': fmt.get('protocol'),
          'preference': fmt.get('preference'),
          'format_id': fmt.get('format_id', 'hack') + '-really12M',
          }, fmt]
</code></pre>

<p>(To be clear, this is a <strong>horrible</strong> hack. It changes the iPlayer download function so it <em>only</em> downloads 1080p. It also doesn't rename the file properly once reconstructed, so you'll have to do that yourself. This is a quick hack - not for production!)</p>

<p>And, with that, I was able to download iPlayer in 1080p.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2021/11/1080p.jpg" alt="Screenshot of VLC reporting that the video is 1080p." width="1788" height="845" class="aligncenter size-full wp-image-41075">

<p>Sadly there's no surround sound - AAC stereo only.</p>

<h2 id="learning-from-history"><a href="https://shkspr.mobi/blog/2021/11/download-1080p-streams-from-iplayer/#learning-from-history">Learning from history</a></h2>

<p>Back in 2008 (!) I was blogging about the <a href="https://shkspr.mobi/blog/2008/03/bbc-iplayer-on-your-phone-in-4-easy-steps-and-2-hard-ones/">BBC's ridiculous decision to restrict iPlayer streaming to iPhones</a>. And in 2012 I blogged about how the <a href="https://shkspr.mobi/blog/2012/08/itoldyouso/">BBC's insistence on using Flash had misfired</a>. The BBC (and, to be fair, the video rights-holders) are desperately trying to avoid their content being shown at high quality on "unsanctioned" devices.</p>

<p>I get that they don't want to lose revenue. But anyone with a USB stick can record HD off air. 4K rips of every movie appear on the Internet 5 minutes after they're released. Trying to restrict who can view your content is a losing battle. It only takes one person to figure it out, and then the genie is out of the bottle.</p>

<p>What's the technical overhead of trying to manage this complicated infrastructure they've created? What is the tangible loss if someone watches a 4K stream from their browser rather than the app?</p>

<p>At some point, surely, media companies will have to realise that making <em>easy</em> access to their content is more powerful than blocking off every creative use. Right?</p>

<p>Bah. I'm off to count the pixels on the latest episode of Doctor Who.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=41074&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2021/11/download-1080p-streams-from-iplayer/feed/</wfw:commentRss>
			<slash:comments>13</slash:comments>
		
		
			</item>
		<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[You can't print this blog post]]></title>
		<link>https://shkspr.mobi/blog/2021/06/you-cant-print-this-blog-post/</link>
					<comments>https://shkspr.mobi/blog/2021/06/you-cant-print-this-blog-post/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 21 Jun 2021 11:40:46 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[HTML]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=39314</guid>

					<description><![CDATA[Update! It&#039;s fair to say no one liked this idea - so I&#039;ve reverted it. Thanks for all the feedback 🙂  Do you ever see those daft email footers which say &#34;Please consider the environment before printing this email.&#34; Like, who the fuck is still printing out their emails?  Anyway, a few years ago I went along to a blogging event where someone had printed out one of my blog posts. I was stunned. Th…]]></description>
										<content:encoded><![CDATA[<p><ins datetime="2021-06-21T16:28:42+00:00">Update! It's fair to say <em>no one</em> liked this idea - so I've reverted it. Thanks for all the feedback 🙂</ins></p>

<p>Do you ever see those daft email footers which say "Please consider the environment before printing this email." Like, who the <em>fuck</em> is still printing out their emails?</p>

<p>Anyway, a few years ago I went along to a blogging event where someone had printed out one of my blog posts. I was stunned. They'd stuck of loads of my posts (and other people's posts) on a mood board. Because I'm a digital fundamentalist, this pissed me off - what a waste of paper. Printing off a blog post is like making a radio broadcast of a sunset. Just pointless.</p>

<p>Luckily, there's a (very weak) form of DRM you can use to dissuade people from printing off your web pages:</p>

<pre><code class="language-css">@media print {
  html { display: none; }
}
</code></pre>

<p>CSS has <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media#print">Media Rules for printing</a>. You're supposed to use it to remove background images, menu bars, and other things which aren't useful. In this case, I've just told the browser not to display any content when it tries to print.</p>

<p>You can go a little further. This stops the page from rendering when printed, and adds a handy error message:</p>

<pre><code class="language-css">@media print{
    body { display: none; }
    html::after {
        content: "Please consider the environment before printing this blog.";
    }
}
</code></pre>

<p>I've tested this, and it works in Firefox, Safari, and Chrome. It's trivial to defeat this technical protection mechanism if you're handy with developer tools - but I guess those aren't the people who are printing off the entire Internet.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=39314&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2021/06/you-cant-print-this-blog-post/feed/</wfw:commentRss>
			<slash:comments>42</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[HDCP is ridiculously annoying - DRM sucks for consumers]]></title>
		<link>https://shkspr.mobi/blog/2019/01/hdcp-is-ridiculously-annoying-drm-sucks-for-consumers/</link>
					<comments>https://shkspr.mobi/blog/2019/01/hdcp-is-ridiculously-annoying-drm-sucks-for-consumers/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 13 Jan 2019 14:51:56 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[av]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[hdmi]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[tv]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=31179</guid>

					<description><![CDATA[I decided to treat myself to an upgraded home cinema experience. But mandatory copy-protection has meant I&#039;ve spend the weekend trying and failing to get things working, rather than watching glorious 4K HDR 10 bit movies.  Here&#039;s the problem:    Why am I getting the error &#34;This content can not be displayed because your TV does not support HDCP 2.2.&#34;?  I have four pieces of kit in the mix, all of…]]></description>
										<content:encoded><![CDATA[<p>I decided to treat myself to an upgraded home cinema experience. But mandatory copy-protection has meant I've spend the weekend trying and failing to get things working, rather than watching glorious 4K HDR 10 bit movies.</p>

<p>Here's the problem:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/01/TV-showing-error.jpg" alt="TV showing error message." width="1024" height="588" class="aligncenter size-full wp-image-31185">

<p>Why am I getting the error "This content can not be displayed because your TV does not support <a href="https://en.wikipedia.org/wiki/High-bandwidth_Digital_Content_Protection">HDCP 2.2</a>."?</p>

<p>I have four pieces of kit in the mix, all of which claim to support HDCP's Digital Restrictions Management:</p>

<ul>
<li><a href="https://amzn.to/2AHOBOH">Amazon Fire TV Stick</a> - the new 4K version</li>
<li><a href="https://shkspr.mobi/blog/2018/11/telnet-control-of-toshiba-smart-tvs/">Toshiba 49U6863</a> - a 4K TV</li>
<li><a href="https://amzn.to/2AGKiTG">Denon AVR-X2500H</a> - a 4K surround sound amp</li>
<li><a href="https://amzn.to/2CkWSrT">HDMI 2.0 cable</a> - an 18Gbps rated cable</li>
</ul>

<p>Easy, right? No!</p>

<p>Here's what <em>does</em> work:
<code>Fire -&gt; TV</code> 
If I plug the Fire Stick directly into the TV, it works! I get 4K HDR. So I'm confident the TV <em>does</em> support HDCP.</p>

<p>Here's what does <em>not</em> work:</p>

<p><code>Fire -&gt; Denon -&gt; HDMI cable -&gt; TV</code>
Causes the Denon to display the "your TV does not support HDCP 2.2." error message when 4K content is played.</p>

<h2 id="is-it-the-cable"><a href="https://shkspr.mobi/blog/2019/01/hdcp-is-ridiculously-annoying-drm-sucks-for-consumers/#is-it-the-cable">Is it the cable?</a></h2>

<p>The HDMI cable claims to support 4K video. The <a href="https://web.archive.org/web/20181222213335/http://www.theaav.com/uploads/2/6/0/1/26016310/denon_hdmi_diagnostics_and_troubleshooting_eng_im_v00.pdf">Denon has a built in cable tester</a> which confirms that the cable meets the "4K (6G)" specification.</p>

<p>The cable is short - under 2 meters - so shouldn't run into any latency issues.</p>

<h2 id="is-it-the-tvs-config"><a href="https://shkspr.mobi/blog/2019/01/hdcp-is-ridiculously-annoying-drm-sucks-for-consumers/#is-it-the-tvs-config">Is it the TV's config?</a></h2>

<p>I don't think so. There is an HDMI Full Range settings, which I have enabled.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/01/HDMI-Full-Range-fs8.png" alt="HDMI Full Range While watching from a HDMI source, this feature will be visible. You can use this feature to enhance blackness in the picture." width="1087" height="133" class="aligncenter size-full wp-image-31182">

<p>I've set the HDMI input to "Advanced".
<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/01/Enhanced-fs8.png" alt="Regular and Enhanced options are affecting the colour settings of the selected HDMI source. To be able to watch 4K or HDR/HLG (optional) images from an HDMI source related source setting should be set as Enhanced if the connected device is compatible with HDMI 2.0 and subsequent versions." width="1067" height="228" class="aligncenter size-full wp-image-31181"></p>

<p>The Fire seems to think the TV is compatible, and lets me switch to 4K, even when it is going through the Denon.</p>

<p>To be clear, <code>Fire -&gt; Denon -&gt; HDMI cable -&gt; TV (Enhanced)</code> does not show an error on the Fire but shows an error on the Denon about HDCP..</p>

<h2 id="is-it-the-signal-pathway"><a href="https://shkspr.mobi/blog/2019/01/hdcp-is-ridiculously-annoying-drm-sucks-for-consumers/#is-it-the-signal-pathway">Is it the signal pathway?</a></h2>

<p>Despite Denon's marketing material claiming that every port can do 4K HDR, <a href="https://denon-uk.custhelp.com/app/answers/detail/a_id/4377/~/hdr-passthrough-not-working">their support pages tell a different story</a>!</p>

<p><a href="https://denon-uk.custhelp.com/app/answers/detail/a_id/4377/~/hdr-passthrough-not-working"><img src="https://shkspr.mobi/blog/wp-content/uploads/2019/01/DenonCP45-fs8.png" alt="Diagram showing which ports are best." width="1024" height="343" class="aligncenter size-full wp-image-31180"></a></p>

<p>I've tried plugging the Fire stick into the closest HDMI port - but it made no difference.</p>

<h2 id="is-it-the-amps-settings"><a href="https://shkspr.mobi/blog/2019/01/hdcp-is-ridiculously-annoying-drm-sucks-for-consumers/#is-it-the-amps-settings">Is it the amp's settings?</a></h2>

<p>There are dozens of permutations of settings, but I think I've narrowed it down to the essentials.</p>

<p>I've <a href="http://manuals.denon.com/AVRX2500H/EU/EN/GFNFSYafailgul.php">turned off all video processing</a> and set the amp to <a href="http://manuals.denon.com/AVRX2500H/EU/EN/GFNFSYmlxuhedk.php">"bypass" all video processing from the HDMI video path</a>.</p>

<p>I think this is where the problem lies - the <a href="http://manuals.denon.com/AVRX2500H/EU/EN/DRDZSYzvebvotm.php">4K Signal Format</a> setting.</p>

<p>If I set it to "Standard", I can watch 4K video <em>without</em> HDR.</p>

<p>As soon as I set it to "Enhanced", the Denon shows the HDCP error.</p>

<p>The Denon shows the TV as accepting 4K HDR.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/01/HDMI-output-info.jpg" alt="TV screen showing it accepts 4K." width="1024" height="552" class="aligncenter size-full wp-image-31189"></p>

<h2 id="can-you-strip-the-drm"><a href="https://shkspr.mobi/blog/2019/01/hdcp-is-ridiculously-annoying-drm-sucks-for-consumers/#can-you-strip-the-drm">Can you strip the DRM?</a></h2>

<p>Possibly. Devices like <a href="https://www.hdfury.eu/">Dr HDMI's HD Fury</a> claim they can fix these problems. But I'm loathe to spend another €90 to fix a problem not of my own making.</p>

<h2 id="conclusion"><a href="https://shkspr.mobi/blog/2019/01/hdcp-is-ridiculously-annoying-drm-sucks-for-consumers/#conclusion">Conclusion?</a></h2>

<p>I have no clue! Either the Fire or the Denon are doing the HDCP handshake incorrectly. Or, perhaps, the TV doesn't handshake when connected to an amp.</p>

<p>You'd think it would be simple to pass a digital signal from one device to another, via a 3rd - but the paranoia of DRM means paying customers have to put up with all manner of user-hostile limitations.</p>

<h2 id="next-steps"><a href="https://shkspr.mobi/blog/2019/01/hdcp-is-ridiculously-annoying-drm-sucks-for-consumers/#next-steps">Next steps?</a></h2>

<ul>
<li>Both the TV and Amp were purchased from RicherSounds - so I might give them a call to see if they've any ideas.</li>
<li>Amazon support don't think it is a problem with the Fire but will pass my comments onto their engineering team.</li>
<li>I've contacted Toshiba - but they outsource their manufacturing to Vestel, so who knows if I'll ever get an answer.</li>
<li>Denon have promised to contact me in 48 hours.</li>
</ul>

<h2 id="is-it-my-fault-for-being-a-media-snob"><a href="https://shkspr.mobi/blog/2019/01/hdcp-is-ridiculously-annoying-drm-sucks-for-consumers/#is-it-my-fault-for-being-a-media-snob">Is it my fault for being a media snob?</a></h2>

<p>Well, probably. I should spend less time watching the picture quality, and more time watching the show.</p>

<p>But I'm an innocent customer. I've spent good money to watch high-def media and I'm being stymied because of DRM.</p>

<p>I'd love there to be an <a href="https://hackaday.io/project/20469-modular-open-source-av-receiver">open source AV amp</a> so I could actually be in control of what I watch.</p>

<p>If you've got any smart ideas for how to fix this - please drop me a comment!</p>

<h2 id="update"><a href="https://shkspr.mobi/blog/2019/01/hdcp-is-ridiculously-annoying-drm-sucks-for-consumers/#update"><ins datetime="2019-01-28">Update</ins></a></h2>

<p>I returned the Denon thinking it was faulty and got the <a href="https://amzn.to/2UknBfm">Pioneer VSX-933</a>. Sadly, it also has the same error!
<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/01/HDCP-and-Pioneer.jpg" alt="Error message &quot;This content cannot be dispayed on your TV. Please make sure HDMI connection on your HDCP 2.2.&quot;" width="1024" height="567" class="aligncenter size-full wp-image-31324">
So, next steps are to find another 4K HDR source to see if that works, or... I dunno!</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=31179&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2019/01/hdcp-is-ridiculously-annoying-drm-sucks-for-consumers/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Falsehoods Programmers Believe About Families]]></title>
		<link>https://shkspr.mobi/blog/2017/03/falsehoods-programmers-believe-about-families/</link>
					<comments>https://shkspr.mobi/blog/2017/03/falsehoods-programmers-believe-about-families/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 29 Mar 2017 12:00:36 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[falsehoods]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[usability]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=24968</guid>

					<description><![CDATA[I&#039;ve written before about Solipsist design - those services which have been designed to work only for a very specific type of family.  I was taking a look at Google&#039;s &#34;Family&#34; proposition - which allows users to share their purchases with other family members.  What I found didn&#039;t impress me.  Terence Eden is on Mastodon@edentFile under &#34;Falsehoods Programmers Believe About Families.&#34;…]]></description>
										<content:encoded><![CDATA[<p>I've written before about <a href="https://shkspr.mobi/blog/2015/08/anti-social-app-design/">Solipsist design</a> - those services which have been designed to work only for a <em>very specific</em> type of family.</p>

<p>I was taking a look at <a href="https://support.google.com/googleplay/answer/6317858?hl=en">Google's "Family" proposition</a> - which allows users to share their purchases with other family members.  What I found didn't impress me.</p>

<blockquote class="social-embed" id="social-embed-846270908138426369" 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/edent" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRkgBAABXRUJQVlA4IDwBAACQCACdASowADAAPrVQn0ynJCKiJyto4BaJaQAIIsx4Au9dhDqVA1i1RoRTO7nbdyy03nM5FhvV62goUj37tuxqpfpPeTBZvrJ78w0qAAD+/hVyFHvYXIrMCjny0z7wqsB9/QE08xls/AQdXJFX0adG9lISsm6kV96J5FINBFXzHwfzMCr4N6r3z5/Aa/wfEoVGX3H976she3jyS8RqJv7Jw7bOxoTSPlu4gNbfXYZ9TnbdQ0MNnMObyaRQLIu556jIj03zfJrVgqRM8GPwRoWb1M9AfzFe6Mtg13uEIqrTHmiuBpH+bTVB5EEQ3uby0C//XOAPJOFv4QV8RZDPQd517Khyba8Jlr97j2kIBJD9K3mbOHSHiQDasj6Y3forATbIg4QZHxWnCeqqMkVYfUAivuL0L/68mMnagAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Terence Eden is on Mastodon</p>@edent</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">File under "Falsehoods Programmers Believe About Families." <a href="https://twitter.com/edent/status/846270908138426369/photo/1">pic.x.com/3vgiq0ursf</a><div class="social-embed-media-grid"><a href="https://pbs.twimg.com/media/C76O4a6W0AENhCT.jpg" class="social-embed-media-link"><img class="social-embed-media" alt="" src="data:image/webp;base64,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"></a><a href="https://pbs.twimg.com/media/C76O40nXQAImhFR.jpg" class="social-embed-media-link"><img class="social-embed-media" alt="" src="data:image/webp;base64,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"></a><a href="https://pbs.twimg.com/media/C76O5LzX0AA0LXm.jpg" class="social-embed-media-link"><img class="social-embed-media" alt="" src="data:image/webp;base64,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"></a><a href="https://pbs.twimg.com/media/C76O5kXXUAAS6Bg.jpg" class="social-embed-media-link"><img class="social-embed-media" alt="" src="data:image/webp;base64,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"></a></div></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/edent/status/846270908138426369"><span aria-label="574 likes" class="social-embed-meta">❤️ 574</span><span aria-label="38 replies" class="social-embed-meta">💬 38</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2017-03-27T08:01:22.000Z" itemprop="datePublished">08:01 - Mon 27 March 2017</time></a></footer></blockquote>

<p>Let's take a look at some of the more <a href="https://shkspr.mobi/blog/2015/11/a-polite-way-to-say-ridiculously-complicated/">baroque</a> requirements in their terms &amp; conditions.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2017/03/5-Family-Members.png" alt="Only 5 family members are allowed" width="512" height="" class="aligncenter size-full wp-image-24969">

<p>Does your family have more than five members? Around <a href="http://www.huffingtonpost.co.uk/2015/08/17/uk-family-size-statistics_n_7996768.html">10% of babies born in the UK have three or more siblings</a>.  It also ignores families which want to include grandparents and in-laws in their group.</p>

<p>Or, "<a href="https://twitter.com/edent/status/846400637092945924">Sorry little Timmy, we can only add you to the Google family plan once your granny dies.</a>"</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2017/03/12-Months.png" alt="You can only change families every 12 months" width="512" height="" class="aligncenter size-full wp-image-24970">

<p>You're adopted, having been with a few foster families this year. You can't join the same Google family as your new brothers and sisters.</p>

<p>You split up from your partner - you can't join a new partner's family for a whole year.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2017/03/Age-and-credit-card.png" alt="The be the head of the family you must be 18 and have a credit card." width="512" height="" class="aligncenter size-full wp-image-24971">

<p>In the UK, you can marry and/or start a family at 16. Are a young married couple <em>really</em> excluded from sharing their media?</p>

<p>The credit card requirement also seems odd given that you can purchase media using pre-pay cards with no age restriction.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2017/03/Live-in-the-same-country.png" alt="You cannot be part of multiple families. You must be in the same country as the other family members." width="512" height="" class="aligncenter size-full wp-image-24972">

<p>Your adult child is about to be deployed overseas. Can they remain in the family so you can buy them games &amp; films?</p>

<p>You live with your mum &amp; step-dad. Your bio-dad wants to add you to his Google family. What do you do?</p>

<p>Why does Google have such a narrow conception of what a "family" is?</p>

<h2 id="falsehoods-programmers-believe-about-the-falsehoods-programmers-believe-meme"><a href="https://shkspr.mobi/blog/2017/03/falsehoods-programmers-believe-about-families/#falsehoods-programmers-believe-about-the-falsehoods-programmers-believe-meme">Falsehoods programmers believe about the "falsehoods programmers believe" meme</a></h2>

<p><a href="https://twitter.com/Kufat/status/846854328237350913">A</a> <a href="https://twitter.com/johnb78/status/846271568749641728">number</a> <a href="https://twitter.com/GordyPls/status/846868748501864448">of</a> <a href="https://twitter.com/weretoaster/status/846848547077050368">people</a> <a href="https://twitter.com/XaiaX/status/846785590787948544">on</a> <a href="https://twitter.com/vafarmboy/status/846784958102458368">Twitter</a> <a href="https://twitter.com/xhaus/status/846283606842585088">have</a> <a href="https://twitter.com/GordyPls/status/846868748501864448">taken</a> <a href="https://twitter.com/necrotechno/status/846873682966339584">the</a> <a href="https://twitter.com/DerekSilva/status/846900095480053761">title</a> <a href="https://twitter.com/hlangeveld/status/846936696084185088">literally</a>.  "This is about managers and lawyers!" they protest.  But, <em>of course!</em></p>

<blockquote class="social-embed" id="social-embed-846606644624740353" 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/edent" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRkgBAABXRUJQVlA4IDwBAACQCACdASowADAAPrVQn0ynJCKiJyto4BaJaQAIIsx4Au9dhDqVA1i1RoRTO7nbdyy03nM5FhvV62goUj37tuxqpfpPeTBZvrJ78w0qAAD+/hVyFHvYXIrMCjny0z7wqsB9/QE08xls/AQdXJFX0adG9lISsm6kV96J5FINBFXzHwfzMCr4N6r3z5/Aa/wfEoVGX3H976she3jyS8RqJv7Jw7bOxoTSPlu4gNbfXYZ9TnbdQ0MNnMObyaRQLIu556jIj03zfJrVgqRM8GPwRoWb1M9AfzFe6Mtg13uEIqrTHmiuBpH+bTVB5EEQ3uby0C//XOAPJOFv4QV8RZDPQd517Khyba8Jlr97j2kIBJD9K3mbOHSHiQDasj6Y3forATbIg4QZHxWnCeqqMkVYfUAivuL0L/68mMnagAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Terence Eden is on Mastodon</p>@edent</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"><small class="social-embed-reply"><a href="https://twitter.com/edent/status/846270908138426369">Replying to @edent</a></small>OMG! The number of people who think I *literally* blame programmers!<br><br>The "Falsehoods" meme is about exposing poor planning at *all* stages.</section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/edent/status/846606644624740353"><span aria-label="33 likes" class="social-embed-meta">❤️ 33</span><span aria-label="2 replies" class="social-embed-meta">💬 2</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2017-03-28T06:15:27.000Z" itemprop="datePublished">06:15 - Tue 28 March 2017</time></a></footer></blockquote>

<p>All of the "<a href="https://github.com/kdeldycke/awesome-falsehood">Falsehoods</a>" memes - including <a href="https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/">the original</a> -  are a shorthand for "Constraints placed upon a complex system by a mixture of ignorance, apathy, business requirements, or other legal constraints".</p>

<p>That's not quite as snappy!</p>

<p>This is undoubtedly a licensing issue.  Google have used "Family" as a consumer-friendly term for "Group of people who want to share media but may or may not be related."  The nuclear ideal of Mom, Pop, Dick, Jane, and one miscellaneous doesn't really fit with many people's reality.</p>

<p>If I buy a physical DVD or videogame, I can lend it to as many people as I want - whether they're part of my family or not. The friction of dealing with moving physical items is really the only barrier to me lending out my entire collection to the whole world.</p>

<p><a href="https://shkspr.mobi/blog/2013/01/a-stock-exchange-for-digital-media/">The digital world obliterates friction</a>.</p>

<p>So we're stuck with a situation where a mega-corporation and their lawyers try to define the minimum viable family which will keep <em>other</em> lawyers happy and, hopefully, won't piss off too many <strong>real</strong> families.</p>

<p>How do you think they're doing?</p>

<h2 id="thoughts"><a href="https://shkspr.mobi/blog/2017/03/falsehoods-programmers-believe-about-families/#thoughts">Thoughts?</a></h2>

<p>You can continue the conversation on this blog, or <a href="https://twitter.com/edent/status/846270908138426369">this Twitter thread</a>, or on <a href="https://boingboing.net/2017/03/28/me-mom-and-daddy.html">BoingBoing</a> where Cory has written some excellent insder information on the decision making process which produced this.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=24968&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2017/03/falsehoods-programmers-believe-about-families/feed/</wfw:commentRss>
			<slash:comments>13</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Traditional Book Publishers Don't Own The Future]]></title>
		<link>https://shkspr.mobi/blog/2013/04/traditional-book-publishers-dont-own-the-future/</link>
					<comments>https://shkspr.mobi/blog/2013/04/traditional-book-publishers-dont-own-the-future/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 18 Apr 2013 11:00:14 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[ebooks]]></category>
		<category><![CDATA[publishing]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=8086</guid>

					<description><![CDATA[One of the &#34;perks&#34; of running a moderately popular blog is that sometimes people send you stuff.  I&#039;ve been sent wine, phones, apps, and all sorts to review - usually by PR people who realise that engagement with bloggers is a little different that their regular way of doing business.  Yesterday, I received this delightful email from the publishers Simon and Schuster.  NEW book by the &#34;Prophet of …]]></description>
										<content:encoded><![CDATA[<p>One of the "perks" of running a moderately popular blog is that sometimes people send you stuff.  I've been sent wine, phones, apps, and all sorts to review - usually by PR people who realise that engagement with bloggers is a little different that their regular way of doing business.</p>

<p>Yesterday, I received this <em>delightful</em> email from the publishers Simon and Schuster.</p>

<blockquote><p>NEW book by the "Prophet of Silicon Valley", Jaron Lanier, available for your review!</p>

<p>Dear Mr. Vogels,</p>

<p>I'm writing today to let you know of a new book from Simon &amp; Schuster that I think your readers will be interested in — WHO OWNS THE FUTURE? By Jaron Lanier (available 5/7/13).</p>

<p>Jaron Lanier is the bestselling author of You Are Not a Gadget, the father of virtual reality, and one of the most influential thinkers of our time.</p>

<p>[Snip a load of marketing fluff]</p>

<p>I'd like to send you a copy of the book to review.</p></blockquote>

<p>Well, let's ignore the fact that I am not "Mr Vogels".  PR is a hard job and getting people's names right isn't a fundamental part of relationship building.</p>

<p>So, as the book sounded interesting, I asked to be emailed a copy.</p>

<blockquote><p>I'm happy to send you a hardcover copy. If you might provide a mailing address, I'll put one in the mail today.</p></blockquote>

<p>As regular readers know, last year <a href="https://shkspr.mobi/blog/2012/03/burning-all-my-books/">I burned all my paper books and switched exclusively to ebooks</a>.  I related that fact, and mentioned that it would be much quicker than international shipping - surely a priority if you want advanced reviews.</p>

<blockquote><p>Unfortunately, I'm not able to send ebooks as review copies at this time. Many thanks for your interest.</p></blockquote>

<p>So, the "Prophet of Silicon Valley" wants his words stamped on to bits of dead tree, then air shipped at great expense across the Atlantic - as opposed to emailing me a few MB?</p>

<p>How <strong>very</strong> futuristic.</p>

<h2 id="dont-copy-that-floppy"><a href="https://shkspr.mobi/blog/2013/04/traditional-book-publishers-dont-own-the-future/#dont-copy-that-floppy">Don't Copy That Floppy!</a></h2>

<p>I don't know if this is Simon and Schuster police on ebooks - or Jaron Lanier's. Given <a href="http://copyrightandtechnology.com/2010/02/03/jaron-lanier-is-not-a-gadget/">Jaron's stance on DRM</a> and his <a href="http://www.publishersweekly.com/pw/by-topic/digital/content-and-e-books/article/56042-indie-booksellers-sue-amazon-big-six-over-e-book-drm.html">publisher's ongoing DRM law-suit</a> it could be either.</p>

<p>What I do know is this:</p>

<ul>
    <li>Regional release dates are antithetical to the Internet. The UK edition of "Who Owns The Future" went on sale in the UK on 7th March - it goes on sale on May 7 in the US/Canada and May 22 in Australia/NZ</li>
    <li>1 minute of Googling found an eBook copy, without DRM, nestling on a Russian server. Along with the usual polarity of Magnet links.</li>
</ul>

<p>It just goes to show, even the most influential futurist, and his publishers, are still struggling with the reality of the Internet and the ongoing eBook revolution.</p>

<p>The book certainly sound very interesting.  To quote from the preface:</p>

<blockquote><p>The very action of reading makes you the hero of the story I am telling. Maybe you bought, or stole, a physical copy, paid to read this on your tablet, or pirated a digital copy off a share site. Whatever the prequel, here you are, living precisely the circumstances described in this book.
</p><p><a href="http://www.amazon.co.uk/gp/product/B00ADNP2ZM/ref=as_li_ss_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B00ADNP2ZM&amp;linkCode=as2&amp;tag=shkspr-21"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/04/Who-Owns-The-Future-Cover.jpg" alt="Who Owns The Future Cover" width="260" height="400" class="alignleft size-full wp-image-8087"></a>
</p><p>If you paid to read this, thank you! This book is a result of living my life as I do, which I hope provides value to you. The hope of this book is that someday we’ll all have more ways to grow wealth as a side effect of living our lives creatively and intelligently, with an eye to doing things of use to others.
</p><p>If you paid to read, then there has been a one-way transaction, in which you transferred money to someone else.
</p><p>If you got it for free, there has been a no-way transaction, and any value traded will be off the books, recorded not in any ledger but rather in the informal value systems of reputation, karma, or other wispy forms of barter. That doesn’t mean nothing has happened. Maybe you’ll get some positive strokes over a social network because of what you say about the book. That sort of activity might benefit us both. But it’s a kind of benefit that is unreliable and perishable.</p></blockquote>

<p>"Who Owns The Future?" is available from all good book stores, as both a hardback or eBook.  Jaron Lanier would probably prefer you buy it, but is probably equally wary of your personal details ending up in a mega data warehouse.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=8086&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2013/04/traditional-book-publishers-dont-own-the-future/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[#libcampldn Library Camp London - Audio Recordings & Writeup]]></title>
		<link>https://shkspr.mobi/blog/2013/03/libcampldn-library-camp-london-audio-recordings-writeup/</link>
					<comments>https://shkspr.mobi/blog/2013/03/libcampldn-library-camp-london-audio-recordings-writeup/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 03 Mar 2013 12:00:21 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[#libcampldn]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[ebooks]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[librarycamp]]></category>
		<category><![CDATA[unconference]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=7735</guid>

					<description><![CDATA[I haven&#039;t been to an unconference in ages - so it was nice to get back into the swing of things with LibraryCamp.  It was a delight to spend time with a collection of committed professionals doing amazing things with books.  As requested, I recorded all the sessions I could.  Here are my notes, and the audio from each session I attended.  I&#039;ve based some of the information from the excellent…]]></description>
										<content:encoded><![CDATA[<p>I haven't been to an unconference in ages - so it was nice to get back into the swing of things with <a href="https://web.archive.org/web/20130312112810/http://www.librarycamp.co.uk/">LibraryCamp</a>.  It was a delight to spend time with a collection of committed professionals doing amazing things with books.</p>

<p>As requested, I recorded all the sessions I could.  Here are my notes, and the audio from each session I attended.</p>

<p>I've based some of the information from the excellent <a href="https://web.archive.org/web/20130125014944/http://libcampldn.wikispaces.com/">LibraryCampLondon Wiki</a>, including the <a href="https://web.archive.org/web/20130411010147/http://libcampldn.wikispaces.com/Session+Pitches">session proposal page</a>.</p>

<h2 id="hidden-collections"><a href="https://shkspr.mobi/blog/2013/03/libcampldn-library-camp-london-audio-recordings-writeup/#hidden-collections">Hidden Collections</a></h2>

<p><a href="https://twitter.com/girlinthe">Katie Birkwood</a> lead a fascinating session.  It turns out that there are hundreds of thousands of books hidden away in libraries.  They're not in the records because of a lack of decent cataloguers.  Which means people can't find them.  Which means they're rarely used.  Which means penny pinching bureaucrats want to "dispose" of them - homely or otherwise.</p>

<p>One suggestion I made was to use "negative metrics".  Look at your search results - what common queries receive <em>no</em> results? Those are the books you need to prioritise for cataloguing.</p>

<h3 id="audio"><a href="https://shkspr.mobi/blog/2013/03/libcampldn-library-camp-london-audio-recordings-writeup/#audio">Audio</a></h3>

<p></p><figure class="audio">
	<figcaption>🔊</figcaption>
	
	<audio controls="" loading="lazy" src="https://shkspr.mobi/blog/wp-content/uploads/2013/03/Hidden.ogg">
		<p>💾 <a href="https://shkspr.mobi/blog/wp-content/uploads/2013/03/Hidden.ogg">Download this audio file</a>.</p>
	</audio>
</figure><p></p>

<h3 id="tweets"><a href="https://shkspr.mobi/blog/2013/03/libcampldn-library-camp-london-audio-recordings-writeup/#tweets">Tweets</a></h3>

<p><a href="https://web.archive.org/web/20230122221559/https://twitter.com/NazlinBhimani/status/307811824257077248?ref_src=twsrc%5Etfw">https://twitter.com/NazlinBhimani/status/307811824257077248</a></p>

<blockquote class="social-embed" id="social-embed-307810238315241472" 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/libchris" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRmYBAABXRUJQVlA4IFoBAAAQCACdASowADAAPrVOokunJCMhpzgMkOAWiWUAuzOwzAS7ytqaodpmgCu6GT5Y/ZnDNUyf4mTmdthmzpEoZZh/pf+c1QKysDoAANk1TiWVeR7gkRsJRVva+3W9EErl8VxONN9vL9Yxj/r0SDX4l58YJY5QbcD4USRF0QrSsEBShINQqbLGSKzzn511bsTJIEGEOmCxWSaLJ43uxfLCQ9y2GVqnRfOzwnaqEhvdV86EEooz6NM4YtY1ev9k1vhSDhUXrSMUJtJEGKV9XmU7kmyPhBbHWXSnvYMp2E28mgKmghzo/4FRupu8nv+3Nf0HqS08M1eI5jq3ZyMobvGXkC0ZTTBd7U9xDDFuMyhoVjilMMhGRyvz3UoahjOCX9qDXuVCGsna76in2mVtSjGkafiBf8nzRkbXGe09t2odxHzIONpHGz+UvWUT6VRxUEnsV+ojIwNZP4f3wAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Chris B.</p>@libchris</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">crowdsourcing - how many have message on catalogue that invites contributions? (COPAC prominently says if an error let us know) <a href="https://twitter.com/hashtag/libcampldn">#libcampldn</a></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/libchris/status/307810238315241472"><span aria-label="1 likes" class="social-embed-meta">❤️ 1</span><span aria-label="0 replies" class="social-embed-meta">💬 0</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2013-03-02T11:10:54.000Z" itemprop="datePublished">11:10 - Sat 02 March 2013</time></a></footer></blockquote>

<h2 id="overdrive-drm-is-broken-and-thats-ok"><a href="https://shkspr.mobi/blog/2013/03/libcampldn-library-camp-london-audio-recordings-writeup/#overdrive-drm-is-broken-and-thats-ok">Overdrive DRM is Broken (and that's ok)</a></h2>

<p>I gave a demonstration on just how ridiculously easy it is to circumvent the ePub DRM system used by OverDrive - the system used for ebook lending in many libraries.</p>

<p>I used the metaphor of a locked box of doughnuts.  I handed the box to a willing victim and told her that she may only unlock the box if she promised only to eat one doughnut and not to share any with her friends.  I then gave her the key.  Shortly afterwards the group had scoffed the lot!
<a href="http://www.flickr.com/photos/c_l_b/8522787646/" title="Library Camp London March 2013 by c_l_b, on Flickr"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/03/8522787646_075e3ce04f_o.jpg" width="800" height="598" alt="Padlocked Donuts as a DRM metaphor"></a>
That's what makes DRM impossible; you give the lock and the key to the same person and expect them never to behave dishonourably.</p>

<p>I then facilitated a discussion around whether DRM was ever justified, whether libraries should boycott OverDrive, and if it was legal for a librarian to tell a patron how to circumvent artificial restrictions.</p>

<h3 id="audio"><a href="https://shkspr.mobi/blog/2013/03/libcampldn-library-camp-london-audio-recordings-writeup/#audio">Audio</a></h3>

<p></p><figure class="audio">
	<figcaption>🔊</figcaption>
	
	<audio controls="" loading="lazy" src="https://shkspr.mobi/blog/wp-content/uploads/2013/03/OverDrive-DRM.ogg">
		<p>💾 <a href="https://shkspr.mobi/blog/wp-content/uploads/2013/03/OverDrive-DRM.ogg">Download this audio file</a>.</p>
	</audio>
</figure><p></p>

<h3 id="tweets"><a href="https://shkspr.mobi/blog/2013/03/libcampldn-library-camp-london-audio-recordings-writeup/#tweets">Tweets</a></h3>

<p>I'm happy to say the session was generally well received.</p>

<blockquote class="social-embed" id="social-embed-307816376754651136" 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/shedsue" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRjgBAABXRUJQVlA4ICwBAABwCACdASowADAAPrVEnkqnIyKhrjgMyOAWiWkADpgJafXRPLz9hoz856BgzHmyrxWyQmzI+DZW9OzboCfHKPxtEljtiysW29mdOiYQAP78fhFp3gS/C+Mp442/XOOiSdGsFPrb7MMMbBDO1Vm5dmyV3tSqgb1/b1+r9ZetM8HDUBn9cx5ikwL101up7EjxKCJnT7KWz19OSAWomYOgy1TOcbqxHdzerPTgr4XnoyWEOK2qpTm1cisRkEyIcXZPxQQm+Mx5cdXGFQ1MX3ErlN+iKBgBpKl7ySAN0UyNLhJcP5SYAWyCXyqNFox9pPBG/HJTP8y3/CfKXu3mbUUF65kK3vaqzWVmhGRPCGW+wYsMrugDQKBtPqFybsgKAjs6nB8sdxG/k3Gz0LNgAAA=" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">shedsue</p>@shedsue</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">Most exciting session of the day IMO Hacking Overdrive <a href="https://twitter.com/hashtag/libcampldn">#libcampldn</a> NOW! With <a href="https://twitter.com/edent">@edent</a></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/shedsue/status/307816376754651136"><span aria-label="0 likes" class="social-embed-meta">❤️ 0</span><span aria-label="0 replies" class="social-embed-meta">💬 0</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2013-03-02T11:35:17.000Z" itemprop="datePublished">11:35 - Sat 02 March 2013</time></a></footer></blockquote>

<blockquote class="social-embed" id="social-embed-307817135185473536" 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/LibraryCamp" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRh4CAABXRUJQVlA4IBICAADQCQCdASowADAAPrVInUunI6KhsdM6AOAWiUAXZoF9/9TGHQuK8Mf6G8EQ6TEUO4LdUdn0qcTAOt9VHGs7kwyRjikXfO+/q5LBw8f7ZVnhxKLEBIlILDAA/vz9OSMQP5NCygDNUkssL6yWWkK/QitwI9gBAOblU5OR/2ngOprVBe6vFEazvJjKO7uGdhsI75MhNDmsOqA1dqQoBhvfSHyA8S7M7E2V0EQK0Ii7chYQU9uzZeU/uXWf6uwB76HD9tXwxpOxDrFRV4IgiF0Y1v7Q6DTACnvTys7tQBRGoQLMxxM3CHx9OL0TH1Myt/0EmcXSlLNC+3Hbt4jKTBG6C7C2P75w3ukoOAR+BXcpAKmVDUfJyUDP7QBNMhCApdfFwLF2+0PJMjEGCcjcGXPUhGJ+upEvPaqpRHANl+enToXxsrRqV3iB0n+12dWYNbKh4iR6pFYwHNjOf0f6o1yjfoJyNGo06zvJc6Ozj5KDxpe2KzUnGMWAaAeiBhv9aZRfo545PP7CVJ7+ZL9phGRQdO2V+hrbCw4U+n8k3TPDbfB7wBb3qqvypahsfNhoFiqOP7MeSBFuVNDr3kdfPBHpLhu26vjUgExIUbDF5TmWDHjo7FWS3PzdQ27qzaeoJP3RUC+jhZ3ILUyPY1O2VHI/RMdKA8hhk3UrgKjkqLjGHSfyYGO9ID2cCZpRtR9ItnT8WqAAAA==" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">LibraryCamp</p>@LibraryCamp</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"><small class="social-embed-reply"><a href="https://twitter.com/edent">Replying to @edent</a></small><a href="https://twitter.com/edent">@edent</a> on hols with kindle. Ebooks in libraries. Prob 1) two weeks loan - why - this is a digital file! WTF <a href="https://twitter.com/hashtag/libcampldn">#libcampldn</a> <a href="https://twitter.com/hashtag/ebooks">#ebooks</a></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/LibraryCamp/status/307817135185473536"><span aria-label="0 likes" class="social-embed-meta">❤️ 0</span><span aria-label="0 replies" class="social-embed-meta">💬 0</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2013-03-02T11:38:18.000Z" itemprop="datePublished">11:38 - Sat 02 March 2013</time></a></footer></blockquote>

<blockquote class="social-embed" id="social-embed-307829377129922560" 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/LloydDavis" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRgYCAABXRUJQVlA4IPoBAACQCgCdASowADAAPrVSoU2nJKMiJzgKSOAWiWIAsR8EEmPMPjluAPvGv94koRE2mf6GwS7TVbOptg1lwYxrBvGWFUC0yVRCYAzqBHqXTBBSJ4IknbzbdFL73Sur6oAA/vfZdWl3eX8OIb8zxeJTjDh2FLNgcrV/fVDZezpWdIg8dOcJplf6N48l25gJV6ENKJlD7azv5FodxYEtNedX492x0ecLchlnzYZYgFX/XLIkwiMDltpK/XdCy0zf0KOfqfTXJnQCLJFgBSMNilYeTG6uqjR5M/mG6MVEDFsoUVXbwJHdeg+7o1QHGku/y9QiKjH8NWltMfiWpFvRPe5oKaPQ8GYZz8ETwNJiyFyTnlFCvKyJpxONrww4M3TZ6GdsAx/Men5jctfYdROEL1ZkvlE1AstgNCICu+5BjauVjeCuN5PKBT2TRl0zzrcEXV1vYBERGWAMXnsqI91XOI58s9/lcIzRWG4YTa7fG3CtOfIu+IyfWr1jTf0mSq6LOyX09UE3OjWuG3BXLEta4HiA50wVfFOob/+VxChtlZA9MYZxzQ+McSMGTUq+mVYmstVtSifnGDELgZAL5rfFyOqR60D+KdppQzTvJrF7NN6C4SNmdmsM/2I4vn3svVvFAaRhpVdzaHH7mgHI1331dms0+Xdwkx/JcTAmDAAAAA==" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Lloyd Davis</p>@LloydDavis</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">Much anxious excitement in the group as <a href="https://twitter.com/edent">@edent</a> showed how straightforward DRM is to break on epubs <a href="https://twitter.com/hashtag/libcampldn">#libcampldn</a></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/LloydDavis/status/307829377129922560"><span aria-label="0 likes" class="social-embed-meta">❤️ 0</span><span aria-label="0 replies" class="social-embed-meta">💬 0</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2013-03-02T12:26:57.000Z" itemprop="datePublished">12:26 - Sat 02 March 2013</time></a></footer></blockquote>

<blockquote class="social-embed" id="social-embed-307830372421492737" 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/calire" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRoADAABXRUJQVlA4IHQDAABwDQCdASowADAAPqVImUmmJKKhNVgNUMAUiWwAnTKEgJyIaQYi8Lfbec/o4wVgLk991xgzgNkvabLA4KDwpzMGi+0D+79qoCHjjuD3eW6vj16V4q3b5tt896irfSrV17sob9n7BfEYSbPVBZbU29rqMEr2wAD+0ewyzXY6m7+GsP/YZ7vIuZzKWu+ll1wNWSdvNCj80wcvZHEJ6GMAgRYQAw9oyU/ftOAfQBLfyFBEz8cGFXL/ZkeWwAbp/5WO+ah3/jnfycp+jz09PuRFkRk84VQdaMrqaz2J1km8ltWH6qHESSWZpuisNZYCt/1vKEMtZBcTWuLSHz/VRJ/y5qAWTUl9M7J0PeBiuDgKg7vQ+A9nogMjQ24hWpfEx0FNvb+77aAIWUOOWexNOdQin38mMEhr4xfqWm6hszZg2Uk2wvxoAu+ro7m7uvwCPxbN2eI5RaYYY0jqx1vftOpqsp3FkM8tqQFJkifLyZh9ECZqWtvzWRmmbCeBdoWbK5o0Rozq451D+URgTZ1tKDF8SHkHecRu6XxQLpXw8KZsS8j2vrx9lvbQQPNpk4z62HIO7ehcetBV10HwwbWJtePY07CjXGXkSDGnsUXcBM5vCTw7/Hatf1Gbp9W+AofM7+k3yQV+rkdh6Z0/lXlZTKJbRw3Vo19DYldhnibt1tDv5cy6KH7kyy7mDnZSgAaj5W5CmdyHZQgV+OVfQTlIWM+hJwlzY9yeYrogzJtGKG12E0D0joFjpqn06gj/MPIIo2rOER9hkZu2z5RhvW3uWk410ix8HW9JzKknPgxAbazLRuKc/lwuDEZziuNzUGgvNccqq8jPXO0kjqf3WlPpt20/eAMaOgjR4e/AYDJ9Bv5F7O++duaoJPRnEdFgod1ZZ/e42vUea93D9e8IQ2PrxbqOjvhOMAnsRjlf73Q68D38kU7hX2snIBqBs9w9eBkQJYkv/SjphioU+3rvGjHgXmYVMDkW/AYFY2DT/A+McsR0af/CR6W9QYh572FXmihOdQqq9NVFW5S3WEozDyQC3WCkvDw9UXzWmyvPKO3ItlIcbBuXSliF49h6Sq9fEsLH5bRuN1dPGphFvU7HxfBr9d5KAbuo53bZ7P9lf5DqQr98q99HJJjM8OzXd+rD/364352eXmQyof58qdFkn1INeQJFoeI6SwjQAA==" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Claire Back</p>@calire</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">eBook session one of the best I’ve been to at a Library Camp. <a href="https://twitter.com/edent">@edent</a> and not just because of the doughnuts. <a href="https://twitter.com/hashtag/LibCampLDN">#LibCampLDN</a></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/calire/status/307830372421492737"><span aria-label="1 likes" class="social-embed-meta">❤️ 1</span><span aria-label="0 replies" class="social-embed-meta">💬 0</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2013-03-02T12:30:54.000Z" itemprop="datePublished">12:30 - Sat 02 March 2013</time></a></footer></blockquote>

<h2 id="facilitating-the-coming-of-age-of-open-source-software-in-libraries"><a href="https://shkspr.mobi/blog/2013/03/libcampldn-library-camp-london-audio-recordings-writeup/#facilitating-the-coming-of-age-of-open-source-software-in-libraries">Facilitating the "Coming of Age" of Open Source Software in Libraries</a></h2>

<p>Primarily this was a discussion about the <a href="https://github.com/openlibraryenvironment/ole">Open Library Environment</a>.  An innovative foundation to <a href="https://openlibraryenvironment.org/">open source many parts of the library environment</a>.</p>

<p>We also discussed how to use other open source products - like FireFox on Internet connected PC.</p>

<p>Annoyingly, one of the participants asked for the session not to be recorded - which I have no problem with, but the guy didn't even speak during the discussion. What's that all about?</p>

<h2 id="codeclub"><a href="https://shkspr.mobi/blog/2013/03/libcampldn-library-camp-london-audio-recordings-writeup/#codeclub">CodeClub</a></h2>

<p>Greedily, I ran a second session after being asked to talk about my experiences <a href="https://shkspr.mobi/blog/tag/codeclub/">teaching kids to code using Scratch</a>.</p>

<p>I talked about the <a href="http://www.codeclub.org.uk/">CodeClub.org.uk</a> website and resource - telling the librarians how they could get involved.</p>

<p>I even showed off some of the Scratch games I had written.
<a href="http://www.flickr.com/photos/c_l_b/8522788680/" title="Library Camp London March 2013 by c_l_b, on Flickr"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/03/8522788680_b58246391c_o.jpg" width="598" height="800" alt="Library Camp London March 2013"></a>
Hopefully it will encourage more libraries to run coding sessions for kids.</p>

<h3 id="audio"><a href="https://shkspr.mobi/blog/2013/03/libcampldn-library-camp-london-audio-recordings-writeup/#audio">Audio</a></h3>

<p></p><figure class="audio">
	<figcaption>🔊</figcaption>
	
	<audio controls="" loading="lazy" src="https://shkspr.mobi/blog/wp-content/uploads/2013/03/CodeClub.ogg">
		<p>💾 <a href="https://shkspr.mobi/blog/wp-content/uploads/2013/03/CodeClub.ogg">Download this audio file</a>.</p>
	</audio>
</figure><p></p>

<h2 id="comics"><a href="https://shkspr.mobi/blog/2013/03/libcampldn-library-camp-london-audio-recordings-writeup/#comics">Comics</a></h2>

<p>Try as I might, I just can't get in to graphic novels.  I used to love the Beano as a kid, but most modern comics leave me cold.</p>

<p>It was, therefore, fascinating to hear about the rich tapestry of comics within libraries. How they're often used as gateways for reluctant readers.  How inexperienced librarians often misfile them.  And how explicit manga is not always suitable for young readers.</p>

<p>My resolution - to try to find at least one comic that I really enjoy.   I've been recommended <a href="http://en.wikipedia.org/wiki/Maus">Maus</a> (the story of the holocaust told from the perspective of some mice) and <a href="http://www.killshakespeare.com/">Kill Shakespeare</a> (a frankly bonkers epic tale about all of Shakespeare's characters).</p>

<h3 id="audio"><a href="https://shkspr.mobi/blog/2013/03/libcampldn-library-camp-london-audio-recordings-writeup/#audio">Audio</a></h3>

<p></p><figure class="audio">
	<figcaption>🔊</figcaption>
	
	<audio controls="" loading="lazy" src="https://shkspr.mobi/blog/wp-content/uploads/2013/03/Comics.ogg">
		<p>💾 <a href="https://shkspr.mobi/blog/wp-content/uploads/2013/03/Comics.ogg">Download this audio file</a>.</p>
	</audio>
</figure><p></p>

<h2 id="overall"><a href="https://shkspr.mobi/blog/2013/03/libcampldn-library-camp-london-audio-recordings-writeup/#overall">Overall</a></h2>

<p>A really worthwhile and invigorating experience.  Senate House Library is a delightful venue - although the layout of the rooms made the sessions a little noisy at times.</p>

<p>I enjoyed coming to an unconference which was so diverse, and had almost nothing to do with my day-to-day life.  I'd recommend that every BarCamp attendee participates in an event which is totally outside of their normal life.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=7735&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2013/03/libcampldn-library-camp-london-audio-recordings-writeup/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		<enclosure url="https://shkspr.mobi/blog/wp-content/uploads/2013/03/Hidden.ogg" length="10842767" type="audio/ogg" />
<enclosure url="https://shkspr.mobi/blog/wp-content/uploads/2013/03/OverDrive-DRM.ogg" length="11517250" type="audio/ogg" />
<enclosure url="https://shkspr.mobi/blog/wp-content/uploads/2013/03/CodeClub.ogg" length="10017539" type="audio/ogg" />
<enclosure url="https://shkspr.mobi/blog/wp-content/uploads/2013/03/Comics.ogg" length="12645730" type="audio/ogg" />

			</item>
		<item>
		<title><![CDATA[A Stock Exchange For Digital Media]]></title>
		<link>https://shkspr.mobi/blog/2013/01/a-stock-exchange-for-digital-media/</link>
					<comments>https://shkspr.mobi/blog/2013/01/a-stock-exchange-for-digital-media/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 06 Jan 2013 12:00:23 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[exchange]]></category>
		<category><![CDATA[kindle]]></category>
		<category><![CDATA[right to read]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=7300</guid>

					<description><![CDATA[The Internet is &#34;the world&#039;s most efficient copying machine&#34; -- Cory Doctorow.  This is a long and rambling blog post which asks two questions:       Given that we can only read one book at a time - can we set up a &#34;Kindle Stock Exchange&#34; for our unused media?     If so, what effect would this have on content producers and sellers who rely on artificial scarcity?   This has been mulling over in…]]></description>
										<content:encoded><![CDATA[<blockquote>The Internet is "<a href="http://craphound.com/littlebrother/about/">the world's most efficient copying machine</a>" -- Cory Doctorow.</blockquote>

<p>This is a long and rambling blog post which asks two questions:</p>

<ol>
    <li>Given that we can only read one book at a time - can we set up a "Kindle Stock Exchange" for our unused media?</li>
    <li>If so, what effect would this have on content producers and sellers who rely on artificial scarcity?</li>
</ol>

<p>This has been mulling over in my head for some time.</p>

<p></p><div id="attachment_2400" style="width: 310px" class="wp-caption alignnone"><a href="http://www.freefoto.com/preview/?ffid=1351-06-2"><img aria-describedby="caption-attachment-2400" class="size-medium wp-image-2400 " title="The Latin Quarter, Paris, France" src="https://shkspr.mobi/blog/wp-content/uploads/2010/08/1351_06_2_prev-300x200.jpg" alt="(c) FreeFoto.com Image licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License" width="300" height="200"></a><p id="caption-attachment-2400" class="wp-caption-text">Image from FreeFoto.com</p></div><p></p>

<h2 id="transactional-friction"><a href="https://shkspr.mobi/blog/2013/01/a-stock-exchange-for-digital-media/#transactional-friction">Transactional Friction</a></h2>

<p>One of the great advantages of the digital era is the reduction of transactional friction.</p>

<p>The time, effort and money it takes to perform a transaction in the online world is radically reduced from that of the physical world. Sending a letter to the other side of the world used to take weeks - and involved ships, planes, and physical delivery. Now a click of the mouse sends it anywhere in an instant.</p>

<p><a href="http://www.nealstephenson.com/">Neal Stephenson</a>'s novels in the <a href="http://www.amazon.co.uk/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fie%3DUTF8%26x%3D0%26ref_%3Dnb_sb_ss_i_0_11%26y%3D0%26field-keywords%3Dbaroque%2520cycle%26url%3Dsearch-alias%253Daps%26sprefix%3DBaroque%2520cyc&amp;tag=shkspr-21&amp;linkCode=ur2&amp;camp=1634&amp;creative=19450">Baroque Cycle</a><img style="border: none !important;margin: 0px !important" src="https://www.assoc-amazon.co.uk/e/ir?t=shkspr-21&amp;l=ur2&amp;o=2" alt="" width="1" height="1" border="0"> document the rise of the bank note. It used to be common practice for wealthy people to lug their gold with them when they went on journeys. This was, as you can imagine, a highly inefficient practice - it was slow, dangerous, and expensive. The bank note reduced the friction of having to physically transport gold.</p>

<p><a href="http://www.amazon.co.uk/gp/product/0099410680?ie=UTF8&amp;tag=shkspr-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=0099410680"><img class="aligncenter size-full wp-image-2387" title="41D7NDBKXTL._SL160_" src="https://shkspr.mobi/blog/wp-content/uploads/2010/08/41D7NDBKXTL._SL160_.jpg" alt="Cover art of Quicksilver" width="104" height="160"></a></p>

<p>The efficiency of being able to settle large debts without the need to physically move goods was a revolution which introduced the free movement of capital, and dramatically altered the nature of debt and lending. It shaped the modern world.</p>

<p>The digital world can also free us from the needs of the physical. While many of us already have some goods that only exist as 1s and 0s on disk - some <a href="https://web.archive.org/web/20130923145812/https://cultofless.tumblr.com/post/182833987/is-it-possible-to-own-nothing">pioneers</a> have already shifted as <a href="http://boingboing.net/2010/08/17/the-nitty-gritty-of.html">many of their possessions as possible away from the physical world</a>. They've turned their heavy, impractical, and inefficient gold into a light, practical and frictionless bank note.  A lifetime of books, films and music - stored on a lightweight thumb drive.  Or floating weightless on the Internet.</p>

<p>That's why, last year, <a href="https://shkspr.mobi/blog/2012/03/burning-all-my-books/">I decided to burn all my books</a>.</p>

<h2 id="making-money"><a href="https://shkspr.mobi/blog/2013/01/a-stock-exchange-for-digital-media/#making-money">Making Money</a></h2>

<p><a href="https://shkspr.mobi/blog/wp-content/uploads/2010/08/IMG_20100822_121354.jpg"><img class="aligncenter size-medium wp-image-2396" title="IMG_20100822_121354" src="https://shkspr.mobi/blog/wp-content/uploads/2010/08/IMG_20100822_121354-225x300.jpg" alt="My Bookshelf" width="225" height="300"></a></p>

<p>Here's a picture of my book shelf. At any moment, I can only read one book at a time, watch one DVD, and listen to one CD.</p>

<p>Would it make sense to sell all the books and DVDs I owned <em>except</em> for the one I was currently using? When it comes to <em>physical</em> books - no.</p>

<p>It would be so <strong>inefficient</strong>. It takes too much time, money, and effort to sell a single book than the value I would recoup from doing so. Sticking a book on eBay, postage, packing, dealing with refunds etc. is a lot of effort for relatively small gain.</p>

<p>The digital world changes all of that. While the ability to instantly consume is exciting,  what intrigues me is the ability to take my goods to market - and the consequences that would have on capitalism.</p>

<p>What would happen when - rather than buying books instantly - I can offer them for sale instantly?</p>

<h2 id="selling-my-bookshelf"><a href="https://shkspr.mobi/blog/2013/01/a-stock-exchange-for-digital-media/#selling-my-bookshelf">Selling My Bookshelf</a></h2>

<p>Imagine if you could easily rent out your DVDs - like a mini-BlockBuster. They're sat unused on the shelf all night, ignored while you're at work during the day, left unplayed when you go shopping.</p>

<p>The hyper-efficient online world makes this possible.</p>

<p>Just like taking a loan secured on my assets (car, house), I can release equity from my digital goods by selling them when I'm not using them. Which is most of the time.</p>

<p>99% of the time, your DVD collection isn't in use. You may <a href="https://web.archive.org/web/20130121054646/http://moviesatwork.co.uk/index.php">share them with your family, friends, and co-workers</a> - why wouldn't you share them with <em>everyone</em>?</p>

<p>There are some very good reasons why not in the physical world - access, lack of selection in your collection, wear and tear - but in the frictionless online marketplace, most of these concerns disappear.</p>

<p>Just as on eBay, your single DVD sits on the same shelf as someone selling thousands of DVDs.  The buyer probably doesn't care about range of selection or the providence of a seller - she just wants the item she desires.</p>

<p>With digital copies there are no issues of wear and tear and an online copy of a work is instantly accessible.</p>

<p>A second hand digital work is identical in quality to a factory fresh copy. My ebook edition of <a href="http://craphound.com/littlebrother/download/">Little Brother</a> is bit-for-bit identical to one bought anywhere.  In a perfect market, it would fetch the same price as one purchased from a retailer.  Or, more likely, the retailer would reduce the price to the lowest available on the market.
<a href="http://craphound.com/littlebrother/"><img class="aligncenter size-full wp-image-2386" title="littlebrotheruk" src="https://shkspr.mobi/blog/wp-content/uploads/2010/08/littlebrotheruk.jpg" alt="Cover art for Little Brother" width="321" height="489"></a></p>

<p>(This leads us down an interesting path. The whole notion of "second hand" or "used" goods disappears when we're talking about digital copies. But that's for another post.)</p>

<h2 id="real-time-trading"><a href="https://shkspr.mobi/blog/2013/01/a-stock-exchange-for-digital-media/#real-time-trading">Real Time Trading</a></h2>

<p>We can even go a step further.  Stock trading used to be conducted by sweaty men shouting in arenas.  There are now <a href="http://econophysics.blogspot.com/2007/06/algorithmic-trading.html">electronic agents on the the stock exchange which process millions of trades per second</a>.  Every millisecond the computers execute trades based on real-time information.</p>

<p>I've said previously that you can only read one book at a time.  Your eBook reader will only display one page at a time - so why not <strong>sell the pages that you aren't reading</strong>?  In the physical world, perhaps two people can read a book at the same time (if they're close and not overly annoyed with the other's reading speed).  In the digital world, you could have one reader for every page in the book.</p>

<p>The second you click "Next Page" your eBook reader could instantly find the cheapest price for the page you want to read - and sell the pages you're not reading for the best price.</p>

<p>A DVD could be separated into scenes or - to push it to the extreme - individual frames.  If I sell my movies when I'm <em>not</em> watching them - why shouldn't I lend or sell them while I <em>am</em> watching them?</p>

<h2 id="the-effect"><a href="https://shkspr.mobi/blog/2013/01/a-stock-exchange-for-digital-media/#the-effect">The Effect</a></h2>

<p>Moving from transporting gold to transporting bank notes to digital trading has radically changed the nature of money and banking.  The free movement of capital completely disrupted the way the world works.  The free market dominates economic thought. But it is only a free market between giant players.  Only corporations can afford to play capitalism's game.</p>

<p>Will the free market be brought down to individuals?  Will a grandmother in her living room be able to sell her digital goods as easily and freely as Warner Brothers?</p>

<p>What does the media publishing landscape look like when every consumer can change their bookshelf into a second hand store?  Why would anyone buy a copy of a work from Amazon when they could borrow from their neighbour - even if that neighbour lived on the other side of the world?</p>

<p>Would we see multiple <a href="http://en.wiktionary.org/wiki/bourse">Bourse</a> to facilitate the exchange and a willingness for people to sweat their assets?</p>

<p>Perhaps it will move us to "subscription" models for mixed media - taking a £50 per month subscription to books in the same way many of us do for television channels.</p>

<p>What does it even mean to sell goods when they can be replicated instantly at zero cost?</p>

<p>I don't know - but I think it will be exciting to witness.</p>

<h2 id="there-is-an-analogue-hole-in-your-mind"><a href="https://shkspr.mobi/blog/2013/01/a-stock-exchange-for-digital-media/#there-is-an-analogue-hole-in-your-mind">There Is An Analogue Hole In Your Mind</a></h2>

<p>Applying analogue thinking to the digital world leads us down some interesting rabbit holes.  As a thought-experiment, it's incredible to imagine that we could end up in a crazy world where we pay-per-word, where the <a href="http://www.gnu.org/philosophy/right-to-read.html">right to read</a> is predicated on software stock brokers trying to extract every micro-cent of value out of copyrighted works.</p>

<p>We need to break out of our old ways of thinking.  The zero-friction economy is a <a href="http://en.wikipedia.org/wiki/Paradigm_shift">paradigm shift</a> (in the sense of <a href="http://en.wikipedia.org/wiki/Thomas_Samuel_Kuhn">Kuhn</a>).  We need to adapt our modes of thinking and our economies to this brave new world.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=7300&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2013/01/a-stock-exchange-for-digital-media/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[If The Kindle is Sold at Break-Even, Why Doesn't Amazon Sell ePub?]]></title>
		<link>https://shkspr.mobi/blog/2012/11/if-the-kindle-is-sold-at-break-even-why-doesnt-amazon-sell-epub/</link>
					<comments>https://shkspr.mobi/blog/2012/11/if-the-kindle-is-sold-at-break-even-why-doesnt-amazon-sell-epub/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 15 Nov 2012 07:10:11 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[.mobi]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[epub]]></category>
		<category><![CDATA[kindle]]></category>
		<category><![CDATA[NaBloPoMo]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=6399</guid>

					<description><![CDATA[Amazon claims that it makes no money from the sale of Kindle eReader hardware.  Looking at the prices of eink devices at wholesalers, this looks broadly accurate.  They do seem to be selling at around wholesale cost - customers also get Amazon&#039;s fabulous support, free software updates, and high quality manufacturing.  Yet there is a curious anomaly. Why aren&#039;t Amazon selling ePub books? …]]></description>
										<content:encoded><![CDATA[<p>Amazon claims that <a href="http://www.forbes.com/sites/kellyclay/2012/10/12/amazon-confirms-it-makes-no-profit-on-kindles/">it makes no money from the sale of Kindle eReader hardware</a>.</p>

<p>Looking at <a href="http://www.alibaba.com/showroom/e--ink.html">the prices of eink devices at wholesalers</a>, this looks broadly accurate.  They do seem to be selling at around wholesale cost - customers also get Amazon's fabulous support, free software updates, and high quality manufacturing.</p>

<p>Yet there is a curious anomaly. Why aren't Amazon selling ePub books?</p>

<h2 id="terminology"><a href="https://shkspr.mobi/blog/2012/11/if-the-kindle-is-sold-at-break-even-why-doesnt-amazon-sell-epub/#terminology">Terminology</a></h2>

<p>A quick diversion into the terminology used in this article.</p>

<ul>
    <li>eReader - the physical hardware. Kindle, Kobo, nook, etc.</li>
    <li>eBook - the electronic file containing the words &amp; pictures. ePub, Mobi, PDF, etc.</li>
</ul>

<h2 id="background"><a href="https://shkspr.mobi/blog/2012/11/if-the-kindle-is-sold-at-break-even-why-doesnt-amazon-sell-epub/#background">Background</a></h2>

<p>There are, broadly speaking, two main formats for ebook - ePub and MobiPocket.  Think of them like the difference between 8-Tracks and cassette tapes - they both hold music, but play on different system.</p>

<p>ePub works on just about every eReader on the planet - with the notable exception of the Kindle.</p>

<p>MobiPocket (or Mobi, for short) only works on the Kindle<sup id="fnref:mobi"><a href="https://shkspr.mobi/blog/2012/11/if-the-kindle-is-sold-at-break-even-why-doesnt-amazon-sell-epub/#fn:mobi" class="footnote-ref" title="I'm talking specifically about the DRM'd form of Mobi which is sold by Amazon." role="doc-noteref">0</a></sup>.</p>

<p>Wikipedia has a fairly comprehensive <a href="http://en.wikipedia.org/wiki/Comparison_of_e-book_readers#File_format_support">comparison of which device can handle which format</a>.</p>

<p>So, we have a problem.  The books you buy from Amazon can't be read on your Sony, Kobo, Nook, or Generic eReader.  Well, they can, but you have to <a href="http://www.wired.com/2011/01/how-to-strip-drm-from-kindle-e-books-and-others/">remove the DRM</a>, covert the book to the ePub, and hope that everything works ok.</p>

<p>What a pain in the arse.</p>

<h2 id="what-would-happen-if"><a href="https://shkspr.mobi/blog/2012/11/if-the-kindle-is-sold-at-break-even-why-doesnt-amazon-sell-epub/#what-would-happen-if">What Would Happen If...</a></h2>

<p>Now, I'm not suggesting that the Kindle should be able to read ePub books.  Obviously, it's technically capable of doing so - but it would mean that Amazon customers could compare prices with other retailers and start to leave the Amazon ecosystem.</p>

<p>What I'm suggesting is that Amazon should say "Buy this ebook for your Kobo" and deliver an ePub to those poor, unfortunate souls who haven't been blessed with a Kindle.</p>

<p>There are lots of <a href="http://pinterest.com/bwmbooks/ebook-ereader-stats-and-charts/">statistics regarding eReader share</a>.  Some suggest that <a href="https://socialmediachimps.com/2012/04/infographic-ebook-readers-book-publishing-industry/">Amazon have a ~47% share of the eReader market in the US</a> whereas the <a href="http://en.wikipedia.org/wiki/Kobo_eReader#Market_share">Kobo eReader has a 46% share in Canada, and 50% share in France</a>.</p>

<p>Let's say that the Kindle has a worldwide share of 50%.  Amazon has two options:</p>

<ol><li>It can aggressively pursue that market share by producing more innovative, cheaper hardware, and hope to convert users to the Amazon flock</li>
<li>It can accept that some people don't want its hardware and start selling books directly to those users</li>
</ol>

<p>Amazon claims that it makes more money from eBook sales than hardware. So why doesn't it expand its market to the 50% of eReaders which are currently not served by its store?</p>

<p>At the moment, customers with Kobo, nook, and other eReaders can compare prices across a number of eBook stores.  What would happen if they could add Amazon to the list of shops they could compare with?</p>

<div id="footnotes" role="doc-endnotes">
<hr aria-label="Footnotes">
<ol start="0">

<li id="fn:mobi">
<p>I'm talking specifically about the DRM'd form of Mobi which is sold by Amazon.&nbsp;<a href="https://shkspr.mobi/blog/2012/11/if-the-kindle-is-sold-at-break-even-why-doesnt-amazon-sell-epub/#fnref:mobi" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

</ol>
</div>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=6399&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2012/11/if-the-kindle-is-sold-at-break-even-why-doesnt-amazon-sell-epub/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Command Line Backup for DVDs]]></title>
		<link>https://shkspr.mobi/blog/2012/02/command-line-backup-for-dvds/</link>
					<comments>https://shkspr.mobi/blog/2012/02/command-line-backup-for-dvds/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 22 Feb 2012 12:37:39 +0000</pubDate>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[dvd]]></category>
		<category><![CDATA[ripping]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=5364</guid>

					<description><![CDATA[This is a quick tutorial to show you how to rip DVDs on a headless server.  That is; one which only has command line access.  The documentation for MakeMKV is available.  It&#039;s a bit sparse. It also doesn&#039;t have many of the features of the GUI.  For example, the GUI allows you to select which video, audio, and subtitles, you want to copy. So if you only want the original German director&#039;s…]]></description>
										<content:encoded><![CDATA[<p>This is a quick tutorial to show you how to rip DVDs on a headless server.  That is; one which only has command line access.</p>

<p><a href="http://www.makemkv.com/developers/usage.txt">The documentation for MakeMKV is available</a>.  It's a bit sparse. It also doesn't have many of the features of the GUI.</p>

<p>For example, the GUI allows you to select which video, audio, and subtitles, you want to copy. So if you only want the original German director's commentary, with the Swedish subtitles from the main feature, you can do that.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2012/02/makemkv-gui.jpg" alt="makemkv gui" title="makemkv gui" width="312" height="324" class="aligncenter size-full wp-image-5365">
The command line is an "all or nothing affair".</p>

<h2 id="install-the-software"><a href="https://shkspr.mobi/blog/2012/02/command-line-backup-for-dvds/#install-the-software">Install The Software</a></h2>

<p>We're going to be using MakeMKV.  The <a href="http://www.makemkv.com/forum2/viewtopic.php?f=3&amp;t=224">latest version of the Linux software</a> can be found on their forum.</p>

<p>First, download both pieces of software.</p>

<pre>wget http://www.makemkv.com/download/makemkv-bin-1.7.6.tar.gz
wget http://www.makemkv.com/download/makemkv-oss-1.7.6.tar.gz</pre>

<p>Then, extract the files.</p>

<pre>tar -zxvf makemkv-bin-1.7.6.tar.gz
tar -zxvf makemkv-oss-1.7.6.tar.gz</pre>

<p>Get the tools you need to build the software</p>

<pre>sudo apt-get install build-essential libc6-dev libssl-dev libexpat1-dev libgl1-mesa-dev libqt4-dev</pre>

<p><strong>NOTE:</strong> You need GCC version 4.6 or higher.  If you're unsure which version you have, type:</p>

<pre>gcc --version</pre>

<p>If you need a more recent version, <a href="http://superuser.com/questions/310809/how-can-i-update-gcc-to-the-latest-version-in-ubuntu-10-04/394811#394811">follow these GCC upgrade instructions on StackOverflow</a>.</p>

<p>To build the software, first compile the Open Source part</p>

<pre>cd makemkv-oss-1.7.6
make -f makefile.linux
sudo make -f makefile.linux install</pre>

<p>Then install the binary part (you will have to agree to a licence).</p>

<pre>cd ../makemkv-bin-1.7.6
make -f makefile.linux
sudo make -f makefile.linux install</pre>

<p>All should be installed without error!</p>

<h2 id="running-for-the-first-time"><a href="https://shkspr.mobi/blog/2012/02/command-line-backup-for-dvds/#running-for-the-first-time">Running for the First Time</a></h2>

<p>Stick a DVD in your drive and run the following command</p>

<pre>makemkvcon -r info</pre>

<p>You should get a bunch of information about the drive and the program.</p>

<p>To see information about the disc, run</p>

<pre>makemkvcon -r info disc:0</pre>

<p>Assuming that your DVD drive is 0.</p>

<h2 id="how-to-rip"><a href="https://shkspr.mobi/blog/2012/02/command-line-backup-for-dvds/#how-to-rip">How To Rip</a></h2>

<p>This command rips all the movies on the disc which are longer than 3600 seconds (60 minutes).  This means that it should skip any special features etc.</p>

<p>You will need to create the folder you want to rip to first. The filename will be "title00.mkv" so make sure you're ripping to a unique folder each time.</p>

<pre>makemkvcon --minlength=3600 -r --decrypt --directio=true mkv disc:0 all /DVDs/MovieName/ ; eject -r</pre>

<p>The " ; eject -r" tells the system to eject the disc once ripped.</p>

<h2 id="what-cant-you-do"><a href="https://shkspr.mobi/blog/2012/02/command-line-backup-for-dvds/#what-cant-you-do">What Can't You Do?</a></h2>

<p>MakeMKVcon is missing the following functionality (hopefully being fixed by its creator)</p>

<ul>
    <li>Can't select a specific title.</li>
    <li>Can't extract specific audio files.</li>
    <li>Can't specify subtitles.</li>
    <li>Can't create folder.</li>
    <li>Can't set filename.</li>
</ul>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=5364&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2012/02/command-line-backup-for-dvds/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[How Do You Upgrade An eBook?]]></title>
		<link>https://shkspr.mobi/blog/2011/03/how-do-you-upgrade-an-ebook/</link>
					<comments>https://shkspr.mobi/blog/2011/03/how-do-you-upgrade-an-ebook/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 08 Mar 2011 17:47:07 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[ebooks]]></category>
		<category><![CDATA[jasper fforde]]></category>
		<category><![CDATA[thursday next]]></category>
		<category><![CDATA[upgrades]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=3727</guid>

					<description><![CDATA[As I&#039;ve mentioned before, Jasper Fforde is one of my favourite authors.  His latest book &#34;One of Our Thursdays is Missing&#34; is a brilliant work of fiction - but contains a rather worrying flaw.  Well, I say a &#34;worrying flaw&#34; - I mean an error.  All books contain errata - I think that&#039;s a given - but outside of academia, Jasper Fforde is the only author I know who offers upgrades to his books. …]]></description>
										<content:encoded><![CDATA[<p>As I've mentioned before, <a href="https://shkspr.mobi/blog/2010/01/redefining-the-book/">Jasper Fforde is one of my favourite authors</a>.  His latest book "<a href="http://www.amazon.co.uk/gp/product/0340963077?ie=UTF8&amp;tag=shkspr-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=0340963077">One of Our Thursdays is Missing</a>" is a brilliant work of fiction - but contains a rather worrying flaw.</p>

<p>Well, I say a "worrying flaw" - I mean an error.  All books contain errata - I think that's a given - but outside of academia, <a href="http://www.jasperfforde.com/upgrade/upgrade.html">Jasper Fforde is the only author I know who offers upgrades to his books</a>.</p>

<p>Here's a sample from the original Thursday Next "patch"</p>

<blockquote><p>5: Using a fine black pen make the following corrections:

</p><p>6: Go to page 32 and replace 'Stella' with 'Steller's - this is the correct spelling. The large slow-moving-manatee-type-mermaid-legend creature was named by Georg Wilhelm Steller, the German naturalist. </p></blockquote>

<h2 id="whats-the-error"><a href="https://shkspr.mobi/blog/2011/03/how-do-you-upgrade-an-ebook/#whats-the-error">What's The Error?</a></h2>

<p>The book contains a number of charming illustrations - the final illustration is meant to be (NO SPOILERS) about a wiped out clown army.  Instead, it's a repeat of an earlier illustration of (NO SPOILERS) mimes encircling a car.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2011/03/Screenshot-of-incorrect-image-in-One-of-Our-Thursdays-is-Missing.jpg" alt="Screenshot of incorrect image in One of Our Thursdays is Missing" title="Screenshot of incorrect image in One of Our Thursdays is Missing" width="400" height="547" class="aligncenter size-full wp-image-3728"></p>

<p>At the time of writing, there's no upgrade listed for the latest book - although there are <a href="http://www.jasperfforde.com/subindex/tn6subindex.html">a range of fabulous special features</a>.  I've dropped Mr Fforde an email alerting him to this devastating turn of events.</p>

<p>Yes, yes, it's fairly minor in the grand scheme of things.</p>

<h2 id="expecting-more"><a href="https://shkspr.mobi/blog/2011/03/how-do-you-upgrade-an-ebook/#expecting-more">Expecting More</a></h2>

<p>Of course, one could argue that traditional books don't get upgrades - so why should this be a problem for ebooks?</p>

<ul>
    <li>I can take my physical book back to the shop and get a replacement.  Or even send it back to the publisher.  With eBooks, this is virtually impossible - not least because of the DRM issues involved in revoking a book.</li>
    <li>If a book contains a serious error, I can print out an errata sheet.  The DRM on eBooks prevents me from altering their contents.</li>
    <li>We should expect more. This is a new medium - we should expect more than simply plain text in a DRM layer.</li>
</ul>

<p>Yes, it all comes down to DRM - or, as Jasper Fforde puts it...</p>

<blockquote><p>The DRM was the Dark Reading Matter – the unseeable part of the BookWorld.</p></blockquote>

<p>and</p>

<blockquote><p>DRM’s existence remained theoretical, at best.</p></blockquote>

<p>I don't know if I'm reading too much in to Fforde's work - but he doesn't strike me as the sort of author to use an acronym without a thorough understanding of what it means.  I have no shame in saying that I removed the DRM on the ePub I purchased in order to read it on my Kindle (which does not support Adobe's DRM scheme).</p>

<p>I don't know how I expect an eBook upgrade to work - with or without DRM.  I don't want an author, book seller, or publisher to randomly change the book I'm reading - that's a little too similar to <a href="http://www.theregister.co.uk/2009/07/18/amazon_removes_1984_from_kindle/">Amazon deleting 1984 from its Kindles</a>.</p>

<p>I know I don't want to buy an entirely new copy - just because some punctuation has been fixed.</p>

<p>Should I be able to download <a href="http://en.wikipedia.org/wiki/Diff">a diff</a> and let my eReader decide which version of a book I want to see?</p>

<p>Should I be able to get an update free?  Should it cost?</p>

<p>So many questions and so few answers.  If you've got any thoughts on the matter - please let me know.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=3727&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2011/03/how-do-you-upgrade-an-ebook/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[eBook Libraries and DRM]]></title>
		<link>https://shkspr.mobi/blog/2010/08/ebook-libraries-and-drm/</link>
					<comments>https://shkspr.mobi/blog/2010/08/ebook-libraries-and-drm/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 01 Aug 2010 10:42:55 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[ebooks]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[mobile]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=2305</guid>

					<description><![CDATA[I was pleasantly surprised to see this poster at my local train station.  Looks like Surrey Library is moving to the digital age.  eBooks and eAudiobooks from Surrey Library (click to embiggen)  &#34;Bet the site doesn&#039;t work on my phone,&#34; I thought.  http://ebooks.surreycc.gov.uk/  I was wrong!  Overall, this is a brilliant new service.  A great initiative to get people reading more books and…]]></description>
										<content:encoded><![CDATA[<p>I was pleasantly surprised to see this poster at my local train station.  Looks like <a href="http://www.bbc.co.uk/news/10586686">Surrey Library is moving to the digital age</a>.</p>

<p></p><div id="attachment_2306" style="width: 235px" class="wp-caption aligncenter"><a href="https://shkspr.mobi/blog/wp-content/uploads/2010/08/IMG_20100709_180158.jpg"><img aria-describedby="caption-attachment-2306" class="size-medium wp-image-2306" title="IMG_20100709_180158" src="https://shkspr.mobi/blog/wp-content/uploads/2010/08/IMG_20100709_180158-225x300.jpg" alt="Poster advertising Surrey's digital library service" width="225" height="300"></a><p id="caption-attachment-2306" class="wp-caption-text">eBooks and eAudiobooks from Surrey Library (click to embiggen)</p></div><p></p>

<p>"Bet the site doesn't work on my phone," I thought.</p>

<p></p><div id="attachment_2308" style="width: 298px" class="wp-caption aligncenter"><a href="http://ebooks.surreycc.gov.uk/"><img aria-describedby="caption-attachment-2308" class="size-full wp-image-2308 " title="ebookmobile" src="https://shkspr.mobi/blog/wp-content/uploads/2010/08/ebookmobile.png" alt="Mobile Friendly eBook Library" width="288" height="480"></a><p id="caption-attachment-2308" class="wp-caption-text">http://ebooks.surreycc.gov.uk/</p></div><p></p>

<p>I was wrong!</p>

<p>Overall, this is a brilliant new service.  A great initiative to get people reading more books and improving library services.&nbsp; Take a look at <a href="https://web.archive.org/web/20100713020910/https://ebooks.surreycc.gov.uk/00000466-0000-0000-0000-000000000030/10/596/en/Default.htm">ebooks.surreycc.gov.uk</a></p>

<p>There's just one problem...</p>

<h2 id="drm"><a href="https://shkspr.mobi/blog/2010/08/ebook-libraries-and-drm/#drm">DRM</a></h2>

<p><span id="more-2305"></span></p>

<p>Digital Restrictions Management - as the name implies - prevents you from performing certain actions with a file.&nbsp; As it happens, I <em>don't</em> disagree with the notion that a rented work should have restrictions on its use.&nbsp; These books are given to me for free - I don't own them.&nbsp; DRM serves to enforce the tacit social construct that - if I borrow a book from you - I'm expected not to lend it on and return it after a reasonable period.&nbsp; That's fine with me.</p>

<p>What I <em>do</em> disagree with is <strong>artificial scarcity</strong>.&nbsp; In the "real" world, if you only have 3 copies of a book, you can only lend out 3 copies.&nbsp; In the digital world, if you have one item, you can copy it an infinite number of times.&nbsp; Pick a file, hit CTRL+C then CTRL+V - instant copy.&nbsp; And you can do it as many times as you like.</p>

<p><img class="aligncenter size-full wp-image-2311" title="blink" src="https://shkspr.mobi/blog/wp-content/uploads/2010/08/blink.png" alt="Only one copy of &quot;Blink&quot;" width="397" height="562">In a physical library, only one person can borrow a book at a time.&nbsp; In a digital library, it makes <em>no sense</em> to say there is only one copy.</p>

<p>The title can be lent out to as many people who want it.</p>

<p>Some books are - bizarrely - more available than others.&nbsp; Why can some books have 7 copies and others only 1?</p>

<img class="aligncenter size-full wp-image-2315" title="7copies" src="https://shkspr.mobi/blog/wp-content/uploads/2010/08/7copies.png" alt="7 Copies of this book" width="378" height="554">

<p>Which leads us in to the incredible situation of being on a <em>waiting list</em> for a digital file!</p>

<p><img class="aligncenter size-full wp-image-2317" title="waitinglist" src="https://shkspr.mobi/blog/wp-content/uploads/2010/08/waitinglist.png" alt="Waiting List" width="348" height="213">This artificial scarcity also has an impact on the number of books you can borrow.&nbsp; If I'm going on a two week holiday, why shouldn't I be allowed to borrow as many books as I like?&nbsp; Taking those books from a physical library would stop other patrons enjoying the works - in a digital library anyone can borrow any work simultaneously.
<img class="aligncenter size-full wp-image-2312" title="checkout" src="https://shkspr.mobi/blog/wp-content/uploads/2010/08/checkout.png" alt="Checkout restricts the number of titles you can borrow" width="557" height="253"></p>

<p>Finally, we have the issue of copying.&nbsp; One of the reasons I use libraries is for research.&nbsp; In fairness, the DRM does allow for limited copying.&nbsp; But different books have different allowances despite - presumably - being covered by the same copyright regime.</p>

<img class="aligncenter size-full wp-image-2316" title="copying" src="https://shkspr.mobi/blog/wp-content/uploads/2010/08/copying.png" alt="Ony limited copying allowed" width="401" height="161">

<p>This is <strong>madness</strong>.&nbsp; Why take something as amazing as the digital revolution and try to drag it down to the mundane level of the analogue world?&nbsp; It's like inventing the motorcar and insisting that drivers carry a bale of hay, replacement horseshoes and travel no faster that 50mph.</p>

<h2 id="compatibility"><a href="https://shkspr.mobi/blog/2010/08/ebook-libraries-and-drm/#compatibility">Compatibility</a></h2>

<p>The side effect of this wasteful DRM is a lack compatibility with popular products.</p>

<p>The MP3 and WMA audiobooks require the <a href="http://overdrive.com/software/omc/">OverDrive Media Console</a>.&nbsp; ODMC is compatible with PC and Mac - but not Linux.&nbsp; It works on Android, BlackBerry, iPhone and Windows mobile - but not the billions of Symbian or J2ME handsets out there.</p>

<p>The DRM on the eBooks requires Adobe's proprietary <a href="http://www.adobe.com/products/digitaleditions/">Digital Editions software</a>.&nbsp; It's not available on Linux and - judging by the <a href="https://shkspr.mobi/blog/2010/01/waterstones-elonex-511eb-review-part-2/#comments">comments on my blog</a> - it doesn't work very well on Windows or Mac.&nbsp; It's also restricted to a few ebook readers - <em>excluding </em><a href="http://amzn.to/buyKindle">Amazon's Kindle</a>.</p>

<p>So, due to DRM, we're left with a library service which...</p>

<ul>
    <li>Artificially restricts how many books are available.</li>
    <li>Forces people to buy a particular brand of eBook reader or mobile phone.</li>
    <li>Requires the use of Windows or Mac.</li>
    <li>Prevents the early return of some media (you can't "return" some books early. Why?)</li>
    <li>Stops the quoting of passages for future use.</li>
</ul>

<p>Overall - what Surrey Libraries have done is take an amazing service and cripple it.&nbsp; The potential is there - they just need their mindset moved to the 21st century.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=2305&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2010/08/ebook-libraries-and-drm/feed/</wfw:commentRss>
			<slash:comments>11</slash:comments>
		
		
			</item>
	</channel>
</rss>
