<?xml version="1.0" encoding="UTF-8"?><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>Die Welt ist gar nicht so. &#187; rtmpe</title>
	<atom:link href="http://blog.dieweltistgarnichtso.net/tag/rtmpe/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.dieweltistgarnichtso.net</link>
	<description>Sie ist ganz anders.</description>
	<lastBuildDate>Mon, 23 Sep 2013 15:41:20 +0000</lastBuildDate>
	<language>de-DE</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.0.35</generator>
	<item>
		<title>Sinnlose Verschlüsselung bei MyVideo.de</title>
		<link>http://blog.dieweltistgarnichtso.net/sinnlose-verschlusselung-bei-myvideo-de</link>
		<comments>http://blog.dieweltistgarnichtso.net/sinnlose-verschlusselung-bei-myvideo-de#comments</comments>
		<pubDate>Sat, 22 Jun 2013 00:54:03 +0000</pubDate>
		<dc:creator><![CDATA[erlehmann]]></dc:creator>
				<category><![CDATA[Bastelei]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[myvideo]]></category>
		<category><![CDATA[rc4]]></category>
		<category><![CDATA[rtmpe]]></category>

		<guid isPermaLink="false">http://blog.dieweltistgarnichtso.net/?p=8089</guid>
		<description><![CDATA[Das LG Hamburg verbot die Software JDownloader2, weil diese von der Webseite MyVideo.de Videos herunterladen konnte (Beschluss als PDF). Angeblich waren diese Videos mit einem Verschlüsselungsverfahren geschützt, das das Gericht als wirksame technische Schutzmaßnahme beschreibt. Wie aber funktioniert diese Verschlüsselung? &#8230; <a href="http://blog.dieweltistgarnichtso.net/sinnlose-verschlusselung-bei-myvideo-de">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>
<a href="http://www.golem.de/news/jdownloader2-downloadsoftware-fuer-streaming-in-deutschland-verboten-1306-99891.html">Das <abbr title="Landgericht">LG</abbr> Hamburg verbot die Software <i>JDownloader2</i></a>, weil diese von der Webseite <i>MyVideo.de</i> Videos herunterladen konnte (<a href="http://raschlegal.de/uploads/media/LG_HH__B.v._25.04.13__Az._310_O_144-13.pdf">Beschluss als <abbr title="Portable Document Format">PDF</abbr></a>). Angeblich waren diese Videos mit einem <q cite="http://raschlegal.de/uploads/media/LG_HH__B.v._25.04.13__Az._310_O_144-13.pdf">Verschlüsselungsverfahren</q> geschützt, das das Gericht als <q cite="http://raschlegal.de/uploads/media/LG_HH__B.v._25.04.13__Az._310_O_144-13.pdf">wirksame technische Schutzmaßnahme</q> beschreibt. Wie aber funktioniert diese Verschlüsselung? Um das herauszufinden, schaute ich mir den Quellcode von <i>MyVideo.de</i> an; als Beispiel wählte ich <a href="http://www.myvideo.de/watch/8336292/Folge_1_Wer_ist_Naruto_Naruto">eine Folge der <i>Anime</i>-Serie <cite>Naruto</cite></a>.
</p>
<ins datetime="2013-06-22T08:11:00+00:00">
<p>
<a href="http://jdownloader.org/de/news/blog/x20130619-161329rtmpe">Die Herstellerfirma von <i>JDownloader2</i> erläutert</a>: <q cite="http://jdownloader.org/de/news/blog/x20130619-161329rtmpe">Die Funktion war lediglich vorübergehend in einer Beta-Version der Software, also den Nightly-Builds des JDownloader2, enthalten.</q> <q cite="http://jdownloader.org/de/news/blog/x20130619-161329rtmpe">Auf entsprechenden Hinweis ist diese Änderung selbstverständlich rückgängig gemacht worden. Sowohl der JDownloader als auch die aktuellen Nightly-Builds (JDownloader2) sind also weiterhin legal.</q>
</p>
</ins>
<p>
Die Webseite enthält zwei Variablen, die an den eingebetteten <i>Flash</i>-Player übergeben werden: <var>_encxml</var> mit dem Wert <samp>http%3A%2F%2Fwww.myvideo.de%2Fdynamic%2Fget_player_video_xml.php</samp> und <var>ID</var> mit dem Wert <samp>8336292</samp>. Die erste Variable ist <a href="http://de.wikipedia.org/wiki/URL-Encoding"><abbr title="Uniform Resource Locator">URL</abbr>-kodiert</a>; dekodiert lautet sie <samp>http://www.myvideo.de/dynamic/get_player_video_xml.php</samp>. Übergibt man die zweite Variable als Parameter im <a href="http://de.wikipedia.org/wiki/Query_String"><i lang=en>Query String</i></a>, erhält man <samp>http://www.myvideo.de/dynamic/get_player_video_xml.php?ID=8336292</samp> – dort befindet sich ein <a href="http://daten.dieweltistgarnichtso.net/src/myvideo-8336292.encxml">unleserliches – vermutlich verschlüsseltes – Dokument</a>.
</p>
<p>
Den notwendigen Schlüssel berechnet der <a href="http://is2.myvideo.de/de/player/mingR13f/ming.swf"><i>Flash</i>-Player von <i>MyVideo.de</i></a> aus einem Generalschlüssel und der Variable <var>ID</var> – die Formel lautet md5(<var>Generalschlüssel</var>+md5(<var>ID</var>)). Der Generalschlüssel ist mit der Kommandozeile ermittelbar: Die Eingabe von <kbd>tail -c+9 ming.swf | openssl zlib -d | strings | grep KEY</kbd> ergibt unter Anderem <samp>MASTER_KEY@c8407a08b3c71ea418ec9dc662f2a56e40cbd6d5a114aa50fb1e1079e17f2b83</samp>. Mit <kbd>echo -n c8407a08b3c71ea418ec9dc662f2a56e40cbd6d5a114aa50fb1e1079e17f2b83`echo -n 8336292 | md5sum | cut -d' ' -f1` | md5sum</kbd> erhält man schließlich den Schlüssel <samp>36210cd70cc7f123dfd358bf8653eb4a</samp>.
</p>
<p>
Die Entschlüsselung erfolgt mit dem <a href="http://de.wikipedia.org/wiki/RC4"><abbr title="Ron's Code 4">RC4</abbr>-Algorithmus</a> (<a href="http://daten.dieweltistgarnichtso.net/src/myvideo-8336292.py">Beispiel-Code in <i>Python</i></a>); das Ergebnis ist <a href="http://daten.dieweltistgarnichtso.net/src/myvideo-8336292.xml">eine <abbr title="eXtensible Markup Language">XML</abbr>-Datei</a> – im vorliegenden Beispiel gehört diese allerdings nicht zu <i>Naruto</i> sondern zu <a href="http://www.myvideo.de/watch/8085086/MyVideoTV_30s_TV_Spot_mit_David_Hasselhoff_The_Hoff">einem Werbe-Video mit David Hasselhoff</a>. Der Grund dafür sind fehlende <abbr title="Uniform Resource Locator">URL</abbr>-Parameter: Entschlüsselt man den Inhalt von <samp>http://www.myvideo.de/dynamic/get_player_video_xml.php?domain=www.myvideo.de&#038;flash_playertype=SER&#038;ds=1&#038;autorun=yes&#038;ID=8336292&#038;_countlimit=4</samp>, erhält man Informationen zum gewünschten Video, das sich dann mit dem Programm <a href="http://en.wikipedia.org/wiki/Rtmpdump"><i>rtmpdump</i></a> lokal speichern lässt.
</p>
<p>
Weswegen <i>Myvideo.de</i> die zum Abspielen eines Videos notwendigen <abbr title="eXtensible Markup Language">XML</abbr>-Dateien verschlüsselt, dann aber sämtliche Schlüssel öffentlich zur Verfügung stellen, ist mir unklar: Ich selbst habe zwar kein Interesse an dort angebotenen Videos (und auch nicht genug Bandbreite), kann mir jedoch kaum vorstellen, dass eine derartige Maßnahme Leute am Herunterladen der Videos hindert.
</p>
<p>
Vermutlich haben die Entwickler nicht verstanden, dass der Einsatz von Verschlüsselung Inhalte nicht schützen <em>kann</em>, wenn man alle Schlüssel veröffentlicht. Für diese Vermutung spricht auch der Einsatz von <a href="http://lkcl.net/rtmp/RTMPE.txt"><abbr title="Real-Time Messaging Protocol Encrypted">RTMPE</abbr>, das für die Verschlüsselung ebenfalls nur öffentlich zugängliche Daten verwendet</a>.
</p>
<p>
Meiner Ansicht nach handelt es sich bei der Verwendung des <i>Flash</i>-Players um eine wirksamere technische Maßnahme, bestimmte Leute vom Ansehen der Videos auszuschließen. Zum Einbetten von Videos empfehle ich die Verwendung des <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#the-video-element"><code>&lt;video&gt;</code>-Elements</a>.
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.dieweltistgarnichtso.net/sinnlose-verschlusselung-bei-myvideo-de/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
