<?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>Daten&#124;teiler &#187; Gnu/Linux</title>
	<atom:link href="http://www.datenteiler.de/kategorie/gnulinux/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.datenteiler.de</link>
	<description>Kopieren als Kulturtechnik</description>
	<lastBuildDate>Sat, 14 Jan 2012 14:39:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Sicher in die Wolke mit EncFS</title>
		<link>http://www.datenteiler.de/sicher-in-die-wolke-mit-encfs/</link>
		<comments>http://www.datenteiler.de/sicher-in-die-wolke-mit-encfs/#comments</comments>
		<pubDate>Sun, 27 Nov 2011 07:34:39 +0000</pubDate>
		<dc:creator>Christian Imhorst</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Gnu/Linux]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.datenteiler.de/?p=6498</guid>
		<description><![CDATA[Mit EncFS kann man unter Linux wichtige Dateien verschlüsseln, die aus irgendeinen Grund über Ubuntu One oder Dropbox in die Cloud sollen, und sie können auf Linux-Systemen wie Ubuntu oder Android, aber auch unter Windows, MacOS X und zukünftig unter iOS wieder entschlüsselt werden. In diesem Punkt bietet EncFS einen klaren Vorteil gegenüber anderen Verschlüsselungstools [...]]]></description>
			<content:encoded><![CDATA[<p>Mit EncFS kann man unter Linux wichtige Dateien verschlüsseln, die aus irgendeinen Grund über Ubuntu One oder Dropbox in die Cloud  sollen, und sie können auf Linux-Systemen wie Ubuntu oder Android, aber auch unter Windows, MacOS X und zukünftig unter iOS wieder entschlüsselt werden. In diesem Punkt bietet EncFS einen klaren Vorteil gegenüber anderen Verschlüsselungstools wie Truecrypt oder GnuPG.</p>
<p><span id="more-6498"></span></p>
<p><strong>EncFS unter Ubuntu</strong></p>
<p>In der <a href="http://www.ubuntu-user.de/Heft/Heftarchiv/2012/1">aktuellen Ubuntu-User</a> zeigt der Artikel &#8220;Sicher in die Wolke&#8221;, wie man seine Dateien mit GnuPG verschlüsseln kann, bevor man sie einer Cloud-Anwendung wie Ubuntu One oder Dropbox übergibt und wieder entschlüsselt. Da das Ver- und Entschlüsseln der Dateien dabei im Terminal stattfindet, wirkt das Verfahren unnötig kompliziert. Die Webseite <a href="http://www.nosinmiubuntu.com/2011/11/cifrar-una-carpeta-con-cryptkeeper_07.html">nosinmiubuntu</a> zeigt, wie es mit Cryptkeeper und <a href="http://wiki.ubuntuusers.de/EncFS">EncFS</a> unter Ubuntu <del datetime="2011-11-28T18:12:39+00:00">10.</del>11.10 Oneiric Ocelot und Unity einfacher geht. Da sich Cryptkeeper und EncFS in den Repositories von Oneiric befinden, kann man beide Programme über das Software-Center oder über das Terminal installieren:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> cryptkeeper encfs</pre></div></div>

<p><strong>Einrichten des Panel Applets</strong></p>
<p>Damit Cryptkeeper nach dem nächsten Ab- und wieder Anmelden des Benutzers als Panel Applet im System-Tray von Unity erscheint, muss man das Programm in eine sogenannte &#8220;Whitelist&#8221; eintragen. Im Gegensatz zu Gnome ist das <a href="http://wiki.ubuntuusers.de/Unity/FAQ">Panel Applet in Unity ziemlich eingeschränkt</a>. Am einfachsten kann man sich alle Applets anzeigen lassen:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">gsettings <span style="color: #000000; font-weight: bold;">set</span> com.canonical.Unity.Panel systray-whitelist <span style="color: #ff0000;">&quot;['all']&quot;</span></pre></div></div>

<p>Die unerwünschte Nebenwirkung ist dann aber, dass man wirklich alle Applets im Panel sieht. Will man nur das Panel Applet von Cryptkeeper zusätzlich zulassen, sollte man erst einmal schauen, welche Applets bereits auf der Whitelist stehen:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">gsettings get com.canonical.Unity.Panel systray-whitelist</pre></div></div>

<p>Wenn die Ausgabe nichts anzeigt, reicht ein</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">gsettings <span style="color: #000000; font-weight: bold;">set</span> com.canonical.Unity.Panel systray-whitelist <span style="color: #ff0000;">&quot;['Cryptkeeper']&quot;</span></pre></div></div>

<p>um Cryptkeeper zum Panel hinzu zufügen. Sieht die Ausgabe aber wie im folgenden Beispiel aus,</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ gsettings get com.canonical.Unity.Panel systray-whitelist
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">'JavaEmbeddedFrame'</span>, <span style="color: #ff0000;">'Mumble'</span>, <span style="color: #ff0000;">'Wine'</span>, <span style="color: #ff0000;">'Skype'</span>, <span style="color: #ff0000;">'hp-systray'</span><span style="color: #7a0874; font-weight: bold;">&#93;</span></pre></div></div>

<p>sollte man Cryptkeeper an das Ende der Liste setzen:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ gsettings <span style="color: #000000; font-weight: bold;">set</span> com.canonical.Unity.Panel systray-whitelist <span style="color: #ff0000;">&quot;['JavaEmbeddedFrame', 'Mumble', 'Wine', Skype', 'hp-systray', 'Cryptkeeper']&quot;</span></pre></div></div>

<p>Anschließend sollte man nochmal prüfen, ob es geklappt hat. Wenn die Ausgabe in etwa so, wie die folgende aussieht, scheint es funktioniert zu haben:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ gsettings get com.canonical.Unity.Panel systray-whitelist<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">'JavaEmbeddedFrame'</span>, <span style="color: #ff0000;">'Mumble'</span>, <span style="color: #ff0000;">'Wine'</span>, <span style="color: #ff0000;">'Skype'</span>, <span style="color: #ff0000;">'hp-systray'</span>, <span style="color: #ff0000;">'Cryptkeeper'</span><span style="color: #7a0874; font-weight: bold;">&#93;</span></pre></div></div>

<p>Danach muss Cryptkeeper noch unter &#8220;Startprogramme&#8221; eingetragen werden. Dazu drückt man die Super-Taste (das ist die ehemalige Windows-Taste) und trägt in das Suchfeld &#8220;Startprogramme&#8221; ein. Das Programm-Icon taucht schon nach nur wenigen Buchstaben auf.</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2011/11/Startprogramme0.png"><img src="http://www.datenteiler.de/wp-content/uploads/2011/11/Startprogramme0-300x144.png" alt="" title="Startprogramme0" width="300" height="144" class="aligncenter size-medium wp-image-6519" /></a> </p>
<p>Der Eintrag sieht dann folgendermaßen aus und wird über den Button &#8220;Speichern&#8221; und &#8220;Schließen&#8221; festgeschrieben:</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2011/11/Startprogramme2.png"><img src="http://www.datenteiler.de/wp-content/uploads/2011/11/Startprogramme2-300x245.png" alt="" title="Startprogramme2" width="300" height="245" class="aligncenter size-medium wp-image-6522" /></a></p>
<p>Erst nach dem Ab- und wieder Anmelden werden die Änderungen sichtbar, und man sieht, ob es wirklich geklappt hat, wenn man das Symbol mit dem Schlüsselpaar im Panel sieht:</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2011/11/Cryptkeeper.png"><img src="http://www.datenteiler.de/wp-content/uploads/2011/11/Cryptkeeper.png" alt="" title="Cryptkeeper" width="357" height="77" class="aligncenter size-full wp-image-6526" /></a></p>
<p><strong>Cryptkeeper im Einsatz</strong></p>
<p>Um einen Ordner zu verschlüsseln oder einen bereits mit EncFS verschlüsselten Ordner zu importieren, klickt man mit der linken Maustaste auf das Schlüsselpaar. Um einen neuen verschlüsselten Ordner anzulegen, wählt man &#8220;Erstelle verschlüsselten Ordner&#8221;. </p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2011/11/Ordner.png"><img src="http://www.datenteiler.de/wp-content/uploads/2011/11/Ordner-300x183.png" alt="" title="Ordner" width="300" height="183" class="aligncenter size-medium wp-image-6534" /></a></p>
<p>In dem Fenster, das sich anschließend öffnet, wählt man den übergeordneten Ordner aus, z.B. &#8220;Ubuntu One&#8221; und trägt den Namen des neuen Ordners ein, z.B. &#8220;Dokumente&#8221; und klickt dann, was ein wenig gewöhnungsbedürftig ist, links auf &#8220;Vor&#8221;. Dann trägt man sein Passwort zweimal ein. Das Passwort sollte natürlich nicht zu einfach sein. Man darf es aber auch nicht vergessen, denn dann sind die Daten im verschlüsselten Verzeichnis verloren. Ein Beispiel, für ein <del datetime="2011-11-28T17:52:46+00:00">gutes</del> Passwort, das ein paar Kriterien wie mindestens 8 Zeichen, Buchstaben gemischt mit Zahlen und Sonderzeichen erfüllt, aber auch gleichzeitig leicht zu merken ist, ist das Wort Passwort, wenn man es in dieser oder einer ähnlich Form schreibt:</p>
<p><code>Pa$$w0r+</code></p>
<p>[Update] Bitte beachtet den Kommentar von dakira weiter unten. Zitat: &#8220;Bei einem Dictionary-Angriff werden auch alle möglichen beliebten Substitutionen geprüft.&#8221;[/Update] Ein gutes Verhältnis zwischen praktischem Nutzen und Sicherheit muss aber jeder für sich selbst finden. Bestätigt man das Passwort, indem man wieder links auf &#8220;Vor&#8221; klickt, wird der verschlüsselte Ordner angelegt. Klickt man wieder mit der linken Maustaste auf das Schlüsselsymbol, werden dieser und eventuell andere verschlüsselte Ordner angezeigt. Ist der Ordner geöffnet, sieht man einen Haken davor. </p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2011/11/Verschluesseln0.png"><img src="http://www.datenteiler.de/wp-content/uploads/2011/11/Verschluesseln0.png" alt="" title="Verschluesseln0" width="362" height="187" class="aligncenter size-full wp-image-6546" /></a></p>
<p>Klickt man auf diesen Haken, wird der Ordner geschlossen. Klickt man erneut auf den Eintrag, wird das Passwort angefordert und die Dateien werden wieder entschlüsselt, was unter anderem durch den Haken anzeigt wird.</p>
<p>EncFS ver- und entschlüsselt aber nicht nur Ordner und die darin enthaltenen Dateien, es legt auch einen <a href="http://www.linux-community.de/Internal/Artikel/Print-Artikel/LinuxUser/2010/07/Dateiverschluesselung-mit-EncFS-und-Cryptkeeper">Mount-Punkt für die entschlüsselten Daten</a> an, über den man auf seine Dateien zugreifen kann. Der Mount-Punkt kann leider nicht über den Dateimanager ausgehängt werden, sondern nur über Cryptkeeper, indem man, wie gesagt, den Haken bzw. den Eintrag mit dem Verzeichnis-Pfad anklickt.</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2011/11/Ordner2.png"><img src="http://www.datenteiler.de/wp-content/uploads/2011/11/Ordner2-300x236.png" alt="" title="Ordner" width="300" height="236" class="aligncenter size-medium wp-image-6555" /></a></p>
<p>Wie man im Terminal des Bildausschnitts sieht, bildet das FUSE-Framework das Fundament von EncFS, um normalen Nutzern das Mounten von verschlüsselten Verzeichnissen zu ermöglichen. Da EncFS dateiorientiert arbeitet, benötigt man keine eigene Partition und auch keinen Container, wie bei Truecrypt. Auf der anderen Seite hätte Truecrypt aber den Vorteil, dass man auch unter einem anderen Betriebssystem wie zum Beispiel Windows 7 wieder an seine verschlüsselten Daten kommen könnte, da FUSE nur unter Unix- und Gnu/Linux-Systemen verfügbar ist. </p>
<p><strong>EncFS unter Windows</strong></p>
<p>Man kommt an Windows leider nicht immer vorbei, es gibt aber mit <a href="http://members.ferrara.linux.it/freddy77/encfs.html">EncFS4Win</a> glücklicherweise ein Projekt, das einen Port für Windows auf der Basis von <a href="http://dokan-dev.net/en/">Dokan &mdash; user mode file system for windows</a> bereit stellt. Daher installiert man zuerst die <a href="http://dokan-dev.net/en/download/#dokan">aktuelle Dokan-Bibliothek</a>, um danach die <a href="http://members.ferrara.linux.it/freddy77/encfs.html">Datei encfs.zip</a> nach &#8220;C:\Program Files&#8221; zu entpacken. Das Programm ENCFSW.EXE, das man zum Entschlüssen der Ordner startet, bringt schon eine grafische Oberfläche ähnlich wie Cryptkeeper mit. </p>
<p>Man erkennt EncFS4Win an das Schlüsselsymbol in der Taskleiste. Soll das Programm automatisch starten, kann man einen Haken bei der Option &#8220;Start at login&#8221; setzen. Um einen verschlüsselten Ordner zu öffnen oder anzulegen, klickt man auf &#8220;Open/Create&#8221;.</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2011/11/encfs4win.png"><img src="http://www.datenteiler.de/wp-content/uploads/2011/11/encfs4win-300x227.png" alt="" title="encfs4win" width="300" height="227" class="aligncenter size-medium wp-image-6579" /></a></p>
<p>Anschließend wählt man den verschlüsselten Ordner aus.</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2011/11/encfs4win1.png"><img src="http://www.datenteiler.de/wp-content/uploads/2011/11/encfs4win1-300x264.png" alt="" title="encfs4win1" width="300" height="264" class="aligncenter size-medium wp-image-6582" /></a></p>
<p>Da Windows anders als Unix-artige Betriebssysteme keine Mount-Punkte kennt, muss man dem zu entschlüsselnden Ordner einen Laufwerksbuchstaben zuweisen.</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2011/11/encfs4win2.png"><img src="http://www.datenteiler.de/wp-content/uploads/2011/11/encfs4win2.png" alt="" title="encfs4win2" width="233" height="122" class="aligncenter size-full wp-image-6584" /></a> </p>
<p>Der entschlüsselte Inhalt des Ordners steht dann unter diesem Laufwerksbuchstaben bereit. Anders als unter Ubuntu aber nur unter diesem Laufwerksbuchstaben und nicht nochmal innerhalb eines Ordners in Ubuntu One oder im Dropbox-Ordner.</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2011/11/encfs4win3.png"><img src="http://www.datenteiler.de/wp-content/uploads/2011/11/encfs4win3-300x209.png" alt="" title="encfs4win3" width="300" height="209" class="aligncenter size-medium wp-image-6586" /></a></p>
<p><strong>EncFS unter Android</strong></p>
<p>Mit <a href="http://blog.boxcryptor.com/how-to-use-boxcryptor-for-android">Boxcrypter</a> aus dem <a href="https://market.android.com/details?id=com.boxcryptor.android">Android-Market</a> hat man sogar die Möglichkeit, seine mit <a href="http://www.webupd8.org/2011/09/dropbox-access-encfs-folders-on-android.html">EncFS verschlüsselten Ordner unter Android</a> zu öffnen. Kleiner Wermutstropfen ist aber, dass das leider nur mit Dropbox funktioniert. Andere Dateisynchronisations-Dienste wie Ubuntu One werden zur Zeit nicht unterstützt. <del datetime="2011-11-28T18:08:16+00:00">Außerdem ist Boxcrypter noch in der Entwicklungsphase und kann verschlüsselte Dateien nur lesen. Die Schreibunterstützung soll aber bald folgen.</del> <a href="http://blog.boxcryptor.com/boxcryptor-for-android-10-available">Seit Anfang Oktober kann die kostenpflichtige Version</a> von BoxCryptor auch innerhalb eines EncFS-Containers schreiben.</p>
<p>Ein weiterer Nachteil von Boxcrypter ist auch, dass es EncFS nicht voll unterstützt. Man muss beim Verschlüsseln der Dateien ein paar EncFS-Optionen deaktivieren, damit es funktioniert. Zuguter letzt ist noch wichtig, dass der Schlüssel nicht von der Synchronisierung durch Dropbox ausgenommen wird. Denn dann funktioniert es nicht.</p>
<p>Um einen verschlüsselten Ordner zu erstellen, der auch unter Android funktioniert, legt man ihn zusammen mit dem Mount-Punkt für das Volumen, in das man später die Dateien kopiert, im Terminal an:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> ~<span style="color: #000000; font-weight: bold;">/</span>Dropbox<span style="color: #000000; font-weight: bold;">/</span>.encrypted
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> ~<span style="color: #000000; font-weight: bold;">/</span>Dropbox<span style="color: #000000; font-weight: bold;">/</span>Dokumente</pre></div></div>

<p>Dann erfolgt die Einrichtung der Verschlüsselung mit EncFS:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">encfs ~<span style="color: #000000; font-weight: bold;">/</span>Dropbox<span style="color: #000000; font-weight: bold;">/</span>.encrypted ~<span style="color: #000000; font-weight: bold;">/</span>Dropbox<span style="color: #000000; font-weight: bold;">/</span>Dokumente</pre></div></div>

<p>Im folgenden Auswahlmenü wählt man dann &#8220;x&#8221; für den Expertenmodus:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">Neuer verschlüsselter Datenträger wird erstellt.
Bitte wählen Sie eine der folgenden Optionen:
 &quot;x&quot; für den Expertenmodus,
 &quot;p&quot; für den vorkonfigurierten Paranoia-Modus,
 etwas anderes oder eine Leerzeile wählt den Standard-Modus.
?&gt; x
Manuelle Konfiguration gewählt.</pre></div></div>

<p>Als Verschlüsselungsalgorithmus kann man AES wählen,</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">Die folgenden Verschlüsselungsalgorithmen sind verfügbar
1. AES : 16 byte block cipher
 unterstützte Schlüssellänge zwischen 128 und 256 Bits
 unterstützte Blockgröße zwischen 64 und 4096 Bits
2. Blowfish : 8-Byte-Blockchiffre
 unterstützte Schlüssellänge zwischen 128 und 256 Bits
 unterstützte Blockgröße zwischen 64 und 4096 Bits
Geben Sie die Nummer Ihrer Auswahl an: 1
Gewählter Algorithmus &quot;AES&quot;</pre></div></div>

<p>und bei der Schlüssellänge 128 Bit:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">Bitte wählen Sie eine Schlüssellänge in Bit. Die von Ihnen gewählte Verschlüsselung
unterstützt Längen von 128 bis 256 Bit in 64 Bit Schritten.
Zum Beispiel: 
128, 192, 256
Gewählte Schlüssellänge: 128
Verwenden Schlüssellänge von 128 Bit</pre></div></div>

<p>Bei der Dateisystem-Blockgröße kann man einfach mit der Enter-Taste den Standard übernehmen. </p>
<p>Anschließend ist es aber wichtig, bei den Verschlüsselungsalgorithmen für Dateinamen &#8220;Stream&#8221; zu wählen, in dem man die Taste &#8220;3&#8243; drückt:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">Die folgenden Verschlüsselungsalgorithmen für Dateinamen stehen zur Verfügung:
1. Block : Blockverschlüsselung, versteckt die Dateinamengröße etwas
2. Null : No encryption of filenames
3. Stream : Stromchiffre, möglichst kurze Dateinamen
Geben Sie die Nummer Ihrer Auswahl an: 3
Gewählter Algorithmus &quot;Stream&quot;&quot;</pre></div></div>

<p>Beim Vector-Chaining muss man mit &#8220;no&#8221; bestätigen, bzw. irgendeine Antwort eingeben, die mit einem &#8220;n&#8221; beginnt, alles andere bedeutet ja:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">Enable filename initialization vector chaining?
This makes filename encoding dependent on the complete path, 
rather then encoding each path element individually.
The default here is Yes.
Any response that does not begin with 'n' will mean Yes: no</pre></div></div>

<p>Das Gleiche, also mit einer Eingabe, die mit einem &#8220;n&#8221; beginnt Nein zu sagen, muss man nochmal in der nächsten</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">Enable per-file initialization vectors?
This adds about 8 bytes per file to the storage requirements.
It should not affect performance except possibly with applications
which rely on block-aligned file io for performance.
The default here is Yes.
Any response that does not begin with 'n' will mean Yes: no</pre></div></div>

<p>und in der übernächsten Abfrage machen:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">Externe IV Verkettung abgeschaltet, da 'IV Verkettung'
und 'einmalige IV' Merkmale für diese Option benötigt werden.
Enable block authentication code headers
on every block in a file?  This adds about 12 bytes per block
to the storage requirements for a file, and significantly affects
performance but it also means [almost] any modifications or errors
within a block will be caught and will cause a read error.
The default here is No.
Any response that does not begin with 'y' will mean No: no</pre></div></div>

<p>Zum Schluss muss man nochmal darauf achten, dass jedem Block-Vorspann keine Zufallsbytes hinzugefügt werden, indem man die Zahl 0 eingibt:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">Sollen jedem Block-Vorspann Zufallsbytes hinzugefügt werden?
Das wird die Leistung veringern, aber sicherstellen, dass die
Blöcke unterschiedliche Sicherheitscodes verwenden. Sie können das selbe
Resultat mit geringeren Leistungseinbußen erzielen, indem Sie die dateispezifischen Initialisierungsvektoren aktivieren.
Auswahl der Anzahl der Bytes, von 0 (Keine Zufallsbytes) bis 8: 0</pre></div></div>

<p>Mit Cryptkeeper kann man den neu erstellten verschlüsselten Ordner danach importieren. Wenn man im Fenster &#8220;Import an EncFS encrypted Folder&#8221; auf den Stift klickt, kann man den Pfad auch per Hand eingeben. Bei mir lautet er <code>~/Dropbox/.encrypted/</code>:</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2011/11/Cryptkeeper1.png"><img src="http://www.datenteiler.de/wp-content/uploads/2011/11/Cryptkeeper1-300x237.png" alt="" title="Cryptkeeper" width="300" height="237" class="aligncenter size-medium wp-image-6631" /></a></p>
<p>Nach dem ersten Start von BoxCryptor auf dem Android-Handy muss man den verschlüsselten Ordner auswählen, in meinem Fall also <code>.encrypted</code>:</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2011/11/Screenshot-Android7.png"><img src="http://www.datenteiler.de/wp-content/uploads/2011/11/Screenshot-Android7-300x218.png" alt="" title="Screenshot-Android7" width="300" height="218" class="aligncenter size-medium wp-image-6636" /></a></p>
<p>Hat man sein Passwort eingegeben, das man vorher bei der Erstellung des EncFS-Ordners angegeben hat, kann man auf seine verschlüsselten Dateien und Ordner lesend zugreifen:</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2011/11/Screenshot-Android61.png"><img src="http://www.datenteiler.de/wp-content/uploads/2011/11/Screenshot-Android61-184x300.png" alt="" title="Screenshot-Android6" width="184" height="300" class="aligncenter size-medium wp-image-6643" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.datenteiler.de/sicher-in-die-wolke-mit-encfs/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>MPlayer2 unter Ubuntu installieren</title>
		<link>http://www.datenteiler.de/mplayer2-unter-ubuntu-installieren/</link>
		<comments>http://www.datenteiler.de/mplayer2-unter-ubuntu-installieren/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 18:41:38 +0000</pubDate>
		<dc:creator>Christian Imhorst</dc:creator>
				<category><![CDATA[Gnu/Linux]]></category>

		<guid isPermaLink="false">http://www.datenteiler.de/?p=6468</guid>
		<description><![CDATA[Mit MPlayer2 gibt es schon seit einiger Zeit einen Fork meines Lieblingsplayers für Multimedia, der ohne MEncoder auskommt. Da der Fork entscheidende Verbesserungen und viele Bugfixes mitbringt, sich aber abgesehen davon bedienen lässt, wie der gute alte MPlayer, bin ich umgestiegen. Seit Ubuntu 10.11 Oneiric Ocelot ist MPlayer2 im Repository vorhanden und kann einfach im [...]]]></description>
			<content:encoded><![CDATA[<p>Mit <a href="http://www.mplayer2.org/">MPlayer2</a> gibt es schon seit einiger Zeit einen Fork meines <a href="http://www.datenteiler.de/?s=mplayer">Lieblingsplayers für Multimedia</a>, der ohne MEncoder auskommt. Da der Fork <a href="http://www.mplayer2.org/comparison.html">entscheidende Verbesserungen</a> und viele Bugfixes mitbringt, sich aber abgesehen davon bedienen lässt, wie der gute alte MPlayer, bin ich umgestiegen. </p>
<p>Seit Ubuntu 10.11 Oneiric Ocelot ist MPlayer2 im Repository vorhanden und kann einfach im Terminal oder über das Ubuntu Software-Center installiert werden, so dass man kein <a href="http://wiki.ubuntuusers.de/Paketquellen_freischalten/PPA">PPA</a> wie für Ubuntu 10.04 Lucid und höher mehr benötigt:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> add-apt-repository ppa:ripps818<span style="color: #000000; font-weight: bold;">/</span>coreavc
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> update
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #c20cb9; font-weight: bold;">mplayer</span></pre></div></div>

<p>Ab Oneiric installiert man dann MPlayer2 wie folgt:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> mplayer2
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut       
Status-Informationen einlesen... Fertig
Die folgenden Pakete werden ENTFERNT:
  <span style="color: #c20cb9; font-weight: bold;">mplayer</span>
Die folgenden NEUEN Pakete werden installiert:
  mplayer2
<span style="color: #000000;">0</span> aktualisiert, <span style="color: #000000;">1</span> neu installiert, <span style="color: #000000;">1</span> zu entfernen und <span style="color: #000000;">0</span> nicht aktualisiert.
Es müssen <span style="color: #000000;">1.328</span> kB an Archiven heruntergeladen werden.
Nach dieser Operation werden <span style="color: #000000;">1.942</span> kB Plattenplatz freigegeben.
Möchten Sie fortfahren <span style="color: #7a0874; font-weight: bold;">&#91;</span>J<span style="color: #000000; font-weight: bold;">/</span>n<span style="color: #7a0874; font-weight: bold;">&#93;</span>?</pre></div></div>

<p>Wie man sieht, wird das alte MPlayer-Paket entfernt und dafür MPlayer2 installiert. Der Start erfolgt nach der erfolgreichen Installation allerdings immer noch über den bekannten Befehl:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">mplayer</span>
MPlayer2 UNKNOWN <span style="color: #7a0874; font-weight: bold;">&#40;</span>C<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000;">2000</span>-<span style="color: #000000;">2011</span> MPlayer Team
Usage:   <span style="color: #c20cb9; font-weight: bold;">mplayer</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>options<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>url<span style="color: #000000; font-weight: bold;">|</span>path<span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>filename</pre></div></div>

<p>Man kann Mplayer ohne grafische Oberfläche auf der Konsole benutzen. Wer es ausprobieren möchte, kann sich das Ergebnis mit folgendem Befehl anschauen:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mplayer</span> <span style="color: #660033;">-vo</span> fbdev <span style="color: #000000; font-weight: bold;">/</span>Pfad<span style="color: #000000; font-weight: bold;">/</span>zum<span style="color: #000000; font-weight: bold;">/</span>Video</pre></div></div>

<p>Die Rechte eines Superusers werden in diesem Testfall benötigt, weil sonst der Zugriff auf <code>/dev/fb0</code> nicht gewährt wird. </p>
<p>Schöner ist es, MPlayer in einer Konsole innerhalb einer grafischen Oberfläche zu starten. Dazu reicht einfach</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mplayer</span> <span style="color: #000000; font-weight: bold;">/</span>Pfad<span style="color: #000000; font-weight: bold;">/</span>zum<span style="color: #000000; font-weight: bold;">/</span>Video</pre></div></div>

<p>Für den Schnelleinstieg in die simple grafische Oberfläche reichen die Pfeiltasten zum Vor- und Zurückspulen, die Leertaste für Pausen, die Taste F für den Vollbildmodus und die Tasten 0 und 9 zum lauter und leiser stellen. Weitere Tasten sind:</p>
<table>
<tr>
<td> <strong>Taste</strong> </td>
<td> <strong>Funktion</strong> </td>
</tr>
<tr>
<td>
<span>Esc</span> </td>
<td> Ende </td>
</tr>
<tr>
<td>
<span> Leertaste </span> </td>
<td> Pause </td>
</tr>
<tr>
<td>
<span>→</span> </td>
<td> 10 Sekunden vorspulen </td>
</tr>
<tr>
<td>
<span>←</span> </td>
<td> 10 Sekunden zurückspulen </td>
</tr>
<tr>
<td>
<span>↑</span> </td>
<td> 1 Minute vorspulen </td>
</tr>
<tr>
<td>
<span>↓</span> </td>
<td> 1 Minute zurückspulen </td>
</tr>
<tr>
<td>
<span>Bild ↑</span> </td>
<td> 10 Minuten vorspulen </td>
</tr>
<tr>
<td>
<span>Bild ↓</span> </td>
<td> 10 Minuten zurückspulen </td>
</tr>
<tr>
<td>
<span>0</span> </td>
<td> Lauter </td>
</tr>
<tr>
<td>
<span>9</span> </td>
<td> Leiser </td>
</tr>
<tr>
<td>
<span>M</span> </td>
<td> Audio stumm schalten </td>
</tr>
<tr>
<td>
<span>F</span> </td>
<td> Vollbild </td>
</tr>
<tr>
<td>
<span>#</span> </td>
<td> Audiospur wechseln </td>
</tr>
<tr>
<td>
<span>J</span> </td>
<td> Untertitel wechseln </td>
</tr>
<tr>
<td>
<span>O</span> </td>
<td> On-Screen-Display wechseln </td>
</tr>
<p><span> &nbsp; </span> </td>
<td> &nbsp; </td>
</tr>
</table>
<p>Wer eine komfortablere Benutzeroberfläche benötigt, sollte SMPlayer aus dem Software-Center probieren. Wenn man aber ein bisschen mit der Konsole zurecht kommt und Spaß daran hat, braucht man keine andere Benutzeroberfläche. Radio geht wunderbar:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mplayer</span> http:<span style="color: #000000; font-weight: bold;">//</span>208.80.54.28<span style="color: #000000; font-weight: bold;">/</span>FUTUROAAC</pre></div></div>

<p>und DVB-T klappt auch:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mplayer</span> dvb:<span style="color: #000000; font-weight: bold;">//</span>arte <span style="color: #660033;">-cache</span> <span style="color: #000000;">30720</span> <span style="color: #660033;">-cache-min</span> <span style="color: #000000;">5</span></pre></div></div>

<p>Falls das Paket <code>youtube-dl</code> installiert ist, kann man mit MPlayer2 auch Youtube-Videos gucken, vorausgesetzt, man hat mit der Suchmaschine seines Vertrauens eine passende URL zum Video ermittelt:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> youtube-dl
<span style="color: #c20cb9; font-weight: bold;">mplayer</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span>youtube-dl <span style="color: #660033;">-g</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.youtube.com<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">watch</span>?<span style="color: #007800;">v</span>=u7Dg3LrhmIY<span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.datenteiler.de/mplayer2-unter-ubuntu-installieren/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Kleiner Bug in Tomboy Notes</title>
		<link>http://www.datenteiler.de/kleiner-bug-in-tomboy-notes/</link>
		<comments>http://www.datenteiler.de/kleiner-bug-in-tomboy-notes/#comments</comments>
		<pubDate>Sun, 16 Oct 2011 20:15:47 +0000</pubDate>
		<dc:creator>Christian Imhorst</dc:creator>
				<category><![CDATA[Gnu/Linux]]></category>

		<guid isPermaLink="false">http://www.datenteiler.de/?p=6426</guid>
		<description><![CDATA[Tomboy Notes, ein kleines Tool zum erstellen von Desktop-Notizen unter Ubuntu, macht erst so richtig Spaß, wenn man alle seine Einträge mit Ubuntu One synchronisieren kann, damit man sie auch auf anderen Rechnern zur Verfügung hat. Um so ärgerlicher, dass die neue Ubuntu-Version 11.10 Oneiric Ocelot einen kleinen Bug mitbringt, der das Einrichten von Tomboy [...]]]></description>
			<content:encoded><![CDATA[<p>Tomboy Notes, ein kleines Tool zum erstellen von Desktop-Notizen unter Ubuntu, macht erst so richtig Spaß, wenn man alle seine Einträge mit <a href="http://one.ubuntu.com/dashboard/">Ubuntu One</a> synchronisieren kann, damit man sie auch auf anderen Rechnern zur Verfügung hat. Um so ärgerlicher, dass die neue Ubuntu-Version 11.10 Oneiric Ocelot einen kleinen Bug mitbringt, der das Einrichten von Tomboy für neue User unnötig erschwert.</p>
<p>Wenn man in den &#8220;Einstellungen&#8221; unter &#8220;Abgleichen&#8221; den Eintrag &#8220;Tomboy im Internet&#8221; wählt und anschließend &#8220;Connect&#8221; klickt, öffnet sich ein Browser-Fenster zum eigenen Ubuntu One-Konto, um Tomboy-Web zu legitimieren. Wenn das erfolgreich ist, steht dort: &#8220;Tomboy-Web-Legitimierung erfolgreich. Drücken Sie im Einstellungsfenster von Tomboy die Eingabetaste und klicken Sie auf »Speichern«, um mit dem Abgleich zu beginnen.&#8221; Nur kann man nicht auf &#8220;Speichern&#8221; klicken, weil der Button, anders als in der Abbildung unten, ausgegraut ist.</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2011/10/Tomboy-Server-Einstellung1.png"><img src="http://www.datenteiler.de/wp-content/uploads/2011/10/Tomboy-Server-Einstellung1-300x261.png" alt="" title="Tomboy-Server-Einstellung1" width="300" height="261" class="aligncenter size-medium wp-image-6432" /></a></p>
<p>Der <a href="https://bugs.launchpad.net/ubuntu/+source/tomboy/+bug/845321/comments/16">Fehler ist bekannt</a> und wird hoffentlich bald behoben. Damit der Button nicht mehr ausgegraut ist, muss man im Feld mit der Adresse zum Server einfach etwas hinzufügen, oder den letzten Schrägstrich (Slash) von <code>https://one.ubuntu.com/notes/</code> löschen. Danach kann man die Konfiguration speichern und der Abgleich der Notizen kann starten.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.datenteiler.de/kleiner-bug-in-tomboy-notes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>„I don&#8217;t like spam“, oder wie man einen Mailserver testet</title>
		<link>http://www.datenteiler.de/i-dont-like-spam-oder-wie-man-einen-mailserver-testet/</link>
		<comments>http://www.datenteiler.de/i-dont-like-spam-oder-wie-man-einen-mailserver-testet/#comments</comments>
		<pubDate>Mon, 05 Sep 2011 20:09:42 +0000</pubDate>
		<dc:creator>Christian Imhorst</dc:creator>
				<category><![CDATA[Gnu/Linux]]></category>

		<guid isPermaLink="false">http://www.datenteiler.de/?p=6339</guid>
		<description><![CDATA[Dieser Artikel erschien erstmals in freiesMagazin 09/11: Es begann mit einem Irrtum. Im Werbebrief vom Google für den AdWords-Dienst befand sich ein Gutschein über 75 Euro, der auf einen völlig fremden Menschen ausgestellt war. Wenn man Sandra Fründt, Head of Business Marketing Google Deutschland, auf ihren Fehler aufmerksam machen will, immerhin hat sie diesen Brief [...]]]></description>
			<content:encoded><![CDATA[<p><b><em>Dieser Artikel erschien erstmals in <b><font color="#595959">freies</font></b><font color="#FF630A">Magazin</font> <a href="http://www.freiesmagazin.de/20110904-septemberausgabe-erschienen">09/11</a>:</em> Es begann mit einem Irrtum. Im Werbebrief vom Google für den AdWords-Dienst befand sich ein Gutschein über 75 Euro, der auf einen völlig fremden Menschen ausgestellt war. Wenn man Sandra Fründt, Head of Business Marketing Google Deutschland, auf ihren Fehler aufmerksam machen will, immerhin hat sie diesen Brief unterschrieben, stößt man auf ein Problem: Im Schreiben ist überhaupt keine E-Mail-Adresse angegeben. Das Unternehmen, das mit Suchmaschine und E-Mail-Dienst im Internet groß geworden ist, zeigt sich in seiner Werbung ganz schön verschlossen.</b></p>
<p><span id="more-6339"></span></p>
<p><strong>Auf der Suche nach einer E-Mail-Adresse</strong></p>
<p>Jetzt kann man sich eine mögliche und formal richtige E-Mail-Adresse für die Empfängerin ausdenken, eine E-Mail an diese Adresse schicken und darauf warten, ob der Mailserver die Nachricht auch erfolgreich zustellen kann. Wenn er nämlich scheitert, bekommt man eine Fehlermeldung als Antwort zurück. Entweder probiert man so lange herum, bis diese Antwort ausbleibt, oder man kann, um das Ganze abzukürzen, den Test auch in die Konsole verlagern. Das Werkzeug für diesen Test ist das Telnet [1], für das bei den meisten GNU/Linux-Distributionen, MacOS X und sogar bei Windows ein Tool vorinstalliert oder schnell nachträglich zu installieren ist.</p>
<p>In der Vergangenheit war Telnet eine unverschlüsselte und daher unsichere Methode für die Fernwartung von Rechnern. Der Vorteil von Telnet ist aber, dass man sich über den entsprechenden Port mit so ziemlich jedem Server verbinden kann, der ein textbasiertes Protokoll beherrscht, also auch mit Mailservern. Diesen Vorteil muss man allerdings mit Vorsicht genießen, da er auch von Spammern genutzt wird.</p>
<p><strong>Woher kommt das Wort „Spam“?</strong></p>
<p>Die Bezeichnung „Spam“ für Massenmails zu Werbezwecken im Internet wurde durch einen Sketch der englischen Komikertruppe Monty Python geprägt. Der Sketch [2] spielt in einem Imbiss, in dem es fast ausschließlich nur Spam (spiced ham), also „gewürzten Schinken“, auf der Speisekarte gibt. Auf die Frage, ob es auch etwas ohne Spam gäbe, antwortet die Kellnerin: „Well, there&#8217;s spam egg sausage and spam, that&#8217;s not got much spam in it.“ Woraufhin die Kundin sagt: „I don&#8217;t want ANY spam!“. Später, beim Versuch, etwas ohne Spam zu bestellen, kreischt sie sogar: „I don&#8217;t like spam!“ Spam wird in dem Sketch 132 mal genannt und steht synonym für eine unnötig häufige Verwendung und Wiederholung.</p>
<p><strong>Wie funktioniert E-Mail eigentlich?</strong></p>
<p>Bevor es losgeht, sollte man sich noch kurz klar darüber werden, was beim Versenden von E-Mails überhaupt passiert und ein paar Begriffe klären. In der Regel schreibt man eine E-Mail mit einem E-Mail-Programm, das auch E-Mail-Client oder, etwas technischer, „Mail User Agent“ (MUA) genannt wird. Traditionell werden die E-Mails vom „Mail Transfer Agent“ (MTA), das ist dann der Mailserver, entgegengenommen, falls nicht ein „Message Submission Agent“ (MSA) dazwischen geschaltet ist, der die E-Mails vom MUA an den MTA übergibt. Das Protokoll zum Versenden der Nachrichten zwischen diesen Servern heißt „Simple Mail Transfer Protocol“ (SMTP). Auf der Empfängerseite ist der „Mail Delivery Agent“ (MDA) verantwortlich für die Zustellung zum E-Mail-Client. Die Protokolle, die zum Abholen von Nachrichten verwendet werden heißen „Post Office Protocol“ (POP) oder „Internet Message Access Protocol“ (IMAP).</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2011/09/mailserver.png"><img src="http://www.datenteiler.de/wp-content/uploads/2011/09/mailserver-300x45.png" alt="" title="mailserver" width="300" height="45" class="aligncenter size-medium wp-image-6344" /></a><br /><em>Der Weg einer E-Mail vom Sender zum Empfänger.<br />
<a href="http://de.wikipedia.org/w/index.php?title=Datei:E-mail.svg">&#169;&nbsp;Polluks</a> (<a href="http://creativecommons.org/licenses/by-sa/3.0/deed.de">CC-BY-SA-3.0</a>)<br />
</em></p>
<p><strong>Nach der Theorie die Praxis</strong></p>
<p>Normalerweise fragen Mailserver beim Versenden von E-Mails nach dem vollständigen Namen einer Domain. Da hier keine E-Mail verschickt werden soll, wird mit dem Befehl nslookup nach dem entsprechenden Domainnamen gesucht:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">$ nslookup -q=mx google.com
Server:         192.168.178.1
Address:        192.168.178.1#53
&nbsp;
Non-authoritative answer:
google.com      mail exchanger = 50 alt4.aspmx.l.google.com.
google.com      mail exchanger = 10 aspmx.l.google.com.
google.com      mail exchanger = 20 alt1.aspmx.l.google.com.
google.com      mail exchanger = 30 alt2.aspmx.l.google.com.
google.com      mail exchanger = 40 alt3.aspmx.l.google.com.</pre></div></div>

<p>Gesucht wird nach dem „Mail Exchange Resource Record“ (MX-Eintrag) der Domain google.com im „Domain Name System“ (DNS), der sich ausschließlich mit dem E-Mail-Dienst (SMTP) beschäftigt. Wie man sieht hat Google gleich mehrere MX-Einträge mit unterschiedlichen Prioritäten, damit bei einem Ausfall der jeweils andere die E-Mails entgegen nehmen kann. Der Eintrag mit dem höchsten numerischen Wert hat meist die niedrigste Priorität. Das nutzen Spammer gerne aus, indem sie sich mit dem Mailserver mit der niedrigsten Priorität verbinden, um Spamfilter zu umgehen, die auf dem Server mit der höchsten Priorität laufen. Laut dem MX-Eintrag ist der Server mit der höchsten Priorität aspmx.l.google.com. Mit dem wird jetzt die Verbindung über Telnet und dem Port 25 für SMTP aufgebaut:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">$ telnet aspmx.l.google.com 25
Trying 74.125.39.27...
Connected to aspmx.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP 3si5028908fav.179</pre></div></div>

<p>Was in diesem Fall bei Google klappt, kann bei anderen Mailservern schon schief gehen. Zur Abwehr von Spammern lassen einige Mailserver – zum Beispiel von GMX – eine Verbindung zum Server im MX-Eintrag gar nicht erst zu, wenn die Anfrage über die dynamische IP eines Client-PCs gestellt wird und nicht von einem anderen Mailserver kommt. Es kann aber auch sein, dass der Mailserver aufgrund einer Störung einfach nicht erreichbar ist.</p>
<p><strong>Was einem der Statuscode so sagt</strong></p>
<p>Die letzte Zeile der obigen Ausgabe beginnt mit einer Zahl, nämlich 220. Im SMTP-Protokoll werden Befehle der Reihe nach ausgeführt und jeder Befehl wird mit einem Statuscode beantwortet. Die Beschreibung, die auf den Statuscode folgt, ist für Menschen gedacht und für das Protokoll ohne Bedeutung. Beginnt der Statuscode so wie in diesem Fall mit einer 2, dann war die Bearbeitung erfolgreich, bei einer 3 fehlen noch Informationen und bei einer 5 ist ein Fehler aufgetreten.</p>
<p>Als erstes erwartet der Server eine Begrüßung in Form eines HELO, dabei ist es im Prinzip völlig egal, welches Argument man nach dem Befehl einträgt, auch wenn man eigentlich die eigene Domain angeben sollte:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">helo hi
250 mx.google.com at your service</pre></div></div>

<p>Der Statuscode mit der 2 am Anfang zeigt, dass der Befehl erfolgreich bearbeitet wurde und der Server zu Diensten steht. Anschließend gibt man die E-Mail-Adresse des Absenders mit dem Befehl MAIL FROM ein:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">mail from: &lt;test.user@googlemail.com&gt; 250 2.1.0 OK 3si5028908fav.179</pre></div></div>

<p>Die spitzen Klammern vor und nach der E-Mail-Adresse sind wichtig. Ansonsten erhält man einen Syntax Error. Als nächstes gibt man einen Empfänger ein, zum Beispiel eine Adresse von der man weiß, dass sie existiert:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">rcpt to: &lt;larry.page@google.com&gt;
250 2.1.5 OK 3si5028908fav.179</pre></div></div>

<p><strong>Gibt es die E-Mail-Adresse wirklich?</strong></p>
<p>Die 250 oben verrät, dass der Befehl erfolgreich war. Die E-Mail-Adresse scheint zu existieren. Doch auch hier gibt es die ein oder andere Falle, die Mailserver Spammern stellen. </p>
<p>Manche Mailserver haben ein Catch-All für E-Mails, dann laufen alle E-Mails mit einer formal richtigen E-Mail-Adresse der Domain in der gleichen Mailbox zusammen und der Mailserver antwortet in diesem Fall bei jeder formal gültigen Adresse mit einem „OK“. </p>
<p>Vielleicht wird auch eine Graue Liste zur Spambekämpfung eingesetzt. Dabei wird die erste E-Mail von einem unbekannten Absender abgewiesen und erst nach dem nächsten Zustellversuch angenommen. </p>
<p>Eine weitere Methode ist das „Sender Policy Framework“ (SPF). Hier schaut der empfangende Mailserver nach, ob die Domain im Befehl MAIL FROM mit dem Argument des Befehls HELO übereinstimmt. Wenn das nicht der Fall ist, kann es gut sein, dass der Rechner E-Mails für diese Domain gar nicht versenden darf. Dadurch soll das Fälschen von Absendern auf SMTP-Ebene erschwert werden.</p>
<p>Der nächste Versuch zeigt, dass der Mailserver von Google vermutlich kein Catch-All verwendet:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">rcpt to: &lt;sandra.fruendt@google.com&gt;
550-5.1.1 The email account that you tried to reach does not exist. Please try
550-5.1.1 double-checking the recipients email address for typos or
550-5.1.1 unnecessary spaces. Learn more at                             
550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 3si5028908fav.179</pre></div></div>

<p>Auch ohne den Statuscode sieht man, dass hier etwas falsch läuft. Die E-Mail-Adresse existiert laut dem Mailserver nicht. Das kann auch wiederum mehrere Ursachen haben: Entweder ist Frau Fründt eine Externe und gehört nicht zum Unternehmen oder es gibt dort mehr als eine Sandra Fründt oder die Administratoren bei Google halten ein einheitliches Namensschema für E-Mail-Adressen in einem Unternehmen für überbewertet. Ein paar Versuche später wird klar, dass der letzte Punkt zutrifft. Mit dem Befehl QUIT schließt man die Telnet-Sitzung wieder.</p>
<p><strong>Zum Validieren reicht es nicht</strong></p>
<p>Am Ende konnte die – vermutlich – korrekte E-Mail-Adresse von Frau Fründt zusammen mit den hier gesammelten Infos nur durch weiteres Googeln genauer abgeglichen werden. Zur Validierung von E-Mail-Adressen ist das Verfahren aus den oben genannten Gründen somit nur begrenzt geeignet und wäre mit einem Webdienst wie verify-email.org [3] wesentlich schneller gegangen. Im Prinzip lässt sich so eigentlich nur ermitteln, ob zum Zeitpunkt der Abfrage der Mailserver bereit oder in der Lage ist, den Mailversand zu einer bestimmten E-Mail-Adresse durchzuführen. Das kann für die Fehlerdiagnose bei Versandproblemen durch das Mailprogramm sehr hilfreich sein, indem man seinen eigenen oder den Mailserver des Providers testet und dessen Funktionsweise direkt in einer seiner Protokollsprachen SMTP, POP3 oder IMAP überprüft, aber auch zum Testen der eigenen Spamfilter.</p>
<p><strong>Bonuslevel: Eine E-Mail über Telnet versenden</strong></p>
<p>Eine E-Mail über Telnet zu versenden ist zwar etwas komplizierter, kann sich aber zum Testen durchaus lohnen [4]. Als Beispiel dient hier der Maildienst von Google, wobei andere E-Mail-Dienst-Anbieter ähnlich funktionieren sollten.</p>
<p>Das SMTP-Protokoll wurde aufgrund der zunehmenden Spamproblematik um Verfahren zur Authentifizierung und Verschlüsselung erweitert [5]. Um eine E-Mail zu verschicken, muss man häufig diese Erweiterungen des Mailservers nutzen. Welche aktiv sind, findet man mit dem Befehl EHLO heraus, der für „Enhanced HELO“ steht:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">$ telnet smtp.googlemail.com 25 
Trying 74.125.39.16... 
Connected to googlemail-smtp.l.google.com. 
Escape character is '^]'. 
220 mx.google.com ESMTP d1sm327505fai.4 
helo hi 
250 mx.google.com at your service 
ehlo hi 
250-mx.google.com at your service, [89.182.218.152] 
250-SIZE 35882577 
250-8BITMIME 
250-STARTTLS 
250 ENHANCEDSTATUSCODES</pre></div></div>

<p>Wie man an dem Beispiel gut sehen kann, schweigt sich der Befehl HELO darüber aus, welche Fähigkeiten der Server bei Verschlüsselung, Authentifizierung und so weiter besitzt. Die bekommt man nur als Antwort auf EHLO. Die Ausgabe von STARTTLS zeigt zum Beispiel, dass der Server Verschlüsselung unterstützt.</p>
<p><strong>Codiertes Login</strong></p>
<p>Aufgrund des vermehrten Spamaufkommens verlangen Mailserver heutzutage eine Authentifizierung. Zur Vorbereitung der Authentifizierung und weil man gleich sowieso eine verschlüsselte Verbindung über openssl aufbauen muss, verlässt man den Server jetzt mit dem Befehl QUIT.</p>
<p>Die Authentifizierung findet in einer Base64-Kodierung statt. Dazu gibt man im Terminal den Befehl base64 ein und drückt „Enter“. Anschließend folgt der Anmeldename, wieder gefolgt von „Enter“. Um die Eingabe zu beenden, drückt man die Tasten „Strg“ + „D“ und erhält in etwa folgendes Ergebnis:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">$ base64 
test.user@gmail.com 
dGVzdC51c2VyQGdtYWlsLmNvbQo=</pre></div></div>

<p>Das Passwort wird genauso mit Base64 kodiert. Wenn das erledigt ist, baut man die verschlüsselte Verbindung zum Mailserver mit openssl auf:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">$ openssl s_client -starttls smtp -crlf -connect smtp.googlemail.com:25</pre></div></div>

<p>Es folgt eine wirklich lange Ausgabe im Terminal, in der man unter anderem sehen kann, dass Zertifikate ausgetauscht werden. Wenn diese erste Hürde überwunden ist, begrüßt man den Server wieder mit EHLO:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">ehlo hi 
250-mx.google.com at your service, [89.182.218.152] 
250-SIZE 35882577 
250-8BITMIME 
250-AUTH LOGIN PLAIN XOAUTH 
250 ENHANCEDSTATUSCODES</pre></div></div>

<p>Nach der Begrüßung folgt das Login mit dem Befehl AUTH LOGIN und dem Base64-kodierten Benutzernamen gleich dahinter:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">auth login dGVzdC51c2VyQGdtYWlsLmNvbQo=
334 UGFzc3dvcmQ6</pre></div></div>

<p>Der Statuscode 3 zeigt an, dass der Server noch weitere Infos benötigt. Die Beschreibung, die einen darauf hinweisen soll, was genau noch fehlt, ist übrigens auch Base64-kodiert:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">$ base64 -d 
UGFzc3dvcmQ6 
Password:</pre></div></div>

<p>Das heißt, man soll das Passwort eingeben, natürlich Base64-kodiert:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">RGFzaXN0R2VoZWltCg==
235 2.7.0 Accepted</pre></div></div>

<p><strong>Sender und Empfänger</strong></p>
<p>Nach der Eingabe des Base64-kodierten Passworts wird die E-Mail geschrieben. Mit den Befehlen MAIL FROM und RCPT TO werden Sender und Empfänger der E-Mail festgehalten:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">mail from: &lt;test.user@gmail.com &gt; 
250 2.1.0 OK l22sm324987fam.37 
rcpt to: &lt;empfaenger@beispiel.net&gt; 
250 2.1.5 OK l22sm324987fam.37</pre></div></div>

<p>Wichtig ist, dass die E-Mail-Adressen in spitzen Klammern stehen. Man kann RCPT TO auch mehrmals benutzen, wenn man die E-Mail an weitere Empfänger versenden möchte.</p>
<p>Der Befehl DATA gibt an, dass jetzt die E-Mail folgt. Zu Beginn gibt man der E-Mail beliebige Kopfzeilen mit, wobei Absender, Empfänger und Betreffzeile hier am sinnvollsten sind. Welche Adressen man in den Kopfzeilen einträgt, ist egal, es können ganz andere sein, als die, die in den Befehlen MAIL FROM und RCPT TO weiter oben eingetragen wurden. So einfach kann man Absender fälschen.</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">data 
354  Go ahead l22sm324987fam.37 
From : Test &lt;test.user@gmail.com&gt;
To: Empfaenger &lt;empfaenger@beispiel.net&gt;
Subject: Hier kommt eine Testmail 
&nbsp;
Hallo Empfaenger,
hier kommt eine Testmail. 
Viele Gruesse.</pre></div></div>

<p>Wenn der Text fertig ist, beendet man den Befehl DATA mit einem einzelnen Punkt in einer separaten Zeile. Nach der Bestätigung der Eingabe durch den Mailserver ist die E-Mail verschickt und man verlässt Telnet wieder über den Befehl QUIT.</p>
<p><strong>Links</strong><br />
[1] <a href="http://de.wikipedia.org/wiki/Telnet">http://de.wikipedia.org/wiki/Telnet</a><br />
[2] <a href="http://www.youtube.com/watch?v=anwy2MPT5RE">http://www.youtube.com/watch?v=anwy2MPT5RE</a><br />
[3] <a href="http://wiki.ubuntuusers.de/Mailserver_testen">http://wiki.ubuntuusers.de/Mailserver_testen</a><br />
[4] <a href="http://www.linux-magazin.de/Heft-Abo/Ausgaben/2002/04/Transport-Sicherung">http://www.linux-magazin.de/Heft-Abo/Ausgaben/2002/04/Transport-Sicherung</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.datenteiler.de/i-dont-like-spam-oder-wie-man-einen-mailserver-testet/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Wie kann man prüfen, ob eine E-Mail-Adresse nicht existiert, ohne eine E-Mail zum Testen zu verschicken?</title>
		<link>http://www.datenteiler.de/wie-kann-man-pruefen-ob-eine-e-mail-adresse-existiert-ohne-eine-test-mail-zu-verschicken/</link>
		<comments>http://www.datenteiler.de/wie-kann-man-pruefen-ob-eine-e-mail-adresse-existiert-ohne-eine-test-mail-zu-verschicken/#comments</comments>
		<pubDate>Sat, 13 Aug 2011 14:21:26 +0000</pubDate>
		<dc:creator>Christian Imhorst</dc:creator>
				<category><![CDATA[Gnu/Linux]]></category>
		<category><![CDATA[MacOS X und iPhone]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.datenteiler.de/?p=6206</guid>
		<description><![CDATA[Vielleicht kennt ihr das Problem ja auch: Man hat vom Format her eine korrekte E-Mail-Adresse, trotzdem wird sie nicht zugestellt, weil das Ziel dem Mail-Server unbekannt ist. Eine formal richtige E-Mail-Adresse wäre zum Beispiel lpage@google.com. Sollte ich aber an diese Adresse eine E-Mail schicken, würde ich folgende Antwort erhalten: Delivery to the following recipient failed [...]]]></description>
			<content:encoded><![CDATA[<p>Vielleicht kennt ihr das Problem ja auch: Man hat vom Format her eine korrekte E-Mail-Adresse, trotzdem wird sie nicht zugestellt, weil das Ziel dem Mail-Server unbekannt ist. Eine formal richtige E-Mail-Adresse wäre zum Beispiel <code>lpage@google.com</code>. Sollte ich aber an diese Adresse eine E-Mail schicken, würde ich folgende Antwort erhalten:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">Delivery to the following recipient failed permanently:
&nbsp;
     lpage@google.com
&nbsp;
Technical details of permanent failure: 
Google tried to deliver your message, but it was rejected by the recipient domain. We recommend contacting the other email provider for further information about the cause of this error. The error that the other server returned was: 550 550-5.1.1 The email account that you tried to reach does not exist. Please try
550-5.1.1 double-checking the recipient's email address for typos or
550-5.1.1 unnecessary spaces. Learn more at                             
550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 c20si4840621fai.47 (state 14).</pre></div></div>

<p><span id="more-6206"></span></p>
<p>Wie kann ich also im Vorfeld prüfen, ob eine E-Mail-Adresse [nicht] existiert, ohne eine Test-Mail zu versenden? Zum Beispiel mit den beiden Kommandozeilen-Tools <code>nslookup</code> und <code>telnet</code>, die bei Gnu/Linux, MacOS X und Windows standardmäßig dabei sind. Allerdings muss man <a href="http://support.microsoft.com/kb/978779/de">unter Windows 7 den Telnet-Client erst aktivieren</a>, bevor man ihn nutzen kann.</p>
<p>Zuerst benötigen wir für dieses Beispiel den Mail-Exchanger von Google, den man in der Konsole mit <code>nslookup</code> ermittelt. Das Beispiel ist aus der Bash mit <code>nslookup</code> unter Ubuntu 10.04. In anderen Konsolen unter anderen Betriebssystemen kann die Ausgabe des Befehls leicht anders aussehen. Das Prinzip ist aber dasselbe:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">nslookup -q=mx google.com
Server:		192.168.178.1
Address:	192.168.178.1#53
&nbsp;
Non-authoritative answer:
google.com	mail exchanger = 50 alt4.aspmx.l.google.com.
google.com	mail exchanger = 10 aspmx.l.google.com.
google.com	mail exchanger = 20 alt1.aspmx.l.google.com.
google.com	mail exchanger = 30 alt2.aspmx.l.google.com.
google.com	mail exchanger = 40 alt3.aspmx.l.google.com.</pre></div></div>

<p>Ich entscheide mich für den Mailserver <code>mail exchanger = 10 aspmx.l.google.com</code> und baue über <code>telnet</code> eine Verbindung zu ihm auf:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">telnet aspmx.l.google.com 25
Trying 74.125.39.27...
Connected to aspmx.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP 3si5028908fav.179</pre></div></div>

<p>Nach dem Befehl <code>telnet</code> folgt die Adresse des Mailservers <code>aspmx.l.google.com</code> und zum Schluss noch der Port, über den kommuniziert werden soll, also Port 25 für SMTP. Da ich ein höflicher Mensch bin, sage ich dem Server erstmal &#8220;Hallo&#8221;.</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">helo hi
250 mx.google.com at your service</pre></div></div>

<p>Und der Server antwortet mit 250, was bedeutet, dass meine Anfrage erfolgreich beantwortet wurde und sagt mir, dass er zu meinen Diensten steht. Sehr schön. Danach gebe ich ein, von wem die E-Mail kommen soll. In diesem Fall also von mir:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">mail from: &lt;christian.imhorst@mail.ru&gt;
250 2.1.0 OK 3si5028908fav.179</pre></div></div>

<p>Die spitzen Klammern vor und nach der E-Mail-Adresse sind wichtig. Ansonsten erhält man einen <code>Syntax Error</code>. Dann schaue ich nach, ob die E-Mail-Adresse existiert:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">rcpt to: &lt;lpage@google.com&gt;
550-5.1.1 The email account that you tried to reach does not exist. Please try
550-5.1.1 double-checking the recipients email address for typos or
550-5.1.1 unnecessary spaces. Learn more at                             
550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 3si5028908fav.179</pre></div></div>

<p>Wie man sieht, existiert diese E-Mail-Adresse leider nicht. Der Server antwortet mit 550 und sagt mir damit, dass meine Anfrage nicht erfolgreich war. Aber da ich weiß, das mein Ansprechpartner Larry mit Vornamen heißt, probiere ich das folgende Muster:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">rcpt to: &lt;larry.page@google.com&gt;
250 2.1.5 OK 3si5028908fav.179</pre></div></div>

<p>Der Server meldet zurück, dass ihm diese E-Mail-Adresse bekannt ist. Ob das auch wirklich der Larry Page ist, den ich anschreiben möchte, ist eine andere Frage, zumindest aber existiert diese E-Mail-Adresse. Mit dem Befehl <code>quit</code> schließt man die Telnet-Sitzung wieder.</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2011/08/TelnetInDerBash.png"><img src="http://www.datenteiler.de/wp-content/uploads/2011/08/TelnetInDerBash-300x214.png" alt="" title="TelnetInDerBash" width="300" height="214" class="aligncenter size-medium wp-image-6217" /></a></p>
<p>Manche Mail-Server haben übrigens ein <a href="http://de.wikipedia.org/wiki/Catch-All">Catch-All für E-Mails</a>, dann laufen alle E-Mails mit einer formal richtigen E-Mail-Adresse der Domain in der gleichen Mailbox zusammen und der Mail-Server antwortet in diesem Fall bei jeder formal gültigen Adresse mit einem &#8220;OK&#8221;. [Update:] Wie man in den ersten beiden Kommentaren nachlesen kann, gibt es noch weitere Möglichkeiten, die dieses Verfahren hinfällig werden lassen, wie <a href="http://de.wikipedia.org/wiki/Greylisting">Graue Listen</a>, <a href="http://de.wikipedia.org/wiki/Sender_Policy_Framework">Sender Policy Framework (SPF)</a>, Konformitätsprüfung oder ein rDNS lookup der Client-IP durch den <a href="http://de.wikipedia.org/wiki/Message_Submission_Agent">MSA</a>. Letztendlich lässt sich mit dem Verfahren nur ermitteln, ob zum Zeitpunkt der Abfrage der Mailserver bereit oder in der Lage ist, den Mailversand zu einer bestimmten E-Mail-Adresse durchzuführen.</p>
<p>Was kann man mit diesem Wissen, ob zum Zeitpunkt der Abfrage der Mailserver bereit oder in der Lage ist, den Mailversand zu einer bestimmten E-Mail-Adresse durchzuführen, nun anfangen? Zur Validierung von E-Mail-Adressen ist das Verfahren aus den oben genannten Gründen nur begrenzt geeignet. Abgesehen davon, kann die valide E-Mail-Adresse auch eine kurzfristige bzw. Wegwerf-E-Mail-Adresse z.B. von 10minutemail.com sein. Aber man kann mit diesem Verfahren <a href="http://wiki.ubuntuusers.de/Mailserver_testen">seinen eigenen oder den Mailserver des Providers testen</a> und dessen Funktionsweise überprüfen. So kann man eine Fehlerdiagnose durchführen, indem man mit dem Server direkt in einer seiner Protokollsprachen kommuniziert: <a href="http://de.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol">SMTP</a>, <a href="http://de.wikipedia.org/wiki/Post_Office_Protocol">POP3</a> und <a href="http://de.wikipedia.org/wiki/Internet_Message_Access_Protocol">IMAP</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.datenteiler.de/wie-kann-man-pruefen-ob-eine-e-mail-adresse-existiert-ohne-eine-test-mail-zu-verschicken/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>1Live Sendung über Linus Torvalds</title>
		<link>http://www.datenteiler.de/1live-sendung-uber-linus-torvalds/</link>
		<comments>http://www.datenteiler.de/1live-sendung-uber-linus-torvalds/#comments</comments>
		<pubDate>Wed, 11 May 2011 17:36:12 +0000</pubDate>
		<dc:creator>Christian Imhorst</dc:creator>
				<category><![CDATA[Gnu/Linux]]></category>

		<guid isPermaLink="false">http://www.datenteiler.de/?p=5680</guid>
		<description><![CDATA[Der Radio-Sender 1Live bringt heute am 11. Mai 2011 einen Beitrag über Linus Torvalds. Die Sendung heißt PlanB, läuft immer ab 20 Uhr und am heutigen Abend gibt es wohl einen Beitrag &#8220;Wahre Helden: Linus Torvalds&#8221;. Da bin ich mal gespannt. ;-) Das Ganze schreit doch geradezu nach einem Script, um die Sendung anzuhören und [...]]]></description>
			<content:encoded><![CDATA[<p>Der Radio-Sender 1Live bringt heute am 11. Mai 2011 <a href="http://www.einslive.de/sendungen/plan_b/sendeschema_plan_b.jsp">einen Beitrag  über Linus Torvalds</a>. Die Sendung heißt PlanB, läuft immer ab 20 Uhr und am heutigen Abend gibt es wohl einen Beitrag &#8220;Wahre Helden: Linus Torvalds&#8221;. Da bin ich mal gespannt. ;-)</p>
<p>Das Ganze schreit doch geradezu nach einem Script, um die Sendung anzuhören und gleichzeitig aufzuzeichnen, da ich nicht weiß, ob es den Beitrag anschließend zum Download gibt, bzw. wann er während der drei Stunden PlanB versendet wird (vermutlich läuft er aber erst nach 22 Uhr). Voraussetzung ist, dass MPlayer und VLC installiert sind:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #666666; font-style: italic;"># Script:   1LiveRecorder</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Usage: 1Live-Radiostream aufzeichnen und gleicheitig</span>
<span style="color: #666666; font-style: italic;"># anhoeren. Benoetigt die Pakete MPlayer und VLC</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">mplayer</span> <span style="color: #660033;">-dumpstream</span> <span style="color: #c20cb9; font-weight: bold;">mplayer</span> <span style="color: #660033;">-dumpstream</span> http:<span style="color: #000000; font-weight: bold;">//</span>gffstream.ic.llnwd.net<span style="color: #000000; font-weight: bold;">/</span>stream<span style="color: #000000; font-weight: bold;">/</span>gffstream_stream_wdr_einslive_a <span style="color: #660033;">-dumpfile</span> radio.mp3 <span style="color: #000000; font-weight: bold;">&amp;</span>
<span style="color: #c20cb9; font-weight: bold;">sleep</span> <span style="color: #000000;">1</span> 
cvlc radio.mp3</pre></div></div>

<p>Wer die Sendung nur hören möchte, klickt  entweder in den Livestream auf <a href="http://www.einslive.de/">1Live.de</a>, oder benutzt nur den MPlayer,</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mplayer</span> http:<span style="color: #000000; font-weight: bold;">//</span>gffstream.ic.llnwd.net<span style="color: #000000; font-weight: bold;">/</span>stream<span style="color: #000000; font-weight: bold;">/</span>gffstream_stream_wdr_einslive_a</pre></div></div>

<p>oder dieses Skript:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #666666; font-style: italic;"># Skript: 1live</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Usage: Radio-Stream von 1live mit MPlayer hoeren</span>
&nbsp;
<span style="color: #007800;">PLAYER</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">which</span> <span style="color: #c20cb9; font-weight: bold;">mplayer</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #007800;">URL</span>=<span style="color: #ff0000;">&quot;http://gffstream.ic.llnwd.net/stream/gffstream_stream_wdr_einslive_a&quot;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #660033;">-f</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$(echo $PLAYER)</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span> ; <span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;MPlayer nicht gefunden.&quot;</span>
        <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">ping</span> <span style="color: #660033;">-n</span> <span style="color: #660033;">-c</span> <span style="color: #000000;">1</span> www.w3.org <span style="color: #000000; font-weight: bold;">&gt;/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$?</span> <span style="color: #660033;">-ne</span> <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
  <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Kein Internet!&quot;</span>
  <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;*********************************************&quot;</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;* Druecke die Tasten 'Strg + c' zum beenden *&quot;</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;* Mit '0' lauter und mit '9' leiser stellen *&quot;</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;*********************************************&quot;</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> 
&nbsp;
<span style="color: #007800;">$PLAYER</span> <span style="color: #007800;">$URL</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.datenteiler.de/1live-sendung-uber-linus-torvalds/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>ASP.NET-Applikationen unter Ubuntu testen</title>
		<link>http://www.datenteiler.de/asp-net-applikationen-unter-ubuntu-testen/</link>
		<comments>http://www.datenteiler.de/asp-net-applikationen-unter-ubuntu-testen/#comments</comments>
		<pubDate>Tue, 03 May 2011 12:35:27 +0000</pubDate>
		<dc:creator>Christian Imhorst</dc:creator>
				<category><![CDATA[Gnu/Linux]]></category>

		<guid isPermaLink="false">http://www.datenteiler.de/?p=5637</guid>
		<description><![CDATA[Mit den Active Server Pages .NET (ASP.NET) kann man Webanwendungen auf Basis des .NET-Frameworks von Microsoft mit Sprachen wie C# oder VB.NET entwickeln. Dabei kann man theoretisch auch andere Sprachen verwenden, sie müssen nur zur Common Language Runtime (CLR), der Laufzeitumgebung von .NET, kompatibel sein. Der Beitrag OpenSuse mit ASP.NET-Unterstützung von Patrick Schmid (compr00t) hat [...]]]></description>
			<content:encoded><![CDATA[<p>Mit den <em>Active Server Pages .NET</em> (ASP.NET) kann man Webanwendungen auf Basis des .NET-Frameworks von Microsoft mit Sprachen wie C# oder VB.NET entwickeln. Dabei kann man theoretisch auch andere Sprachen verwenden, sie müssen nur zur <em>Common Language Runtime</em> (CLR), der Laufzeitumgebung von .NET, kompatibel sein. </p>
<p>Der Beitrag <a href="http://blog.encodingit.ch/2011/05/opensuse-mit-asp-net-unterstutzung/">OpenSuse mit ASP.NET-Unterstützung</a> von Patrick Schmid (compr00t) hat mich auf die Idee gebracht, ASP.NET-Anwendungen, die ich z.B. in VB.NET entwickel, unter Ubuntu zu testen. Der Aufbau der Testumgebung ist Dank Mono recht einfach:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> mono-xsp2 asp.net2-examples mono-vbnc</pre></div></div>

<p>XPS2 ist ein einfacher in C# geschriebener Webserver für ASP.NET 2.0, die ASP.NET2-Beispiele installiere ich, um zu schauen, ob die Testumgebung läuft, und <a href="http://www.microsoft.com/germany/msdn/solve/knowhow/howto/cliententwicklung/WieKannIchNETAnwendungenUnterLinuxErstellenUndAusfuehren.mspx">Mono-vbnc als VB.NET-Compiler</a>. Will man den C#-Compiler in Mono installieren, benötigt man <code>mono-gmcs</code>. Um den Webserver mit den soeben installierten Demos zu starten, gibt man folgenden Befehl im Terminal ein:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">xsp2 <span style="color: #660033;">--root</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>asp.net2-demos<span style="color: #000000; font-weight: bold;">/</span></pre></div></div>

<p>Wenn alles glatt läuft, erhält man folgende Ausgabe:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">xsp2
Listening on address: 0.0.0.0
Root directory: <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>asp.net2-demos
Listening on port: <span style="color: #000000;">8080</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>non-secure<span style="color: #7a0874; font-weight: bold;">&#41;</span>
Hit Return to stop the server.</pre></div></div>

<p>Jetzt kann man im Web-Browser schauen, ob bei der Installation wirklich alles gut gegangen ist, in dem man die  Adresse <a href="http://localhost:8080/">http://localhost:8080/</a> aufruft, und das Beispiel hoffentlich betrachten kann.</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2011/05/Mono-XPS2.png"><img src="http://www.datenteiler.de/wp-content/uploads/2011/05/Mono-XPS2-300x222.png" alt="" title="Mono-XPS2" width="300" height="222" class="aligncenter size-medium wp-image-5658" /></a></p>
<p>Um eigene Anwendungen zu testen, legt man einen Ordner an, z.B. ASP.NET im Home-Verzeichnis, und speichert die Datei <em>index.aspx</em> mit folgendem Inhalt im Unterordner <em>HalloWelt</em> ab:</p>

<div class="wp_syntax"><div class="code"><pre class="vb" style="font-family:monospace;">&lt;!-- index.aspx --&gt;
&lt;%@ Page Language=<span style="color: #800000;">&quot;VB&quot;</span> Debug=<span style="color: #800000;">&quot;True&quot;</span> Strict=<span style="color: #800000;">&quot;True&quot;</span>  %&gt;
&lt;script runat=<span style="color: #800000;">&quot;server&quot;</span>&gt;
<span style="color: #E56717; font-weight: bold;">Sub</span> Page_Load (<span style="color: #151B8D; font-weight: bold;">ByVal</span> Sender <span style="color: #151B8D; font-weight: bold;">As</span> <span style="color: #F660AB; font-weight: bold;">Object</span>, <span style="color: #151B8D; font-weight: bold;">ByVal</span> E <span style="color: #151B8D; font-weight: bold;">As</span> EventArgs)
   <span style="color: #151B8D; font-weight: bold;">Dim</span> strText <span style="color: #151B8D; font-weight: bold;">As</span> <span style="color: #F660AB; font-weight: bold;">String</span> 
   strText = <span style="color: #800000;">&quot;Hallo Welt!&quot;</span>
   myTitle.InnerText = strText
   myP.InnerText = strText
<span style="color: #8D38C9; font-weight: bold;">End</span> <span style="color: #E56717; font-weight: bold;">Sub</span>
&lt;/script&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;title id=<span style="color: #800000;">&quot;myTitle&quot;</span> runat=<span style="color: #800000;">&quot;server&quot;</span> &gt;&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;p id=<span style="color: #800000;">&quot;myP&quot;</span> runat=<span style="color: #800000;">&quot;server&quot;</span>&gt;&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre></div></div>

<p>Dabei muss man auf die genaue Schreibweise, sowie Groß- und Kleinschreibung achten, ansonsten hat man am Ende eine Fehlermeldung wie &#8220;Server Error in &#8216;/&#8217; Application&#8221;:</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2011/05/Mono-ASP-Error.png"><img src="http://www.datenteiler.de/wp-content/uploads/2011/05/Mono-ASP-Error-300x176.png" alt="" title="Mono-ASP-Error" width="300" height="176" class="aligncenter size-medium wp-image-5662" /></a></p>
<p>Der Webserver XPS2 wird jetzt mit einem anderen Wurzelverzeichnis gestartet:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">xsp2 <span style="color: #660033;">--root</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>christian<span style="color: #000000; font-weight: bold;">/</span>ASP.NET<span style="color: #000000; font-weight: bold;">/</span>HalloWelt</pre></div></div>

<p>Nach einem erneuten Aufruf der Adresse <a href="http://localhost:8080/">http://localhost:8080/</a> sollte im Webbrowser &#8220;Hallo Welt!&#8221; stehen und das richtige Testen kann beginnen.</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2011/05/Mono-ASP-HalloWelt.png"><img src="http://www.datenteiler.de/wp-content/uploads/2011/05/Mono-ASP-HalloWelt-300x119.png" alt="" title="Mono-ASP-HalloWelt" width="300" height="119" class="aligncenter size-medium wp-image-5667" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.datenteiler.de/asp-net-applikationen-unter-ubuntu-testen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Das iPhone und die VirtualBox</title>
		<link>http://www.datenteiler.de/das-iphone-und-die-virtualbox/</link>
		<comments>http://www.datenteiler.de/das-iphone-und-die-virtualbox/#comments</comments>
		<pubDate>Fri, 22 Apr 2011 18:24:46 +0000</pubDate>
		<dc:creator>Christian Imhorst</dc:creator>
				<category><![CDATA[Gnu/Linux]]></category>
		<category><![CDATA[MacOS X und iPhone]]></category>

		<guid isPermaLink="false">http://www.datenteiler.de/?p=5582</guid>
		<description><![CDATA[Gerade ist mir mal wieder aufgefallen, was das Problem war, wenn man versucht, einem iPhone mit iTunes über ein bekanntes Betriebssystem in der VirtualBox ein Update zu verpassen. Es funktioniert nämlich nicht so ohne weiteres. Dank eines &#8220;ID Change&#8221; im Wiederherstellungsmodus wird die USB-Schnittstelle der VirtualBox während des Updates nicht mehr erkannt und man erhält [...]]]></description>
			<content:encoded><![CDATA[<p>Gerade ist mir mal wieder aufgefallen, <a href="http://forums.virtualbox.org/viewtopic.php?f=1&#038;t=27611">was das Problem war</a>, wenn man versucht, einem iPhone mit iTunes über ein bekanntes Betriebssystem in der VirtualBox ein Update zu verpassen. Es funktioniert nämlich nicht so ohne weiteres. Dank eines &#8220;ID Change&#8221; im Wiederherstellungsmodus wird die USB-Schnittstelle der VirtualBox während des Updates nicht mehr erkannt und man erhält folgende Fehlermeldung: &#8220;Ein unbekannter Fehler ist aufgetreten. Fehler 1604&#8243;</p>
<p>Um das Problem zu beheben, habe ich die aktuellste Version von VirtualBox installiert, indem ich unter Ubuntu 10.04 Lucid Lynx folgende Zeile in die Datei <code>/etc/apt/sources.list</code> eingefügt habe:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">deb http:<span style="color: #000000; font-weight: bold;">//</span>download.virtualbox.org<span style="color: #000000; font-weight: bold;">/</span>virtualbox<span style="color: #000000; font-weight: bold;">/</span>debian lucid contrib non-free</pre></div></div>

<p>Anschließend habe ich den öffentlichen Schlüssel von Oracle heruntergeladen und VirtualBox installiert:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #660033;">-q</span> http:<span style="color: #000000; font-weight: bold;">//</span>download.virtualbox.org<span style="color: #000000; font-weight: bold;">/</span>virtualbox<span style="color: #000000; font-weight: bold;">/</span>debian<span style="color: #000000; font-weight: bold;">/</span>oracle_vbox.asc <span style="color: #660033;">-O-</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-key</span> add -
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> update
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> dkms virtualbox-<span style="color: #000000;">4.0</span></pre></div></div>

<p>Bevor man die virtuelle Maschine wieder startet, muss man nach einem Rechtsklick auf die Maschine unter &#8220;Ändern&#8221; und &#8220;USB&#8221; noch einen USB-Filter hinzufügen, der im Feld &#8220;Hersteller&#8221; die Zeichenfolge &#8220;Apple Inc.&#8221; enthält. Dann wird die USB-Schnittstelle trotz &#8220;ID Change&#8221; während des Updates wieder gefunden.</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2011/04/Bildschirmfoto.png"><img src="http://www.datenteiler.de/wp-content/uploads/2011/04/Bildschirmfoto-300x226.png" alt="" title="USB-Filter in VirtualBox" width="300" height="226" class="aligncenter size-medium wp-image-5589" /></a></p>
<p>Mit diesen Vorbereitungen klappt das Update des iPhones über die VirtualBox ohne Probleme, so als würde man einen richtigen PC benutzen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.datenteiler.de/das-iphone-und-die-virtualbox/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Wie man in Python ein App für SHR schreibt</title>
		<link>http://www.datenteiler.de/wie-man-in-python-ein-app-fuer-shr-schreibt/</link>
		<comments>http://www.datenteiler.de/wie-man-in-python-ein-app-fuer-shr-schreibt/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 19:05:56 +0000</pubDate>
		<dc:creator>Christian Imhorst</dc:creator>
				<category><![CDATA[Gnu/Linux]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[SHR]]></category>

		<guid isPermaLink="false">http://www.datenteiler.de/?p=5554</guid>
		<description><![CDATA[Für Python-Fans bieten die beiden Module Python-Elementary und Python-Evas eine schnelle und einfache Möglichkeit, grafische Oberflächen für den Enlightenment-Fenstermanager E17 und damit auch für das OpenMoko Betriebssystem SHR zu schreiben. Wer damit unter E17 experimentieren möchte, für den sind die beiden Module in Debian Sid (Unstable) bzw. in Experimental enthalten und unter Ubuntu ab 10.10 [...]]]></description>
			<content:encoded><![CDATA[<p>Für Python-Fans bieten die beiden Module Python-Elementary  und Python-Evas eine schnelle und einfache Möglichkeit, grafische Oberflächen für den Enlightenment-Fenstermanager E17 und damit auch für das OpenMoko Betriebssystem <a href="http://shr-project.org/trac">SHR</a> zu schreiben. Wer damit unter E17 experimentieren möchte, für den sind die beiden Module in Debian Sid (Unstable) bzw. in Experimental enthalten und unter Ubuntu ab 10.10 Maverick Meerkat, bzw. ab Linux Mint 10. In SHR sind sie schon dabei.</p>
<p>Für eine erste Hallo-Welt-Gui habe ich mich an das <a href="http://trac.enlightenment.org/e/wiki/Elementary">Elementary-Beispiel</a> im <a href="http://trac.enlightenment.org/e/wiki">Wiki von Enlightenment</a> gehalten, das in C geschrieben ist, bzw. an das Beispiel im <a href="http://shr-project.org/trac/wiki/Developing%20your%20own%20applications?version=94">Wiki von SHR</a>, das allerdings in VALA geschrieben wurde.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/python</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># Example for a GUI written with Python-Elementary.</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> elementary
<span style="color: #ff7700;font-weight:bold;">import</span> evas
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> HelloWorldGui<span style="color: black;">&#40;</span><span style="color: #008000;">object</span><span style="color: black;">&#41;</span>:
&nbsp;
	<span style="color: #ff7700;font-weight:bold;">def</span> destroy<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, obj<span style="color: black;">&#41;</span>:
		<span style="color: #808080; font-style: italic;"># quit the window (mainloop)</span>
		elementary.<span style="color: black;">exit</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
		elementary.<span style="color: black;">init</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;"># new window - do the usual and give it a name, title and delete handler</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">win</span> = elementary.<span style="color: black;">Window</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;HelloWorld&quot;</span>, elementary.<span style="color: black;">ELM_WIN_BASIC</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">win</span>.<span style="color: black;">title_set</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Hello&quot;</span><span style="color: black;">&#41;</span>
		<span style="color: #808080; font-style: italic;"># when the user clicks &quot;close&quot; on a window:</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">win</span>.<span style="color: black;">callback_destroy_add</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">destroy</span><span style="color: black;">&#41;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;"># add a standard background</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">bg</span> = elementary.<span style="color: black;">Background</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">win</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">win</span>.<span style="color: black;">resize_object_add</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">bg</span><span style="color: black;">&#41;</span>
		<span style="color: #808080; font-style: italic;"># do not allow bg to expand</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">bg</span>.<span style="color: black;">size_hint_weight_set</span><span style="color: black;">&#40;</span>evas.<span style="color: black;">EVAS_HINT_EXPAND</span>, evas.<span style="color: black;">EVAS_HINT_EXPAND</span><span style="color: black;">&#41;</span>
		<span style="color: #808080; font-style: italic;"># add object as a resize object for the window</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">win</span>.<span style="color: black;">resize_object_add</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">bg</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">;</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">bg</span>.<span style="color: black;">show</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;"># add a box object - default is vertical. a box holds children </span>
		<span style="color: #808080; font-style: italic;"># in a row, either horizontally or vertically. nothing more.</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">mainBox</span> = elementary.<span style="color: black;">Box</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">win</span><span style="color: black;">&#41;</span>
		<span style="color: #808080; font-style: italic;"># do not allow box to expand</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">mainBox</span>.<span style="color: black;">size_hint_weight_set</span><span style="color: black;">&#40;</span>evas.<span style="color: black;">EVAS_HINT_EXPAND</span>, evas.<span style="color: black;">EVAS_HINT_EXPAND</span><span style="color: black;">&#41;</span>
		<span style="color: #808080; font-style: italic;"># add object as a resize object for the window</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">win</span>.<span style="color: black;">resize_object_add</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">mainBox</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">mainBox</span>.<span style="color: black;">show</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;"># add a label widget </span>
		<span style="color: #008000;">self</span>.<span style="color: black;">lbl</span> = elementary.<span style="color: black;">Label</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">win</span><span style="color: black;">&#41;</span>
		<span style="color: #808080; font-style: italic;"># set text of the label</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">lbl</span>.<span style="color: black;">label_set</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Hello World!&quot;</span><span style="color: black;">&#41;</span>
		<span style="color: #808080; font-style: italic;"># do not allow label to expand </span>
		<span style="color: #008000;">self</span>.<span style="color: black;">lbl</span>.<span style="color: black;">size_hint_weight_set</span><span style="color: black;">&#40;</span>evas.<span style="color: black;">EVAS_HINT_EXPAND</span>, evas.<span style="color: black;">EVAS_HINT_EXPAND</span><span style="color: black;">&#41;</span>
		<span style="color: #808080; font-style: italic;"># pack the label at the end of the box </span>
		<span style="color: #008000;">self</span>.<span style="color: black;">mainBox</span>.<span style="color: black;">pack_end</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">lbl</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">lbl</span>.<span style="color: black;">show</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;"># add a quit button</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">btnquit</span> = elementary.<span style="color: black;">Button</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">win</span><span style="color: black;">&#41;</span>
		<span style="color: #808080; font-style: italic;"># set label for button</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">btnquit</span>.<span style="color: black;">label_set</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Quit&quot;</span><span style="color: black;">&#41;</span>
		<span style="color: #808080; font-style: italic;"># do not allow button to expand </span>
		<span style="color: #008000;">self</span>.<span style="color: black;">btnquit</span>.<span style="color: black;">size_hint_align_set</span><span style="color: black;">&#40;</span>evas.<span style="color: black;">EVAS_HINT_EXPAND</span>, evas.<span style="color: black;">EVAS_HINT_EXPAND</span><span style="color: black;">&#41;</span>
		<span style="color: #808080; font-style: italic;"># pack the button at the end of the box</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">mainBox</span>.<span style="color: black;">pack_end</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">btnquit</span><span style="color: black;">&#41;</span>
		<span style="color: #808080; font-style: italic;"># when button is clicked</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">btnquit</span>.<span style="color: black;">callback_clicked_add</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">destroy</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">btnquit</span>.<span style="color: black;">show</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;"># size of the window</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">win</span>.<span style="color: black;">resize</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">150</span>,<span style="color: #ff4500;">80</span><span style="color: black;">&#41;</span>
		<span style="color: #808080; font-style: italic;"># now we are done, show the window</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">win</span>.<span style="color: black;">show</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;"># run the mainloop</span>
		elementary.<span style="color: black;">run</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
		elementary.<span style="color: black;">shutdown</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>	
&nbsp;
<span style="color: #808080; font-style: italic;"># endof class HelloWorldGui</span>
&nbsp;
gui = HelloWorldGui<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Die Datei habe ich dann auf das OpenMoko <a href="http://www.datenteiler.de/freerunner-revolution/">kopiert</a> und dort im Terminal ausgeführt. Das Ergebnis sieht zwar nicht sehr schön aus, kann sich aber sehen lassen.</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2011/04/Elementary.png"><img src="http://www.datenteiler.de/wp-content/uploads/2011/04/Elementary-230x300.png" alt="" title="Elementary" width="230" height="300" class="aligncenter size-medium wp-image-5569" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.datenteiler.de/wie-man-in-python-ein-app-fuer-shr-schreibt/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flash-Streams mit MPlayer hören (mit Update)</title>
		<link>http://www.datenteiler.de/flash-streams-mit-mplayer-horen/</link>
		<comments>http://www.datenteiler.de/flash-streams-mit-mplayer-horen/#comments</comments>
		<pubDate>Sat, 05 Mar 2011 13:48:37 +0000</pubDate>
		<dc:creator>Christian Imhorst</dc:creator>
				<category><![CDATA[Gnu/Linux]]></category>

		<guid isPermaLink="false">http://www.datenteiler.de/?p=5516</guid>
		<description><![CDATA[Um mein Spanisch zu verbessern, möchte ich nebenbei spanische Radiosender hören. Blöderweise benutzen die meisten Flash-Player und verstecken die Live-Streams dazu zwischen Java-Script und HTML. Gibt es also keine Chance, die URL zum Stream zu ermitteln, damit ich diese Radiosender auch mit dem MPlayer hören kann? Doch gibt es, man muss sich die URL nur [...]]]></description>
			<content:encoded><![CDATA[<p>Um mein Spanisch zu verbessern, möchte ich nebenbei spanische Radiosender hören. Blöderweise benutzen die meisten Flash-Player und verstecken die Live-Streams dazu zwischen Java-Script und HTML. Gibt es also keine Chance, die URL zum Stream zu ermitteln, damit ich <a href="http://www.datenteiler.de/radio-hoeren-mit-mplayer/">diese Radiosender auch mit dem MPlayer hören</a> kann? Doch gibt es, man muss sich die URL nur aus dem Quellcode der Seite und der Ausgabe eines Netzwerk-Sniffers wie <a href="http://wiki.ubuntuusers.de/tcpdump">tcpdump</a> zusammenpuzzeln. Vermutlich gibt es mehrere Wege, die hier zum Ziel führen, ich habe es folgendermaßen gemacht:</p>
<p>Zuerst bin ich auf die Hompage des Radiosenders gesurft, in diesem Fall <a href="http://www.cadenadial.com/">Cadena Dial</a>. Um den Sender zu hören, klickt man auf den Link &#8220;Escucha en directo&#8221;. Auf dieser Seite befindet sich der Flash-Player. Um sie zu analysieren, habe ich sie mit dem Befehl <code>wget</code> heruntergeladen:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.cadenadial.com<span style="color: #000000; font-weight: bold;">/</span>multimedia<span style="color: #000000; font-weight: bold;">/</span>radios.html
<span style="color: #660033;">--2011-03-05</span> <span style="color: #000000;">14</span>:02:<span style="color: #000000;">58</span>--  http:<span style="color: #000000; font-weight: bold;">//</span>www.cadenadial.com<span style="color: #000000; font-weight: bold;">/</span>multimedia<span style="color: #000000; font-weight: bold;">/</span>radios.html
Auflösen des Hostnamen www.cadenadial.com... 194.169.201.138
Verbindungsaufbau zu www.cadenadial.com<span style="color: #000000; font-weight: bold;">|</span>194.169.201.138<span style="color: #000000; font-weight: bold;">|</span>:<span style="color: #000000;">80</span>... verbunden.
HTTP-Anforderung gesendet, warte auf Antwort... <span style="color: #000000;">200</span> OK
Länge: <span style="color: #000000;">6416</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">6</span>,3K<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>text<span style="color: #000000; font-weight: bold;">/</span>html<span style="color: #7a0874; font-weight: bold;">&#93;</span>
In »radios.html« speichern.
&nbsp;
<span style="color: #000000;">100</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>===================================================================<span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">6.416</span>       --.-K<span style="color: #000000; font-weight: bold;">/</span>s   <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000;">0</span>,08s   
&nbsp;
<span style="color: #000000;">2011</span>-03-05 <span style="color: #000000;">14</span>:02:<span style="color: #000000;">58</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">83</span>,<span style="color: #000000;">4</span> KB<span style="color: #000000; font-weight: bold;">/</span>s<span style="color: #7a0874; font-weight: bold;">&#41;</span> - »radios.html« gespeichert <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">6416</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">6416</span><span style="color: #7a0874; font-weight: bold;">&#93;</span></pre></div></div>

<p>Alternativ kann man sich den Quellcode der Seite natürlich auch im Browser anschauen. Der Link zum Stream befindet sich in der Regel zwischen den iframe-Tags im HTML-Code, muss aber nicht. Eventuell muss man ein <code>grep</code> auf <em>callsign</em> selbst absetzen, oder man nimmt <em>player</em> als Suchwort.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">grep</span> iframe radios.html
<span style="color: #000000; font-weight: bold;">&lt;</span>iframe <span style="color: #007800;">src</span>=<span style="color: #ff0000;">&quot;http://player.streamtheworld.com/_players/unionradio/?callsign=CADENADIAL&quot;</span> ...<span style="color: #000000; font-weight: bold;">&lt;/</span>iframe<span style="color: #000000; font-weight: bold;">&gt;</span></pre></div></div>

<p>Ich habe die Ausgabe auf den wichtigsten Teil reduziert, nämlich auf den Link für den Flash-Player. Hier muss man sich den Wert hinter <code>callsign=</code> merken, in diesem Fall also &#8220;CADENADIAL&#8221;. </p>
<p>Während der Radiosender im Flash-Player des Browsers vor sich hin spielt, startet man <code>tcpdump</code>, um herauszufinden, von welcher IP-Adresse der Player seinen Stream eigentlich bezieht.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># tcpdump -i wlan0 -n</span></pre></div></div>

<p>Man kann <code>tcpdump</code> nur als Root starten. Hinter der Option <code>-i</code> gibt man das Interface an, auf dem gesnifft werden soll, die Option <code>-n</code> löst keine Hostnamen auf, sondern gibt die IP-Adressen zurück. Die Ausgabe sieht dann etwa wie folgt aus:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">listening on wlan0, link-type EN10MB <span style="color: #7a0874; font-weight: bold;">&#40;</span>Ethernet<span style="color: #7a0874; font-weight: bold;">&#41;</span>, capture <span style="color: #c20cb9; font-weight: bold;">size</span> <span style="color: #000000;">96</span> bytes
<span style="color: #000000;">14</span>:<span style="color: #000000;">21</span>:<span style="color: #000000;">20.622711</span> IP 208.92.52.88.80 <span style="color: #000000; font-weight: bold;">&gt;</span> 192.168.178.22.59240: Flags <span style="color: #7a0874; font-weight: bold;">&#91;</span>.<span style="color: #7a0874; font-weight: bold;">&#93;</span>, <span style="color: #c20cb9; font-weight: bold;">seq</span> <span style="color: #000000;">3400577045</span>:<span style="color: #000000;">3400578485</span>, ack <span style="color: #000000;">2642445401</span>, win <span style="color: #000000;">1723</span>, options <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #c20cb9; font-weight: bold;">nop</span>,<span style="color: #c20cb9; font-weight: bold;">nop</span>,TS val <span style="color: #000000;">1395385741</span> ecr <span style="color: #000000;">1233879</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>, length <span style="color: #000000;">1440</span>
<span style="color: #000000;">14</span>:<span style="color: #000000;">21</span>:<span style="color: #000000;">20.675395</span> IP 192.168.178.22.59240 <span style="color: #000000; font-weight: bold;">&gt;</span> 208.92.52.88.80: Flags <span style="color: #7a0874; font-weight: bold;">&#91;</span>.<span style="color: #7a0874; font-weight: bold;">&#93;</span>, ack <span style="color: #000000;">1440</span>, win <span style="color: #000000;">947</span>, options <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #c20cb9; font-weight: bold;">nop</span>,<span style="color: #c20cb9; font-weight: bold;">nop</span>,TS val <span style="color: #000000;">1233930</span> ecr <span style="color: #000000;">1395385741</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>, length <span style="color: #000000;">0</span>
<span style="color: #000000;">14</span>:<span style="color: #000000;">21</span>:<span style="color: #000000;">20.719510</span> IP 208.92.52.88.80 <span style="color: #000000; font-weight: bold;">&gt;</span> 192.168.178.22.59240: Flags <span style="color: #7a0874; font-weight: bold;">&#91;</span>.<span style="color: #7a0874; font-weight: bold;">&#93;</span>, <span style="color: #c20cb9; font-weight: bold;">seq</span> <span style="color: #000000;">1440</span>:<span style="color: #000000;">2880</span>, ack <span style="color: #000000;">1</span>, win <span style="color: #000000;">1723</span>, options <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #c20cb9; font-weight: bold;">nop</span>,<span style="color: #c20cb9; font-weight: bold;">nop</span>,TS val <span style="color: #000000;">1395385837</span> ecr <span style="color: #000000;">1233879</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>, length <span style="color: #000000;">1440</span></pre></div></div>

<p>Sie zeigt vor allem zwei IP-Adressen, nämlich <code>192.168.178.22</code>, das ist in diesem Fall die eigene, und <code>208.92.52.88</code>, die Adresse des Servers mit dem Live-Stream. Genau genommen steht in der Ausgabe von <code>tcpdump</code> ja <code>208.92.52.88.80</code>. Die letzte Zahl, zeigt die Portnummer an, in diesem Fall Port 80, hinter dem HTTP als Dienst steht. Jetzt haben wir alle notwendigen Infos, um den Link für den MPlayer in der Kommandozeile zusammenzusetzen:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mplayer</span> http:<span style="color: #000000; font-weight: bold;">//</span>208.92.52.88<span style="color: #000000; font-weight: bold;">/</span>CADENADIAL</pre></div></div>

<p>Oder im <a href="http://de.wikipedia.org/wiki/Advanced_Audio_Coding">AAC-Format</a>:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mplayer</span> http:<span style="color: #000000; font-weight: bold;">//</span>208.92.52.88<span style="color: #000000; font-weight: bold;">/</span>CADENADIALAAC</pre></div></div>

<p>Zuerst kommt der Befehl, um den Musikplayer zu starten, <code>mplayer</code>, dann der Dienst, über den kommuniziert werden soll, <code>http://</code>, dann die IP-Adresse des Servers <code>208.92.52.88</code> und zum Schluss kommt mit <code>CADENADIAL</code> das Verzeichnis zum Stream. </p>
<p>Auf dem Server sind übrigens noch weitere Streams von spanischen Radios beheimatet. Unter anderem auch von <a href="http://www.http://www.los40.com/">Los40</a>. Während Cadena Dial fast ausschließlich spanisch sprachige Musik spielt, ist bei Los40 der Mix mit aktueller Musik aus den Charts etwas internationaler.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mplayer</span> http:<span style="color: #000000; font-weight: bold;">//</span>208.92.52.88<span style="color: #000000; font-weight: bold;">/</span>LOS40</pre></div></div>

<p>Oder im AAC-Format:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mplayer</span> http:<span style="color: #000000; font-weight: bold;">//</span>208.92.52.88<span style="color: #000000; font-weight: bold;">/</span>LOS40AAC</pre></div></div>

<p><strong>Update:</strong></p>
<p>Willie gibt in den Kommentaren einen Hinweis auf den chilenischen Sender <a href="http://www.futuro.cl/">Futuro</a>, den man lieben wird, wenn man auf Heavy Metal und Hard Rock steht. Es könnte der Lieblingssender von Jara aus dem Film <a href="http://www.amazon.de/gp/product/B0038P1M6K?ie=UTF8&#038;tag=imhorstnet-21&#038;linkCode=as2&#038;camp=1638&#038;creative=6742&#038;creativeASIN=B0038P1M6K">Gigante</a><img src="http://www.assoc-amazon.de/e/ir?t=imhorstnet-21&#038;l=as2&#038;o=3&#038;a=B0038P1M6K" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> sein, wobei der Film in Uruguay spielt, nicht in Chile, er passt aber zur Musik im Film. Etwas abgewandelt bekommt man mit der hier beschriebenen Methode dann diesen Befehl zustande:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mplayer</span> http:<span style="color: #000000; font-weight: bold;">//</span>208.80.54.28<span style="color: #000000; font-weight: bold;">/</span>FUTURO</pre></div></div>

<p>Die Qualität ist allerdings nicht so berauschend. Der <a href="http://locpic.de/images/unbenazhz.jpg">Screenshot</a> mit Firebug von Johannes in den Kommentaren zeigt, dass zumindest Cadena Dial auch im AAC-Format gestreamt wird, was die Qualität verbessern sollte. Und potz blitz, bei Futuro funktioniert dieser Stream auch:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mplayer</span> http:<span style="color: #000000; font-weight: bold;">//</span>208.80.54.28<span style="color: #000000; font-weight: bold;">/</span>FUTUROAAC</pre></div></div>

<p>Die Qualität hört sich richtig gut an. Die anderen MPlayer-Befehle habe ich deshalb entsprechend erweitert. Vielen Dank für diese Hinweise und viel Spaß beim Hören.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.datenteiler.de/flash-streams-mit-mplayer-horen/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

