<?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>TheFox &#187; Perl</title>
	<atom:link href="http://fox21.at/category/perl/feed" rel="self" type="application/rss+xml" />
	<link>http://fox21.at</link>
	<description>Just another Perl hacker.</description>
	<lastBuildDate>Sun, 06 May 2012 14:22:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>perlbot2</title>
		<link>http://fox21.at/perlbot2.html</link>
		<comments>http://fox21.at/perlbot2.html#comments</comments>
		<pubDate>Mon, 06 Jun 2011 20:45:26 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Bot]]></category>
		<category><![CDATA[IRC]]></category>

		<guid isPermaLink="false">http://fox21.at/?p=3721</guid>
		<description><![CDATA[Once again. Vor ca. 3 Jahren wollte ich schon einmal einen IRC Bot in Perl schreiben. Desswegen auch die &#8220;2&#8243; im Namen. Weil die erste Version viel zu kompliziert war, hab&#8217; ich jetzt noch einmal von NULL an angefangen einen &#8230; <a href="http://fox21.at/perlbot2.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Once again. Vor ca. 3 Jahren wollte ich schon einmal einen IRC Bot in Perl schreiben.</p>
<p><span id="more-3721"></span></p>
<p>Desswegen auch die &#8220;2&#8243; im Namen. Weil die erste Version viel zu kompliziert war, hab&#8217; ich jetzt noch einmal von NULL an angefangen einen IRC Bot in Perl zu schreiben. Den aktuellen Fortschritt meines IRC Perl Bots kann man auf GitHub verfolgen: <a target="_blank" href="https://github.com/TheFox/perlbot2" target="_blank">https://github.com/TheFox/perlbot2</a></p>
<p>Wie man sieht ist noch nicht viel davon zu sehen. Vielleicht wird es ja dieses Mal was. Ich will naemlich wieder mehr im IRC aktiv sein. Leider fehlt mir dafuer eindeutig die Zeit.</p>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/perlbot2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TwitterExporter 1.0.0</title>
		<link>http://fox21.at/twitterexporter-1-0-0.html</link>
		<comments>http://fox21.at/twitterexporter-1-0-0.html#comments</comments>
		<pubDate>Sun, 18 Apr 2010 14:23:08 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[SocialNetwork]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://fox21.at/?p=2801</guid>
		<description><![CDATA[TwitterExporter exportiert alle Informationen aus dem eigenen Twitter Account. Alle Tweets, Favoriten, Mentions (@), Followers und Friends werden mit diesem Script in eine XML-Datei gespeichert. Es koennen auch mehrere Twitter Accounts angegeben werden. Bevor man loslegen kann, muss noch die &#8230; <a href="http://fox21.at/twitterexporter-1-0-0.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>TwitterExporter exportiert alle Informationen aus dem eigenen Twitter Account. Alle Tweets, Favoriten, Mentions (@), Followers und Friends werden mit diesem Script in eine XML-Datei gespeichert.</p>
<p><span id="more-2801"></span></p>
<p>Es koennen auch mehrere Twitter Accounts angegeben werden. Bevor man loslegen kann, muss noch die Variable <strong>%CONFIG</strong> angepasst werden. Wenn <strong>$DEBUG</strong> auf 1 (true) gestellt ist, werden nicht nur die Fehlermeldungen ausgegeben. Dieses Script ist vorallem als Linux-Cronjob gedacht. Laut <a target="_blank" href="http://apiwiki.twitter.com/Twitter-API-Documentation" target="_blank">Twitter API</a> kann man nur 150 Requests pro Stunde anfordern. Ich habe einen Cronjob eingerichtet, der nur einmal am Tag rennt. Sollte eigentlich reichen. Ausserdem muss darauf geachtet werden, dass das Script die Rechte 0700 (<tt>-rwx------</tt>) hat. Da die Passwoerter der Twitter Accounts ohne Verschluesselung im Script stehen, ist das unbedingt von Noeten.</p>
<p>Die Rechte des Scriptes aendert man wie folgt mit <tt>chmod</tt>:</p>
<pre>chmod 0700 twitterexporter.pl</pre>
<h2>Benoetigte Perl-Module</h2>
<ul>
<li>FindBin</li>
<li><a target="_blank" href="http://search.cpan.org/perldoc?DateTime" target="_blank">DateTime</a></li>
<li><a target="_blank" href="http://search.cpan.org/perldoc?XML::LibXML">XML::LibXML</a></li>
<li><a target="_blank" href="http://search.cpan.org/perldoc?Net::Twitter" target="_blank">Net::Twitter</a></li>
</ul>
<h2>Download</h2>
<ul>
<li><a target="_blank" href="http://software.fox21.at/twitterexporter/releases/twitterexporter-1.0.0.tar.gz" target="_blank">twitterexporter-1.0.0.tar.gz</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/twitterexporter-1-0-0.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MakeIndex 1.1.0</title>
		<link>http://fox21.at/makeindex-1-1-0.html</link>
		<comments>http://fox21.at/makeindex-1-1-0.html#comments</comments>
		<pubDate>Sun, 04 Apr 2010 12:01:57 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Crontab]]></category>
		<category><![CDATA[HTTP]]></category>

		<guid isPermaLink="false">http://fox21.at/?p=2714</guid>
		<description><![CDATA[Ein paar Kleinigkeiten habe ich am MakeIndex ausgebessert und es gleich auf meine Homepage gestellt. Hier ein paar Erneuerungen. Fuer eine genauer Beschreibung bitte beim Artikel von Version 1.0.0 lesen. Die Variable $RECURSIVE wird ab jetzt auch verwendet. Bei der &#8230; <a href="http://fox21.at/makeindex-1-1-0.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ein paar Kleinigkeiten habe ich am <a target="_blank" href="/makeindex-1-0-0.html" target="_blank">MakeIndex</a> ausgebessert und es gleich auf meine Homepage gestellt.</p>
<p><span id="more-2714"></span></p>
<p>Hier ein paar Erneuerungen. Fuer eine genauer Beschreibung bitte beim <a target="_blank" href="/makeindex-1-0-0.html" target="_blank">Artikel von Version 1.0.0</a> lesen.</p>
<ul>
<li>Die Variable <strong>$RECURSIVE</strong> wird ab jetzt auch verwendet. Bei der <a target="_blank" href="/makeindex-1-0-0.html" target="_blank">Version 1.0.0</a> war diese Variable zwar auch schon enthalten, aber sie war sinnlos.</li>
<li>Die Variable <strong>@IGNORE</strong> ist jetzt bei Version 1.1.0 dazu gekommen. In diesem Array kann man alle Pfade eintragen, die das Script ignorieren soll.</li>
</ul>
<p>Wie immer gilt: <a target="_blank" href="/term" target="_blank"><strong>Benutzung auf eigene Gefahr</strong></a>. Da das Script kein eigenes Konfigurationsfile hat, ist es nicht schlecht, wenn man die alte Version umbenennt, da sonst die eingetragenen Pfade verloren gehen.</p>
<h2>Download</h2>
<ul>
<li><a target="_blank" href="http://software.fox21.at/makeindex/releases/makeindex-1.1.0.tar.gz" target="_blank">makeindex-1.1.0.tar.gz</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/makeindex-1-1-0.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MakeIndex 1.0.0</title>
		<link>http://fox21.at/makeindex-1-0-0.html</link>
		<comments>http://fox21.at/makeindex-1-0-0.html#comments</comments>
		<pubDate>Sun, 24 Jan 2010 10:19:58 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Crontab]]></category>
		<category><![CDATA[HTTP]]></category>

		<guid isPermaLink="false">http://fox21.at/?p=2358</guid>
		<description><![CDATA[Es gibt kein Problem, dass man nicht mit Perl loesen koennte. Dieses Script erstellt in angegebenen Ordnern eine index.html mit einer Auflistung aller, jeweils in den Ordnern enthaltenen, Unterordnern und Dateien. Der Sinn und Zweck liegt darin, dass die index.html &#8230; <a href="http://fox21.at/makeindex-1-0-0.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Es gibt kein Problem, dass man nicht mit Perl loesen koennte. Dieses Script erstellt in angegebenen Ordnern eine index.html mit einer Auflistung aller, jeweils in den Ordnern enthaltenen, Unterordnern und Dateien.</p>
<p><span id="more-2358"></span></p>
<p>Der Sinn und Zweck liegt darin, dass die index.html von einem Script erzeugt wird und nicht vom HTTP-Prozess. Manche HTTP-Server, wie z. B. Apache, koennen auch Index Seiten ausliefern, falls es fuer einen Ordner kein Index-File gibt. Das kann jedoch zu einer hohen Prozessauslastung fuehren, da der Prozess mit dem Auslesen der Ordner-Informationen, wie z. B. Filegroessen und File-Aenderungszeiten, beschaeftigt ist. Vorallem wenn viele User ueber HTTP auf einen Ordner zugreifen, oder wenn viele Files in einem Ordner existieren, kann es zu einer hoeheren Auslastung des Prozesses kommen. Die Auslieferung eines statischem HTML-Files fuehrt im Normalfall nicht zu einer hohen Prozessauslastung.</p>
<h2><span style="color: #ff0000;">WICHTIGER HINWEIS</span></h2>
<p>Dieses Script ueberschreibt jede index.html. Das Ausfuehren des Script geschieht auf <a target="_blank" href="/term" target="_blank"><strong>eigene Gefahr</strong></a>.</p>
<h2>Konfiguration</h2>
<ul>
<li><strong>$DEBUG</strong> &#8211; Diese Variable, gibt Informationen im STDOUT aus, falls sie auf 1 (true) gesetzt ist. An den Index-Files aendert sich dadurch nichts.</li>
<li><strong>$RECURSIVE</strong> &#8211; Falls diese Variable auf 1 (true) gesetzt ist, werden in allen Unterordnern jeweils auch index.html Files erzeugt.</li>
<li><strong>$INTERVAL</strong> &#8211; Diese Variable dient nur zur Inforamtion. Sie sagt nichts darueber aus, wie oft ein Index-File wirklich erstellt wird. Es haengt von der Cronjob-Einstellung ab, wie oft die Index-Files erstellt werden.</li>
<li><strong>@INDIR</strong> &#8211; Dieses Array muss alle Pfade enthalten, in denen Index-Files erstellt werden sollen. Da das Array mit einer <strong>qw()</strong>-Anweisung erstellt wird, darf ein Pfad keine Leerzeichen enthalten. Die einzelnen Pfade koennen durch Leerzeichen, Tabulatoren oder durch neue Zeilen getrennt sein.</li>
<li><strong>@IGNORE</strong> &#8211; Dieses Array kann Pfade enthalten, die vom Script nicht beruecksichtigt werden.</li>
</ul>
<p>Ausserdem muss ein Cronjob eingerichtet werden, der das Script in einem bestimmten Intervall ausfuehrt. Ein Eintrag im <strong>crontab</strong> koennte wie folgt aussehen:</p>

<div class="wp_syntax"><div class="code"><pre class="crontab" style="font-family:monospace;">*/5 * * * * /home/USER/makeindex.pl</pre></div></div>

<h2>Benoetigte Perl-Module</h2>
<ul>
<li>File::Basename</li>
</ul>
<h2>Download</h2>
<ul>
<li><a target="_blank" href="http://software.fox21.at/makeindex/releases/makeindex-1.1.0.tar.gz" target="_blank">makeindex-1.1.0.tar.gz</a></li>
<li><a target="_blank" href="http://software.fox21.at/makeindex/releases/makeindex-1.0.0.tar.gz" target="_blank"><del datetime="2010-04-04T11:42:07+00:00">makeindex-1.0.0.tar.gz</del></a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/makeindex-1-0-0.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Files Backup 1.0.0</title>
		<link>http://fox21.at/files-backup-1-0-0-linux-rsync.html</link>
		<comments>http://fox21.at/files-backup-1-0-0-linux-rsync.html#comments</comments>
		<pubDate>Sat, 23 Jan 2010 18:10:51 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Backup]]></category>

		<guid isPermaLink="false">http://fox21.at/?p=2305</guid>
		<description><![CDATA[Es gibt kein Problem, dass man nicht mit Perl loesen koennte. Diesen Satz habe ich schon lange nicht mehr geschrieben. Das erste Software-Release in diesem Jahr. Hier ist also wieder einmal ein Perl-Script von mir. Es funktioniert aber nur mit &#8230; <a href="http://fox21.at/files-backup-1-0-0-linux-rsync.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Es gibt kein Problem, dass man nicht mit Perl loesen koennte. Diesen Satz habe ich schon lange nicht mehr geschrieben. Das erste Software-Release in diesem Jahr. Hier ist also wieder einmal ein Perl-Script von mir. Es funktioniert aber nur mit Linux. Ausser man installiert sich auf Windows auch <a target="_blank" href="http://rsync.samba.org/" target="_blank">rsync</a>.</p>
<p><span id="more-2305"></span></p>
<p>Das Linux Programm rsync eignet sich perfekt um Backups von Dateien zu machen. Dieses Script verwendet rsync aber offline. Das heisst, es werden die Files auf eine USB-Festplatte oder eine andere eingebaute Festplatte kopiert. Es geht darum, wenn die Festplatte einen Schaden hat, dass immer noch ein Backup vorhanden ist. Das ist eigentlich der schlimmste Fall, der eintreten kann. Man kann mit diesem Script also <strong>nicht</strong> verschiedene Versionen eines Files herstellen, sondern immer nur das letzte Backup. Professionell ausgedrueckt erstellt dieses Script ein <strong>inkrementelles Backup</strong>. Beim erstmaligen Start wird eine Volldatensicherung gemacht. Danach eine  inkrementelle Datensicherung. Mit ein paar kleinen Aenderungen kann dieses Script jedoch auch fuers Netzwerk verwendet werden.</p>
<h2>Verwendete rsync-Einstellungen</h2>
<ul>
<li>-r: <strong>Rekursiv</strong> alle Ordner und Unterordner kopieren.</li>
<li>-R: <strong>Relative Pfade</strong>. Diese Option bewirkt, dass die gleichen Pfade beim Ziel verwendet werden. Zum Beispiel: Der Ordner /etc/init.d wird in der Datei mkbak.files.txt eingetragen, damit von diesem auch ein Backup erstell wird. Das Backup wird auf einer Festplatte gespeichert, die unter /mnt/backup gemountet ist. Der Ordner /etc/init.d wird also nach /mnt/backup/etc/init.d kopiert. So funktioniert es nicht nur mit Ordnern sondern auch mit Files.</li>
<li>-l: <strong>Symbolische Links</strong> werden auch kopiert.</li>
<li>-p: Die <strong>Rechte</strong> werden am Ziel vom Original fuer Ordner und Files uebernommen.</li>
<li>-o: Der <strong>Besitzer</strong> wird am Ziel vom Original fuer Ordner und Files uebernommen. Erfordert, dass rsync mit root ausgefuehrt wird.</li>
<li>-g: Die <strong>Gruppe</strong> wird am Ziel vom Original fuer Ordner und Files uebernommen. Erfordert, dass rsync mit root ausgefuehrt wird.</li>
<li>-t: Die <strong>Aenderungszeit</strong> wird am Ziel vom Original fuer Ordner und Files uebernommen.</li>
</ul>
<h2>Benoetigte Perl-Module</h2>
<ul>
<li><a target="_blank" href="http://search.cpan.org/perldoc?FindBin" target="_blank">FindBin</a></li>
</ul>
<h2>Installation</h2>
<ol>
<li>Download

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">wget http://software.fox21.at/mkbakfiles/releases/mkbak.files-1.0.0-linux.tar.gz</pre></div></div>

</li>
<li>Entzippen

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">gzip -d mkbak.files-1.0.0-linux.tar.gz</pre></div></div>

</li>
<li>Entpacken

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">tar -xvf mkbak.files-1.0.0-linux.tar</pre></div></div>

</li>
<li>Konfigurieren. Alle Files und Ordner, die gesichert werden sollen, muessen im File <strong>mkbak.files.txt</strong> eingetragen werden. Ein File oder einen Ordner <strong>pro Zeile</strong>. Jede leere Zeile und jede Zeile die mit einem # (Raute-Zeichen) anfangen, werden ignoriert.
<pre># comment
/home/thefox/
/etc
/usr/local/bin</pre>
</li>
</ol>
<h2>Download</h2>
<ul>
<li><a target="_blank" href="http://software.fox21.at/mkbakfiles/releases/mkbak.files-1.0.0-linux.tar.gz" target="_blank">mkbak.files-1.0.0-linux.tar.gz</a></li>
</ul>
<h2>Weblinks</h2>
<ul>
<li><a target="_blank" href="http://www.pcwissen.eu/sicherungskonzepte.html" target="_blank">Datensicherungskonzepte</a></li>
<li><a target="_blank" href="http://www.foerderland.de/2274.0.html" target="_blank">Moeglichkeiten der Datensicherung</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/files-backup-1-0-0-linux-rsync.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DDL-Warez.org Links 2.0.0 &#8211; Flash Captchas</title>
		<link>http://fox21.at/ddl-warezorg-links-200-flash-captchas.html</link>
		<comments>http://fox21.at/ddl-warezorg-links-200-flash-captchas.html#comments</comments>
		<pubDate>Wed, 29 Apr 2009 21:30:21 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[CAPTCHA]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[DDL-Warez]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[RapidShare]]></category>

		<guid isPermaLink="false">http://fox21.at/?p=1012</guid>
		<description><![CDATA[Nachdem ddl-warez.org gestern/vorgestern auf sichere Flashcaptchas umgesattelt hatte, musste auch ich mein DDL-Warez.org Links-Script anpassen. Jeder denkt sicher, dass diese Captchas, noch dazu in Flash, unumgaenglich seien. Dem ist aber nicht so. Das Flashcaptcha (z. B. http://www.ddl-warez.org/getcaptcha.php?id=abcd), beinhaltet einen dynamischen &#8230; <a href="http://fox21.at/ddl-warezorg-links-200-flash-captchas.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Nachdem <a target="_blank" href="http://www.ddl-warez.org/" target="_blank">ddl-warez.org</a> gestern/vorgestern auf <em>sichere</em> Flashcaptchas umgesattelt hatte, musste auch ich mein <a target="_blank" href="/ddl-warezorg-links-100.html" target="_blank">DDL-Warez.org Links</a>-Script anpassen.</p>
<p><span id="more-1012"></span></p>
<p>Jeder denkt sicher, dass diese Captchas, noch dazu in Flash, unumgaenglich seien. Dem ist aber nicht so. Das Flashcaptcha (z. B. <a target="_blank" href="http://www.ddl-warez.org/getcaptcha.php?id=abcd" target="_blank">http://www.ddl-warez.org/getcaptcha.php?id=abcd</a>), beinhaltet einen dynamischen Teil. Es muss ja schliesslich bei jedem Aufruf ein anderes Captcha angezeigt werden. In dieser SWF-Datei stehen die Captchas, nicht wie anfangs angenommen verschluesselt, sondern unverschluesselt am Ende dieser Datei. Sogar in HTML-Format: <strong><em>&lt;p align=&#8221;center&#8221;&gt;&lt;font face=&#8221;Berlin Sans FB Demi&#8221; size=&#8221;60&#8243; color=&#8221;#e8edf0&#8243; letterSpacing=&#8221;0.000000&#8243; kerning=&#8221;1&#8243;&gt;1234&lt;/font&gt;&lt;/p&gt;</em></strong>. In dem Fall waere der Captcha-Code <em>1234</em>. Dadurch kann man die Eingabe der Captchas simulieren. Etwas, das man nicht simulieren kann, ist die Wartezeit nach der Captchaeingabe. Natuerlich muss auch mein Script diese Zeit verstreichen lassen, bis es weiter arbeiten kann. Desswegen rennt das Script <strong>mindestens</strong> 5 Sekunden oder laenger. Man darf sich also nicht wundern, wenn es etwas laenger braucht, um die RapidShare-Links zu bekommen. Aber immerhin ist es noch schneller, als wenn jeder Link haendisch kopiert werden muss. Es war ein ganzes Stueck Arbeit, um es so weit zu bringen, dass das Script die Captchabilder auslesen kann.</p>
<p><a target="_blank" href="/ddl-warezorg-links-100.html" target="_blank">Installationsanleitung</a></p>
<h2><strong>Download</strong></h2>
<ul>
<li><a target="_blank" href="http://software.fox21.at/ddllinks/releases/ddllinks-2.0.0.zip" target="_blank"><del datetime="2009-05-01T15:56:14+00:00">ddllinks-2.0.0.zip</del></a></li>
<li><a target="_blank" href="/ddl-warezorg-links-100.html" target="_blank">aeltere Versionen</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/ddl-warezorg-links-200-flash-captchas.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>DDL-Warez.org Links 1.4.0</title>
		<link>http://fox21.at/ddl-warezorg-links-140.html</link>
		<comments>http://fox21.at/ddl-warezorg-links-140.html#comments</comments>
		<pubDate>Thu, 23 Apr 2009 19:39:13 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[CAPTCHA]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[DDL-Warez]]></category>
		<category><![CDATA[RapidShare]]></category>

		<guid isPermaLink="false">http://fox21.at/?p=990</guid>
		<description><![CDATA[Warum bin ich nicht schon viel frueher auf diese Idee gekommen? Im DDL-Warez.org Links-Script wird das Captcha-Wort nicht mehr dynamisch aus der HTML-Seite ausgelesen, sondern von http://software.fox21.at/ddllinks/captcha.txt. Damit kann ich das Wort aendern und muss nicht jedes Mal eine neue &#8230; <a href="http://fox21.at/ddl-warezorg-links-140.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Warum bin ich nicht schon viel frueher auf diese Idee gekommen? Im <a target="_blank" href="/ddl-warezorg-links-100.html" target="_blank">DDL-Warez.org Links</a>-Script wird das Captcha-Wort nicht mehr dynamisch aus der HTML-Seite ausgelesen, sondern von <a target="_blank" href="http://software.fox21.at/ddllinks/captcha.txt" target="_blank">http://software.fox21.at/ddllinks/captcha.txt</a>. Damit kann ich das Wort aendern und muss nicht jedes Mal eine neue Version dieses Scripts uploaden. Ausserdem muss man sich nicht jedes Mal mein neues Script herunterladen, nur weil sich das Wort aendert.</p>
<p><a target="_blank" href="/ddl-warezorg-links-100.html" target="_blank">Installationsanleitung</a></p>
<h2><strong>Download</strong></h2>
<ul>
<li><a target="_blank" href="/ddl-warezorg-links-100.html" target="_blank">hier</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/ddl-warezorg-links-140.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pwait 1.0.0</title>
		<link>http://fox21.at/pwait-100.html</link>
		<comments>http://fox21.at/pwait-100.html#comments</comments>
		<pubDate>Fri, 10 Apr 2009 10:12:00 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Prozess]]></category>

		<guid isPermaLink="false">http://fox21.at/?p=906</guid>
		<description><![CDATA[Es gibt kein Problem, das man nicht mit Perl loesen koennte. pwait ist ein Perl Script, das auf einen anderen Prozess wartet und dann selber einen weiteren Prozess startet. Ich hab&#8217; mich schon oft geaergert, nachdem ich ein Shell Script &#8230; <a href="http://fox21.at/pwait-100.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Es gibt kein Problem, das man nicht mit Perl loesen koennte. pwait ist ein Perl Script, das auf einen anderen Prozess wartet und dann selber einen weiteren Prozess startet.</p>
<p><span id="more-906"></span></p>
<p>Ich hab&#8217; mich schon oft geaergert, nachdem ich ein Shell Script oder ein Programm gestartet hatte und wollte, dass, nachdem es alles abgearbeitet hatte, noch weitere Aktionen ausfuehrt. Desswegen entschloss ich mich dazu, diese Script zu schreiben. Es wird dem Script eine Prozess ID und ein Pfad zu einem weiteren Programm uebergeben, das danach gestartet wird. pwait wartet solange bis der Prozess beendet wurde und startet anschliessend ein anderes Programm. Es koennen natuerlich auch mehrere Prozess IDs und Programmpfade uebergeben werden. In dem Fall wartet das Perl Script so lange, bis alle Prozesse, deren IDs uebergeben worden sind, beendet wurden. Um einem Programm, das gestartet werden soll, auch Argumente zu uebergeben, muss dieses sammt den Argumenten unter Hochkomma (&#8220;&#8221;) gestellt werden.</p>
<p>In diesem Beispiel wartet pwait bis der Prozess mit der ID <strong>1234</strong> beendet wurde und startet anschliessend den Befehl &#8220;sleep 10&#8243;.</p>
<pre>./pwait.pl 1234 "sleep 10"</pre>
<h2><strong>Benoetigte Perl-Module</strong></h2>
<ul>
<li>Win32::Process</li>
<li>Win32::Process::List</li>
</ul>
<h2><strong>Download</strong></h2>
<ul>
<li><a target="_blank" href="http://software.fox21.at/pwait/releases/pwait-1.0.0.zip">pwait-1.0.0.zip</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/pwait-100.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>dlc2txt 1.0.0</title>
		<link>http://fox21.at/dlc2txt-100.html</link>
		<comments>http://fox21.at/dlc2txt-100.html#comments</comments>
		<pubDate>Thu, 09 Apr 2009 17:27:36 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[DLC]]></category>
		<category><![CDATA[JDownloader]]></category>
		<category><![CDATA[One-Click-Hoster]]></category>
		<category><![CDATA[RapidShare]]></category>

		<guid isPermaLink="false">http://fox21.at/?p=889</guid>
		<description><![CDATA[Es gibt kein Problem, das man nicht mit Perl loesen koennte. dlc2txt ist ein Perl Script, mit dem man Dateien, die die Endung .dlc haben, entschluesseln kann. DLC ist ein Containerformat, das von JDownloader verwendet wird. JDownloader ist ein Java-Programm, &#8230; <a href="http://fox21.at/dlc2txt-100.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Es gibt kein Problem, das man nicht mit Perl loesen koennte. <a target="_blank" href="http://software.fox21.at/dlc2txt/releases/dlc2txt-1.0.0.zip" target="_blank">dlc2txt</a> ist ein Perl Script, mit dem man Dateien, die die Endung <strong>.dlc</strong> haben, entschluesseln kann.</p>
<p><span id="more-889"></span></p>
<p>DLC ist ein Containerformat, das von <a target="_blank" href="http://www.jdownloader.org/" target="_blank">JDownloader</a> verwendet wird. JDownloader ist ein Java-Programm, mit dem von <a target="_blank" href="http://www.rapidshare.com" target="_blank">rapidshare.com</a>, <a target="_blank" href="http://www.megaupload.com" target="_blank">megaupload.com</a>, <a target="_blank" href="http://www.uploaded.to" target="_blank">uploaded.to</a> oder anderen bekannten One-Click-Hostern herunter geladen werden kann. Da man <strong>2 private Keys</strong> benoetigt, um .dlc-Files zu entschluesseln, muss ich hier eines klar stellen: <strong>DIESES SCRIPT ENTHAELT KEINE KEYS!</strong> Das heisst es ist <strong>unbrauchbar</strong>, solange man nicht selber 2 Keys besitzt. Falls doch, traegt man diese in den Variablen <strong>$KEYA</strong> und <strong>$KEYB</strong> ein. Es gibt noch eine dritte wichtige Variable bei der ganzen Sache: <strong>$PROGNAME</strong>, ist ein String, der beim Aufruf von <strong>http://service.jdownloader.org/dlcrypt/service.php?destType={$PROGNAME}</strong> benoetigt wird. In dem Fall wird <em>{$PROGNAME}</em> durch den String ersetzt, der in der Variable $PROGNAME steht. Alle Programme (z. B. <a target="_blank" href="http://board.gulli.com/thread/1337027-msd-0655-alpha---rsdf-dlc-ccfycjauto-unpacker/" target="_blank">MSD</a>, <a target="_blank" href="http://board.gulli.com/thread/950280-load-v048---decrypt-rsdf-ccf-neue-hoster-entpackfunktion/" target="_blank">Load!</a>, &#8230;), die DLC Files entschluesseln koennen, verwenden jeweils fuer destType einen eigenen String.</p>
<p>Ich will jetzt nicht genauer auf den Container eingehen, da ich mich leider viel zu wenig mit <a target="_blank" href="http://de.wikipedia.org/wiki/Kryptographie" target="_blank">Kryptographie</a> auskenne. Weitere Infromationen ueber DLC findet man in Eddys Blog (<a target="_blank" href="http://41yd.de/blog/2008/11/15/dlc-geknackt/" target="_blank">http://41yd.de/blog/2008/11/15/dlc-geknackt/</a>). Danke nochmals an dieser Stelle.</p>
<h2><strong>Benoetigte Perl-Module</strong></h2>
<ul>
<li>Cwd</li>
<li>LWP::Simple</li>
<li>MIME::Base64</li>
<li>Crypt::Rijndael</li>
<li>File::Basename</li>
</ul>
<h2><strong>Download</strong></h2>
<ul>
<li><a target="_blank" href="http://github.com/TheFox/dlc2txt" target="_blank">dlc2txt 1.1.0</a></li>
<li><a target="_blank" href="http://software.fox21.at/dlc2txt/releases/dlc2txt-1.0.0.zip" target="_blank"><del datetime="2010-10-02T11:50:31+00:00">dlc2txt-1.0.0.zip</del></a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/dlc2txt-100.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dictionary Crack 1.0.0</title>
		<link>http://fox21.at/dictionary-crack-md5-hash-100.html</link>
		<comments>http://fox21.at/dictionary-crack-md5-hash-100.html#comments</comments>
		<pubDate>Thu, 12 Mar 2009 10:48:53 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Cracker]]></category>
		<category><![CDATA[Hash]]></category>
		<category><![CDATA[MD5]]></category>
		<category><![CDATA[Rainbowcrack]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://fox21.at/?p=865</guid>
		<description><![CDATA[Es gibt kein Problem, das man nicht mit Perl loesen koennte. Mit dem DictionaryCrack koennen MD5-Hashes gecrackt werden. Wie der Name schon sagt, braucht man dazu eine Woerterbuchliste. Unter http://pub.fox21.at/dictionary/ gibt es diese Liste. In dieser Liste steht in jeder &#8230; <a href="http://fox21.at/dictionary-crack-md5-hash-100.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Es gibt kein Problem, das man nicht mit Perl loesen koennte. Mit dem DictionaryCrack koennen MD5-Hashes gecrackt werden. Wie der Name schon sagt, braucht man dazu eine <a target="_blank" href="http://pub.fox21.at/dictionary/" target="_blank">Woerterbuchliste</a>.</p>
<p><span id="more-865"></span></p>
<p>Unter <a target="_blank" href="http://pub.fox21.at/dictionary/" target="_blank">http://pub.fox21.at/dictionary/</a> gibt es diese Liste. In dieser Liste steht in jeder Zeile ein Wort, nachdem gesucht werden soll. <a target="_blank" href="http://crack.bitdelivery.net/" target="_blank">Rainbowcrack</a> ist natuerlich in mancher Hinsicht effezienter. Aber alles hat seine Vor- und Nachteile. Der Nachteil von Rainbowcrack ist, dass er es nur mit einer bestimmten laenge der Woerter aufnehmen kann. Ab 9 Buchstaben dauert die Generierung der Rainbowtables mit einem handelsueblichen PC schon ein paar Jahre. Beim DictionaryCrack koennen die Woerter jedoch beliebig lang sein. Jedoch darf man sich nicht sicher sein, dass ein Wort mit dem DictionaryCrack gefunden wird. Selbst wenn das Wort noch so kurz ist, solange es nicht im Woerterbuch vorkommt, wird es auch nicht gefunden.</p>
<h2><strong>Benoetigte Perl-Module</strong></h2>
<ul>
<li>Digest::MD5</li>
</ul>
<h2><strong>Installation</strong></h2>
<ol>
<li>Herunterladen von <a target="_blank" href="http://software.fox21.at/dictionarycrack/releases/dictionarycrack-1.0.0.zip" target="_blank">dictionarycrack-1.0.0.zip</a> und <a target="_blank" href="http://pub.fox21.at/dictionary/dictionary-001.zip" target="_blank">dictionary-001.zip</a></li>
<li>Entpacken mit <em>unzip &#8220;*.zip&#8221;</em></li>
<li>Rechte setzen mit <em>chmod 755 dictionarycrack.pl install.pl<br />
</em></li>
<li>Ueberpruefen ob alle Perl-Module installiert sind: <em>./install.pl</em></li>
</ol>
<h2><strong>Verwendung</strong></h2>
<p>Das DICTIONARYFILE File muss im gleichen Ordner liegen, wie dictionarycrack.pl.</p>
<pre>./dictionarycrack.pl DICTIONARYFILE HASH...</pre>
<h2><strong>Beispiele fuer die Verwendung</strong></h2>
<p>Im ersten Beispiel wird die Datei dictionary-001.txt als Woerterbuch verwendet.</p>
<pre>./dictionarycrack.pl dictionary-001.txt 5d41402abc4b2a76b9719d911017c592</pre>
<p>Im zweiten Beispiel werden alle Dateien im gleichen Ordner verwendet, deren Namen die Zeichenkette &#8220;.txt&#8221; enthalten.</p>
<pre>./dictionarycrack.pl .txt 5d41402abc4b2a76b9719d911017c592</pre>
<p>Das dritte Beispiel zeigt, dass dem Script auch mehrere Hashes uebergeben werden koennen.</p>
<pre>./dictionarycrack.pl .txt 5d41402abc4b2a76b9719d911017c592 25f9e794323b453885f5181f1b624d0b</pre>
<h2><strong>Download</strong></h2>
<ul>
<li><a target="_blank" href="http://software.fox21.at/dictionarycrack/releases/dictionarycrack-1.0.0.zip" target="_blank">dictionarycrack-1.0.0.zip</a></li>
<li><a target="_blank" href="http://pub.fox21.at/dictionary/dictionary-001.zip" target="_blank">dictionary-001.zip</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/dictionary-crack-md5-hash-100.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>DDL-Warez.org Links 1.1.0</title>
		<link>http://fox21.at/ddl-warezorg-links-110.html</link>
		<comments>http://fox21.at/ddl-warezorg-links-110.html#comments</comments>
		<pubDate>Tue, 17 Feb 2009 20:13:09 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[CAPTCHA]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[DDL-Warez]]></category>
		<category><![CDATA[RapidShare]]></category>

		<guid isPermaLink="false">http://fox21.at/?p=796</guid>
		<description><![CDATA[ddl-warez.org laesst seit neuestem die Captcha Bilder weg. Warum auch immer. Jetzt ist es noch leichter die Links auszulesen. Ich haette an ihrer Stelle die Captcha Bilder gelassen. Aber mir soll&#8217;s recht sein. Ich hab&#8217; natuerlich mein Script angepasst und &#8230; <a href="http://fox21.at/ddl-warezorg-links-110.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a target="_blank" href="http://www.ddl-warez.org/" target="_blank">ddl-warez.org</a> laesst seit neuestem die <a target="_blank" href="http://de.wikipedia.org/wiki/Captcha" target="_blank">Captcha Bilder</a> weg. Warum auch immer. Jetzt ist es noch leichter die Links auszulesen. Ich haette an ihrer Stelle die Captcha Bilder gelassen. Aber mir soll&#8217;s recht sein. Ich hab&#8217; natuerlich mein Script angepasst und die neue Version online gestellt. Naehere Informationen ueber dieses Script im ersten Artikel <a target="_blank" href="/ddl-warezorg-links-100.html" target="_blank">DDL-Warez.org Links 1.0.0</a>.</p>
<p><a target="_blank" href="/ddl-warezorg-links-100.html" target="_blank">Installationsanleitung</a></p>
<h2><strong>Download</strong></h2>
<ul>
<li><a target="_blank" href="/ddl-warezorg-links-100.html" target="_blank">hier</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/ddl-warezorg-links-110.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YouTube Download 1.0.0</title>
		<link>http://fox21.at/youtube-direct-download-100.html</link>
		<comments>http://fox21.at/youtube-direct-download-100.html#comments</comments>
		<pubDate>Sun, 15 Feb 2009 12:17:00 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[chmod]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[flv]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[YouTube]]></category>

		<guid isPermaLink="false">http://cms.fox21.at/nocache/?p=766</guid>
		<description><![CDATA[Es gibt kein Problem, das man nicht mit Perl loesen koennte. Ja, ich weiss: es existieren schon unzaehlige Scripte und Programme im Netz, die genau das Gleiche machen wie meines hier. Aber ich dachte mir, ich koennte selber einmal ein &#8230; <a href="http://fox21.at/youtube-direct-download-100.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Es gibt kein Problem, das man nicht mit Perl loesen koennte. Ja, ich weiss: es existieren schon unzaehlige Scripte und Programme im Netz, die genau das Gleiche machen wie meines hier. Aber ich dachte mir, ich koennte selber einmal ein Script schreiben, dass die Videos direkt von <a target="_blank" href="http://www.youtube.com/" target="_blank">youtube.com</a> herunterladet. So kann man vielleicht die Funktionsweise besser verstehen. Ausserdem ist meines <a target="_blank" href="http://de.wikipedia.org/wiki/Open_source" target="_blank">Open Source</a>.</p>
<p><span id="more-766"></span></p>
<p>Es ist eigentlich ganz einfach. Auf jeder YouTube Seite, z.B. <a target="_blank" href="http://www.youtube.com/watch?v=g4uxIo4t7xM" target="_blank">http://www.youtube.com/watch?v=g4uxIo4t7xM</a>, gibt es im HTML Quellcode ein paar JavaScript Variablen, die Flash fuer sich verwendet. Die gesuchte Variable heisst <strong>swfArgs</strong>.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> swfArgs <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #3366CC;">&quot;q&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;ghostbusters&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;fexp&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;900076&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;vq&quot;</span><span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;sourceid&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;ys&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;video_id&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;g4uxIo4t7xM&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;l&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">297</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;sk&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;-RplWXYJhe-YnAN5S824RPkvqdQKDg-rC&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;fmt_map&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;6/720000/7/0/0,34/0/9/0/115&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;usef&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;t&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;vjVQa1PpcFPDn9RlUJw_zdoFEddjpuNrJr0crbQDefw=&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;hl&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;en&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;plid&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;AARi8t_zDjFbWjDVAAAAoAAICAA&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;cr&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;US&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Darin kommt auch das Argument <em>t</em> vor. In dem Fall waere der Hash <strong>vjVQa1PpcFPDn9RlUJw_zdoFEddjpuNrJr0crbQDefw=</strong>. Dieser Hash aendert sich jedoch immer, wenn man die Seite neu ladet. Mit jedem Hash kann man das original Video nur <strong>einmal</strong> herunterladen. Von folgender URL kann man also dann das gewuenschte Video herunterladen.</p>
<pre>http://www.youtube.com/get_video?video_id={$id}&amp;t={$t}=&amp;el=detailpage&amp;ps=</pre>
<p><strong>{$id}</strong> muss durch die Video ID, die auch schon als <em>v</em> im original Link (http://www.youtube.com/watch?v=<strong>g4uxIo4t7xM</strong>) vorkommt, ersetzt werden. Und <strong>{$t}</strong> durch den Hash, den wir oben im JavaScript gefunden haben.</p>
<p>Das Script macht genau diese Schritte automatisch.</p>
<h2><strong>Benoetigte Perl-Module</strong></h2>
<ul>
<li>LWP::Simple</li>
<li>LWP::UserAgent</li>
<li>HTTP::Request</li>
<li>HTTP::Request::Common</li>
<li>HTTP::Response</li>
<li>File::Basename</li>
</ul>
<h2><strong>Installation</strong></h2>
<ol>
<li>Herunterladen von <a target="_blank" href="http://software.fox21.at/youtube/releases/youtube-1.0.0.zip">youtube-1.0.0.zip</a></li>
<li>Entpacken mit <em>unzip youtube-1.0.0.zip</em></li>
<li>Damit man die Scripte ausfuehren kann, Rechte mit chmod auf 755 stellen: <em>chmod 755 ./youtube.pl ./install.pl</em></li>
<li>Ausfuehren von <em>./install.pl</em> um zu sehen, ob alle benoetigten Perl Module installiert sind.</li>
</ol>
<h2><strong>Verwendung unter Linux</strong></h2>
<pre>./youtube.pl "URL"</pre>
<p>oder</p>
<pre>./youtube.pl "URL" "URL" "URL"</pre>
<h2><strong>Verwendung unter Windows</strong></h2>
<pre>perl youtube.pl "URL"</pre>
<p>oder</p>
<pre>perl youtube.pl "URL" "URL" "URL"</pre>
<p>Der oder die uebergebenen URLs sollten auf jeden Fall unter Hochkomma gestellt werden.  Nachdem man dann eines oder mehrere Videos erfolgreich heruntergeladen hat, wird man feststellen, dass sie die Endung <strong>.flv</strong> haben. Entweder schaut man sich die Videos direkt mit dem <a target="_blank" href="http://www.adobe.com/de/products/flashplayer/" target="_blank">Flashplayer</a> an, oder man nimmt das Programm <a target="_blank" href="http://ffmpeg.org/" target="_blank">ffmpeg</a> zur Hand und wandelt es in <strong>.mpg</strong> um.</p>
<h2><strong>.flv Konvertierung unter Linux mit <a target="_blank" href="http://ffmpeg.org/" target="_blank">ffmpeg</a></strong></h2>
<pre>ffmpeg -i movie.flv movie.mpg</pre>
<h2><strong>Download</strong></h2>
<ul>
<li><a target="_blank" href="http://software.fox21.at/youtube/releases/youtube-1.0.0.zip">youtube-1.0.0.zip</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/youtube-direct-download-100.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>stream2k.com Download Script 1.0.0</title>
		<link>http://fox21.at/stream2kcom-movies2kcom-download-script-100.html</link>
		<comments>http://fox21.at/stream2kcom-movies2kcom-download-script-100.html#comments</comments>
		<pubDate>Tue, 10 Feb 2009 20:23:11 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[flv]]></category>
		<category><![CDATA[movie2k]]></category>
		<category><![CDATA[Stream]]></category>
		<category><![CDATA[stream2k]]></category>

		<guid isPermaLink="false">http://cms.fox21.at/nocache/?p=746</guid>
		<description><![CDATA[Es gibt kein Problem, das man nicht mit Perl loesen koennte. Mit diesem Perl Script kann man die Filme von stream2k.com herunterladen. Man uebergibt einen Link wie z. B. http://www.movie2k.com/movie-38352-His+Name+Was+Jason%3A+30+Years+of+Friday+the+13th.html oder http://www.movie2k.com/movie-38374-96+Hours.html dem Script und es ladet anschliessend alle Filme &#8230; <a href="http://fox21.at/stream2kcom-movies2kcom-download-script-100.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Es gibt kein Problem, das man nicht mit Perl loesen koennte. Mit diesem Perl Script kann man die Filme von <a target="_blank" href="http://www.stream2k.com/" target="_blank">stream2k.com</a> herunterladen.</p>
<p><span id="more-746"></span></p>
<p>Man uebergibt einen Link wie z. B. <a target="_blank" href="http://www.movie2k.com/movie-38352-His+Name+Was+Jason%3A+30+Years+of+Friday+the+13th.html" target="_blank">http://www.movie2k.com/movie-38352-His+Name+Was+Jason%3A+30+Years+of+Friday+the+13th.html</a> oder <a target="_blank" href="http://www.movie2k.com/movie-38374-96+Hours.html" target="_blank">http://www.movie2k.com/movie-38374-96+Hours.html</a> dem Script und es ladet anschliessend alle Filme herunter. Mit ./install.pl kann man nachschauen, ob die noetigen Perl Module installiert sind. Auf <a target="_blank" href="http://www.movie2k.com/" target="_blank">http://www.movie2k.com/</a> muss darauf geachtet werden, dass man beim <strong>Alternativlink</strong> stream2k.com ausgewaehlt hat. Das Script holt sich naemlich die stream2k.com Links aus dem HTML Source Code. Ich weiss auch nicht, wie sich das Script verhaelt, wenn es fuer eine andere Seite als movie2k.com verwendet wird. Es kann unter Umstaenden nicht funktionieren, da es die .flv-Files (Flash Format) speichert. Am Ende hat man dann ein .flv-File.</p>
<h2><strong>Benoetigte Perl-Module</strong></h2>
<ul>
<li>LWP::Simple</li>
<li>LWP::UserAgent</li>
<li>HTTP::Request</li>
<li>HTTP::Request::Common</li>
<li>HTTP::Response</li>
<li>File::Basename</li>
</ul>
<h2><strong>Verwendung</strong></h2>
<p>Linux:</p>
<pre>./stream2k-com.pl "URL"</pre>
<p>Windows:</p>
<pre>perl stream2k-com.pl "URL"</pre>
<p>Es ist auch nicht schlecht, wenn die URLs mit von &#8220;-Zeichen umgeben sind. Wie im obrigen Beispiel. Es koennen auch mehrere URLs uebergeben werden.</p>
<pre>./stream2k-com.pl "URL" "URL"</pre>
<h2><strong>.flv Konvertierung unter Linux mit <a target="_blank" href="http://ffmpeg.org/" target="_blank">ffmpeg</a><br />
</strong></h2>
<pre>ffmpeg -i movie.flv movie.mpg</pre>
<h2><strong>Download</strong></h2>
<ul>
<li><a target="_blank" href="http://software.fox21.at/stream2k/releases/stream2k-1.0.0.zip" target="_blank">stream2k-1.0.0.zip</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/stream2kcom-movies2kcom-download-script-100.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DDL-Warez.org Links 1.0.0</title>
		<link>http://fox21.at/ddl-warezorg-links-100.html</link>
		<comments>http://fox21.at/ddl-warezorg-links-100.html#comments</comments>
		<pubDate>Mon, 02 Feb 2009 18:40:20 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[CAPTCHA]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[chmod]]></category>
		<category><![CDATA[DDL-Warez]]></category>
		<category><![CDATA[RapidShare]]></category>

		<guid isPermaLink="false">http://cms.fox21.at/nocache/?p=714</guid>
		<description><![CDATA[Es gibt kein Problem, das man nicht mit Perl loesen koennte. Dieses Perl Script ist eigentlich genau so wie das SerienJunkies Links Tool. Es kann dazu verwendet werden, um die rapidshare.com Links von ddl-warez.org auszulesen. Man gibt in einem Textfeld &#8230; <a href="http://fox21.at/ddl-warezorg-links-100.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Es gibt kein Problem, das man nicht mit Perl loesen koennte. Dieses Perl Script ist eigentlich genau so wie das <a target="_blank" href="/serienjunkiesorg-links-100.html" target="_blank">SerienJunkies Links Tool</a>. Es kann dazu verwendet werden, um die rapidshare.com Links von ddl-warez.org auszulesen.</p>
<p><span id="more-714"></span></p>
<p>Man gibt in einem Textfeld einen oder mehrere Links wie <a target="_blank" href="http://www.ddl-warez.org/detail.php?id=23430&amp;cat=movies" target="_blank">http://www.ddl-warez.org/detail.php?id=23430&amp;cat=movies</a> und/oder <a target="_blank" href="http://www.ddl-warez.org/detail.php?id=11641&amp;cat=movies" target="_blank">http://www.ddl-warez.org/detail.php?id=11641&amp;cat=movies</a> an, und bekommt dann die direkten RapidShare Links. Die Links muessen mit einem Zeilenumbruch getrennt werden. Also pro Zeile ein Link. Es bleibt einem jedoch nicht erspart, die <a target="_blank" href="http://de.wikipedia.org/wiki/Captcha" target="_blank">Captcha Bilder</a> einzugeben. Aber es ist dennoch eine Hilfe, da nicht alle Links von Hand heraus kopiert werden muessen. Am Ende hat man alle RapidShare Links in einem Textfeld. Es kann vorkommen, dass das Script etwas laenger ladet, da alle Links mit einem POST Request aufgerufen werden, damit die RapidShare Links geparst werden koennen. Bei 36 Parts kann es dann schon einmal vorkommen, dass es laenger braucht.</p>
<h2><strong>Benoetigte Perl-Module</strong></h2>
<ul>
<li>CGI</li>
<li>LWP::Simple</li>
<li>LWP::UserAgent</li>
<li>HTTP::Request</li>
<li>HTTP::Request::Common</li>
<li>HTTP::Response</li>
<li>URI::Escape</li>
</ul>
<h2><strong>Installation</strong></h2>
<ol>
<li>Herunterladen von ddllinks-1.0.0.zip (siehe ganz unten)</li>
<li>Entpacken mit <em>unzip ddllinks-1.0.0.zip</em> (oder unter Windows mit einem anderen Tool)</li>
<li>Rechte setzen: <em>chmod 755 ddllinks.pl install.pl</em></li>
<li>Mit <em>./install.pl</em> kann man ueberpruefen ob die noetigen Module, auf dem Rechner installiert sind. Sind sie nicht installiert, fragt einem das Script, ob man die fehlenden Module nach installieren will. install.pl muss ueber die Konsole ausgefuehrt werden.</li>
<li>Damit ddllinks.pl auch mit den Browser funktioniert, muss das Script eventuell auf ddllinks.cgi umbenannt werden und in einen CGI-Ordner (/cgi-bin/) verschoben werden. Andernfalls eine .htaccess im gleichen Ordner anlegen und <em>Options +ExecCgi</em> hinein schreiben.</li>
<li>Fertig. Jetzt kann mit dem Browser auf die ddllinks.pl zugeriffen werden.</li>
</ol>
<h2><strong>Download</strong></h2>
<ul>
<li><a target="_blank" href="/ddl-warezorg-links-200-flash-captchas.html" target="_blank">neuere Versionen</a></li>
<li><a target="_blank" href="http://software.fox21.at/ddllinks/releases/ddllinks-1.4.0.zip" target="_blank"><del datetime="2009-04-29T20:10:34+00:00">ddllinks-1.4.0.zip</del></a></li>
<li><a target="_blank" href="http://software.fox21.at/ddllinks/releases/ddllinks-1.3.0.zip" target="_blank"><del datetime="2009-04-23T19:13:51+00:00">ddllinks-1.3.0.zip</del></a></li>
<li><a target="_blank" href="http://software.fox21.at/ddllinks/releases/ddllinks-1.2.0.zip" target="_blank"><del datetime="2009-03-10T06:32:46+00:00">ddllinks-1.2.0.zip</del></a></li>
<li><a target="_blank" href="http://software.fox21.at/ddllinks/releases/ddllinks-1.1.0.zip" target="_blank"><del datetime="2009-02-17T00:00:00+00:00">ddllinks-1.1.0.zip</del></a></li>
<li><a target="_blank" href="http://software.fox21.at/ddllinks/releases/ddllinks-1.0.0.zip" target="_blank"><del datetime="2009-02-22T10:02:40+00:00">ddllinks-1.0.0.zip</del></a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/ddl-warezorg-links-100.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SerienJunkies.org Links 1.0.0</title>
		<link>http://fox21.at/serienjunkiesorg-links-100.html</link>
		<comments>http://fox21.at/serienjunkiesorg-links-100.html#comments</comments>
		<pubDate>Sun, 01 Feb 2009 18:06:06 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[CAPTCHA]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[chmod]]></category>
		<category><![CDATA[RapidShare]]></category>
		<category><![CDATA[SerienJunkies]]></category>

		<guid isPermaLink="false">http://cms.fox21.at/nocache/?p=690</guid>
		<description><![CDATA[Es gibt kein Problem, das man nicht mit Perl loesen koennte. Dieses Perl Script kann dazu verwendet werden, um die rapidshare.com Links von serienjunkies.org auszulesen. Man gibt in einem Textfeld einen oder mehrere Links wie http://serienjunkies.org/?cat=43 und/oder http://serienjunkies.org/?p=108 an, und &#8230; <a href="http://fox21.at/serienjunkiesorg-links-100.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Es gibt kein Problem, das man nicht mit Perl loesen koennte. Dieses Perl Script kann dazu verwendet werden, um die rapidshare.com Links von serienjunkies.org auszulesen.</p>
<p><span id="more-690"></span></p>
<p>Man gibt in einem Textfeld einen oder mehrere Links wie <a target="_blank" href="http://serienjunkies.org/?cat=43" target="_blank">http://serienjunkies.org/?cat=43</a> und/oder <a target="_blank" href="http://serienjunkies.org/?p=108" target="_blank">http://serienjunkies.org/?p=108</a> an, und bekommt dann die direkten RapidShare Links. Die Links muessen mit einem Zeilenumbruch getrennt werden. Also pro Zeile ein Link. Es bleibt einem jedoch nicht erspart, die <a target="_blank" href="http://de.wikipedia.org/wiki/Captcha" target="_blank">Captcha Bilder</a> einzugeben. Aber es ist dennoch eine Hilfe, da nicht alle Links von Hand heraus kopiert werden muessen. Zwischen den einelnen Links sollte man jedoch eine gewisse Zeit warten, weil es sonst vorkommen kann, dass serienjunkies.org die eigene IP Adresse sperrt. Am Ende hat man alle RapidShare Links in einem Textfeld. Wenn serienjunkies.org nicht erreichbar ist, braucht das Script lange zum Laden.</p>
<h2><strong>Benoetigte Perl-Module</strong></h2>
<ul>
<li>CGI</li>
<li>LWP::Simple</li>
<li>LWP::UserAgent</li>
<li>HTTP::Request</li>
<li>HTTP::Request::Common</li>
<li>HTTP::Response</li>
</ul>
<h2><strong>Installation</strong></h2>
<ol>
<li>Herunterladen von <a target="_blank" href="http://software.fox21.at/sjlinks/releases/sjlinks-1.0.0.zip" target="_blank">sjlinks-1.0.0.zip</a></li>
<li>Entpacken mit <em>unzip sjlinks-1.0.0.zip</em> (oder unter Windows mit einem anderen Tool)</li>
<li>Rechte setzen: <em>chmod 755 sjlinks.pl install.pl</em></li>
<li>Mit <em>./install.pl</em> kann man ueberpruefen ob die noetigen Module, auf dem Rechner installiert sind. Sind sie nicht installiert, fragt einem das Script, ob man die fehlenden Module nach installieren will. install.pl muss ueber die Konsole ausgefuehrt werden.</li>
<li>Damit sjlinks.pl auch mit den Browser funktioniert, muss das Script eventuell auf sjlinks.cgi umbenannt werden und in einen CGI-Ordner (/cgi-bin/) verschoben werden. Andernfalls eine .htaccess im gleichen Ordner anlegen und <em>Options +ExecCgi</em> hinein schreiben.</li>
<li>Fertig. Jetzt kann mit dem Browser auf die sjlinks.pl zugeriffen werden.</li>
</ol>
<h2><strong>Download</strong></h2>
<ul>
<li><a target="_blank" href="http://software.fox21.at/sjlinks/releases/sjlinks-1.0.0.zip" target="_blank">sjlinks-1.0.0.zip</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/serienjunkiesorg-links-100.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>RapidShare.com Link Check 1.0.0</title>
		<link>http://fox21.at/rapidshare-com-link-check-100.html</link>
		<comments>http://fox21.at/rapidshare-com-link-check-100.html#comments</comments>
		<pubDate>Sat, 31 Jan 2009 18:19:02 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[chmod]]></category>
		<category><![CDATA[GET]]></category>
		<category><![CDATA[HEAD]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[LWP::Simple]]></category>
		<category><![CDATA[One-Click-Hoster]]></category>
		<category><![CDATA[POST]]></category>
		<category><![CDATA[RapidShare]]></category>

		<guid isPermaLink="false">http://cms.fox21.at/nocache/?p=675</guid>
		<description><![CDATA[Es gibt kein Problem, das man nicht mit Perl loesen koennte. Mit diesem Perl Script koennen Links von rapidshare.com auf Verfuegbarkeit ueberprueft werden. Natuerlich kann man das Script auch fuer andere Seiten verwenden. Aber wie funktioniert das Ganze? Das Modul &#8230; <a href="http://fox21.at/rapidshare-com-link-check-100.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Es gibt kein Problem, das man nicht mit Perl loesen koennte. Mit diesem Perl Script koennen Links von rapidshare.com auf Verfuegbarkeit ueberprueft werden. Natuerlich kann man das Script auch fuer andere Seiten verwenden.</p>
<p><span id="more-675"></span></p>
<p>Aber wie funktioniert das Ganze? Das Modul LWP::Simple enthaelt die Funktion head(). Dieser einen URL uebergeben, und sie schickt die HTTP-Request-Methode <strong>HEAD</strong> (Bruder von <strong>GET</strong> und <strong>POST</strong>) an die angegebene URL. Die Funktion bekommt nur den HTTP-Header zurueck, und nicht den eigentlichen Inhalt. Somit kann ganz einfach ueberpruefen werden, ob man die Dateien noch herunterladen kann oder nicht. Sind alle Links OK, wird <em>All: OK</em> angezeigt. Alle Links, die nicht mehr gueltig sind, werden als <em>FAILT</em> angezeigt. Das Script ist extra fuer rapidshare.com ausgelegt. Zwar koennen auch andere Links eingegeben werden, aber dann koennte das Ergebnis nicht stimmen. Ist die <em>content-length</em> vom HTTP-Header kleiner als 10000 Byte, wird der Link als ungueltig angezeigt. Dieses Limit kann natuerlich beliebig angepasst werden. Zum Beispiel wird bei einem Link <em>FAILT</em> angezeigt, der auf eine Seite zeigt, die weniger als 10000 Bytes beinhaltet. Da aber die meisten RapidShare-File 100 MB haben, kann man damit genau feststellen, ob Dateien noch gueltig sind. Es darf nur ein Link pro Zeile angegeben werden.</p>
<h2><strong>Benoetigte Perl-Module</strong></h2>
<ul>
<li>CGI</li>
<li>LWP::Simple</li>
</ul>
<h2><strong>Installation</strong></h2>
<ol>
<li>Herunterladen von <a target="_blank" href="http://software.fox21.at/rscheck/releases/rscheck-1.0.0.zip" target="_blank">rscheck-1.0.0.zip</a></li>
<li>Entpacken mit <em>unzip rscheck-1.0.0.zip</em></li>
<li>Rechte setzen, damit der HTTP-Prozess dieses Script ausfuehren kann: <em>chmod 755 install.pl rscheck.pl</em></li>
<li>Mit <em>./install.pl</em> kann man ueberpruefen ob die noetigen Module, in dem Fall CGI und LWP::Simple, auf dem Rechner installiert sind. Sind sie <strong>nicht</strong> installiert, fragt einem das Script, ob man die fehlenden Module nach installieren will. install.pl muss ueber die Konsole ausgefuehrt werden.</li>
<li>Damit rscheck.pl auch mit den Browser funktioniert, muss das Script eventuell auf rscheck.cgi umbenannt werden und in einen CGI-Ordner (/cgi-bin/) verschoben werden. Andernfalls eine .htaccess im gleichen Ordner anlegen und <em>Options +ExecCgi</em> hinein schreiben.</li>
<li>Fertig. Jetzt kann mit dem Browser auf die rscheck.pl zugeriffen werden.</li>
</ol>
<h2><strong>Download</strong></h2>
<ul>
<li><a target="_blank" href="http://software.fox21.at/rscheck/releases/rscheck-1.0.0.zip" target="_blank">rscheck-1.0.0.zip</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/rapidshare-com-link-check-100.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Windows Hintergrundprozess mit Perl</title>
		<link>http://fox21.at/windows-hintergrundprozess-mit-perl.html</link>
		<comments>http://fox21.at/windows-hintergrundprozess-mit-perl.html#comments</comments>
		<pubDate>Fri, 30 Jan 2009 12:17:51 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[ActivePerl]]></category>
		<category><![CDATA[Daemon::Easy]]></category>
		<category><![CDATA[ERROR]]></category>
		<category><![CDATA[POSIX]]></category>
		<category><![CDATA[Proc::Background]]></category>
		<category><![CDATA[Prozess]]></category>
		<category><![CDATA[Visual Basic]]></category>
		<category><![CDATA[Win32::Console]]></category>
		<category><![CDATA[Win32::Process]]></category>
		<category><![CDATA[Working::Daemon]]></category>

		<guid isPermaLink="false">http://cms.fox21.at/nocache/?p=605</guid>
		<description><![CDATA[Ein Perl-Script unter Windows im Hintergrund rennen zu lassen waere schon etwas feines, dachte ich mir. Aber Windoof laesst keine Hintergrundprozesse zu, wird das jeweilige Programm (in dem Fall perl.exe) von der Commandline ausgefuehrt. Ich hab&#8217;s mit allen moeglichen Tricks &#8230; <a href="http://fox21.at/windows-hintergrundprozess-mit-perl.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ein Perl-Script unter Windows im Hintergrund rennen zu lassen waere schon etwas feines, dachte ich mir. Aber Win<strong>doof</strong> laesst keine Hintergrundprozesse zu, wird das jeweilige Programm (in dem Fall perl.exe) von der Commandline ausgefuehrt.</p>
<p><span id="more-605"></span></p>
<p>Ich hab&#8217;s mit allen moeglichen Tricks probiert. STDIN, STDOUT und STDERR nach nul (unter Windows nur mit einem L) umleiten, <em>fork()</em>, von einem anderen Script aus mit <em>open</em> eine Pipe oeffnen, mit <em>cmd.exe /C</em> und mit <em>start /B</em>. Und auch all&#8217; diese verschiedenen Moeglichkeiten kombiniert. Aber nichts funktioniert. Ich kann mich an <strong>Visual Basic</strong> erinnern. Sogar <strong>das</strong> kann Prozesse komplett im Hintergrund starten. Aber es liegt nicht an Perl, dass die Windows Commandline so <span style="text-decoration: line-through;">beschissen</span> ist. Das zeigt, dass die Linux Shell sehr maechtig ist. Wofuer gibt es dann unter Windows eigentlich cmd.exe, wenn sie nichts kann? Das ist wie der Blinddarm im menschlichen Koerper. Es muss doch eine Moeglichkeit geben, um ganz einfach einen Prozess im Hintergrund rennen zu lassen. Ich will nicht extra Module installieren muessen, nur um dieses Problem zu loesen. Selber schuld, wieso verwend&#8217; ich auch Windows?</p>
<p>Schliesslich blieb mir doch nichts anderes ueber, als ein vorhandenes Perl-Modul fuer diesen Job zu installieren. Jedoch bevor ich ein passendes Modul gefunden hatte, probierte ich folgende Module aus: <a target="_blank" href="http://search.cpan.org/perldoc?Daemon::Easy" target="_blank">Daemon::Easy</a>, <a target="_blank" href="http://search.cpan.org/perldoc?Working::Daemon" target="_blank">Working::Daemon</a>, <a target="_blank" href="http://search.cpan.org/perldoc?Win32::Console" target="_blank">Win32::Console</a> und <a target="_blank" href="http://search.cpan.org/perldoc?Proc::Background" target="_blank">Proc::Background</a>. Alle haben eines gemeinsam: <a target="_blank" href="http://search.cpan.org/perldoc?POSIX" target="_blank">POSIX::setsid()</a>. <em>ERROR: POSIX::setsid not implemented on this architecture</em>. Will man setsid() unter Windows XP verwenden, wird diese Fehlermeldung angezeigt. <a target="_blank" href="http://search.cpan.org/perldoc?Win32::Process" target="_blank">Win32::Process</a> war dann schliesslich des Raetels Loesung. Die anderen Module starten zwar auch einen Prozess im Hintergrund, aber sobald cmd.exe beendet wird, werden auch alle anderen Prozesse beendet, die ueber diese Console gestartet worden sind. Win32::Process startet naemlich einen richtigen Hintergrundprozess, vorausgesetzt das cFlag ist DETACHED_PROCESS.</p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">use</span> Win32<span style="color: #339933;">::</span><span style="color: #006600;">Process</span><span style="color: #339933;">;</span>
Win32<span style="color: #339933;">::</span><span style="color: #006600;">Process</span><span style="color: #339933;">::</span><span style="color: #006600;">Create</span><span style="color: #009900;">&#40;</span>
	<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$proc</span><span style="color: #339933;">,</span>
	<span style="color: #0000ff;">$^X</span><span style="color: #339933;">,</span>
	<span style="color: #ff0000;">'perl run.pl'</span><span style="color: #339933;">,</span>
	<span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span>
	DETACHED_PROCESS<span style="color: #339933;">,</span>
	<span style="color: #ff0000;">'.'</span>
<span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;Win32::Process::Create failed<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span></pre></div></div>

<h2><strong>Benoetigte Perl-Module</strong></h2>
<ul>
<li>File::Basename</li>
<li>Win32::Process</li>
</ul>
<h2><strong>Download</strong></h2>
<ul>
<li> <a target="_blank" href="http://software.fox21.at/windaemon/releases/windaemon-1.1.0.zip">windaemon-1.1.0.zip</a></li>
<li><del datetime="2009-03-24T19:44:14+00:00"><a target="_blank" href="http://software.fox21.at/windaemon/releases/windaemon-1.0.0.zip">windaemon-1.0.0.zip</a></del></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/windows-hintergrundprozess-mit-perl.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TCP/UDP Pipe 1.0.0</title>
		<link>http://fox21.at/tcp-udp-pipe-bridge-proxy-100.html</link>
		<comments>http://fox21.at/tcp-udp-pipe-bridge-proxy-100.html#comments</comments>
		<pubDate>Sat, 17 Jan 2009 21:21:35 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[ActivePerl]]></category>
		<category><![CDATA[Bridge]]></category>
		<category><![CDATA[Client]]></category>
		<category><![CDATA[IO::Select]]></category>
		<category><![CDATA[IO::Socket::INET]]></category>
		<category><![CDATA[IP]]></category>
		<category><![CDATA[Netcat]]></category>
		<category><![CDATA[Pipe]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[TCP]]></category>
		<category><![CDATA[UDP]]></category>

		<guid isPermaLink="false">http://fox21.at/?p=370</guid>
		<description><![CDATA[Es gibt kein Problem, das man nicht mit Perl loesen koennte. TCP/UDP Pipe ist ein Perl Script, dass zwischen einem Server und einem Clienten eine Verbindung herstellt. Aehnlich wie bei Netcat, einem Proxy oder einem TCP-Tunnel. Man kann damit nicht &#8230; <a href="http://fox21.at/tcp-udp-pipe-bridge-proxy-100.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Es gibt kein Problem, das man nicht mit Perl loesen koennte. TCP/UDP Pipe ist ein Perl Script, dass zwischen einem Server und einem Clienten eine Verbindung herstellt. Aehnlich wie bei <a target="_blank" href="http://netcat.sourceforge.net/" target="_blank">Netcat</a>, einem Proxy oder einem TCP-Tunnel. Man kann damit nicht nur eine TCP zu TCP und UDP zu UDP Verbindung betreiben, sondern auch UDP zu TCP und TCP zu UDP.</p>
<p><span id="more-370"></span></p>
<p>Wobei UDP zu TCP und TCP zu UDP nicht so reibungslos funktioniert wie zwei Verbindungen der gleichen Art. Natuerlich koennen auch mehrere Verbindungen gleichzeitig mit ein und dem selben Server hergestellt werden. Wenn sich ein neuer Client verbindet, wird dafuer ein eigener <a target="_blank" href="http://search.cpan.org/perldoc?IO::Socket::INET" target="_blank">Socket</a> erstellt. In der <strong>tcppipe.conf</strong> Datei, die auch in der zip-Datei enthalten ist, befindet sich ein Beispiel zum Testen. Wenn man die conf-Datei unveraendert laesst und tcppipe.pl startet, wird am lokalen Computer ein TCP Server auf Port <strong>2102</strong> erstellt. Wenn man dann mit dem Browser auf <a target="_blank" href="http://localhost:2102/" target="_blank">http://localhost:2102/</a> schaut, wird man feststellen, dass <a target="_blank" href="http://fox21.at/" target="_blank">meine Seite</a> erscheint. Die Anfragen an <strong>localhost:2102</strong> werden also auf <strong>fox21.at:80</strong> weitergeleitet. Die Konfigurationsdatei (tcppipe.conf) kann man natuerlich beliebig anpassen. Wenn <em>localhost</em> (= 127.0.0.1, <a target="_blank" href="http://de.wikipedia.org/wiki/Loopback" target="_blank">Loopback</a>) fuer den lokalen Server verwendet wird, dann kann man nur vom selben Computer darauf zugreifen. Nicht aber von einem Anderen. Wenn von jedem Computer im Netzwerk darauf zugegriffen werden darf, muss man fuer die lokale <a target="_blank" href="http://de.wikipedia.org/wiki/Internet_Protocol" target="_blank">IP-Adresse</a> z.B. <em>192.168.241.21</em> verwenden. Kommt darauf an, welche IP-Adresse der Computer im Netzwerk hat. Verwendet man <em>0.0.0.0</em> als lokale IP-Adresse fuer den Server, so wird auf allen Interfaces gelauscht (<em>LISTEN</em>). Dieses Script funktioniert auch mit ActivePerl. Es benoetigt die Module <a target="_blank" href="http://search.cpan.org/perldoc?IO::Select" target="_blank">IO::Select</a>, <a target="_blank" href="http://search.cpan.org/perldoc?IO::Socket::INET" target="_blank">IO::Socket::INET</a> und <a target="_blank" href="http://search.cpan.org/perldoc?Time::HiRes" target="_blank">Time::HiRes</a>.</p>
<h2><strong>Benoetigte Perl-Module</strong></h2>
<ul>
<li>IO::Select</li>
<li>IO::Socket::INET</li>
<li>Time::HiRes</li>
</ul>
<h2><strong>Konfiguration</strong></h2>
<ul>
<li>Jeder <em>server</em>-Block muss einen <em>client</em>-Block enthalten.</li>
<li>Die <em>ip</em>, egal ob im server- oder im client-Block muss folgendes Format haben: <strong>host:port</strong></li>
</ul>
<h2><strong>Flags</strong></h2>
<p>Hier ist eine Liste mit den Bedeutungen des <em>flags</em>-Feldes, das in jedem <em>server</em>- und <em>client</em>-Block vorkommen sollte:</p>
<ul>
<li><em>a</em> = active: Wenn kein <em>a</em> vorkommt, wird der Server nicht erstellt. Damit kann man ganz einfach den Server ein- und ausschalten. Natuerlich wird dann auch kein Client erstellt. Was das <em>a</em> im Client-Block ueberfluessig macht.</li>
<li><em>t</em> oder <em>u</em>: TCP oder UDP. Das <em>t</em> steht fuer <strong>T</strong>CP und das <em>u</em> fuer <strong>U</strong>DP. Schreibt man beides in das gleiche flags-Feld, so wird TCP verwendet.</li>
<li><em>s</em>, <em>c</em> oder <em>l</em> = server, client und lokal client: Jeder Server hat intern eine s-Flag und jeder Client ein c-Flag. Cienten, die zum lokalen Server verbunden sind, haben ein l-Flag (kleines L). Diese 3 Flags sind jedoch fuer die Konfigurationsdatei unwichtig, da sie nur intern in der Funktion <em>parseConfig</em> vergeben werden. Und natuerlich auch, wenn ein neuer Socket erstellt wird.</li>
</ul>
<h2><strong>Download</strong></h2>
<ul>
<li><a target="_blank" href="http://software.fox21.at/tcppipe/releases/tcppipe-1.0.0.zip">tcppipe-1.0.0.zip</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/tcp-udp-pipe-bridge-proxy-100.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MySQL Backup 1.0.0</title>
		<link>http://fox21.at/mysql-backup-100.html</link>
		<comments>http://fox21.at/mysql-backup-100.html#comments</comments>
		<pubDate>Sun, 21 Dec 2008 19:02:36 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[chmod]]></category>
		<category><![CDATA[Crontab]]></category>
		<category><![CDATA[Dump]]></category>
		<category><![CDATA[Export]]></category>
		<category><![CDATA[GZip]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySQLDump]]></category>
		<category><![CDATA[RAR]]></category>
		<category><![CDATA[TAR]]></category>

		<guid isPermaLink="false">http://fox21.at/?p=234</guid>
		<description><![CDATA[Es gibt kein Problem, das man nicht mit Perl loesen koennte. Ich hab mir heute ein Script geschrieben, das von allen MySQL-Datenbanken einen Dump (Export) macht und die ausgegebene Datei dann anschliessend in RAR oder TAR/GZip packt. Benoetigte Perl-Module DBI &#8230; <a href="http://fox21.at/mysql-backup-100.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Es gibt kein Problem, das man nicht mit Perl loesen koennte. Ich hab mir heute ein Script geschrieben, das von allen <a target="_blank" href="http://www.mysql.com/" target="_blank">MySQL</a>-Datenbanken einen Dump (Export) macht und die ausgegebene Datei dann anschliessend in <a target="_blank" href="http://www.rarlab.com/" target="_blank">RAR</a> oder <a target="_blank" href="http://www.gnu.org/software/tar/" target="_blank">TAR</a>/<a target="_blank" href="http://www.gzip.org/" target="_blank">GZip</a> packt.<strong></strong></p>
<p><span id="more-234"></span></p>
<h2><strong>Benoetigte Perl-Module</strong></h2>
<ul>
<li>DBI</li>
</ul>
<h2><strong>Installation</strong></h2>
<ol>
<li>Mit User <strong>root</strong> einloggen (optional)</li>
<li><a target="_blank" href="http://software.fox21.at/mkbakmysql/releases/mkbak.mysql-1.0.0.zip">Herunterladen des Scripts</a></li>
<li>Entpacken mit <em>unzip mkbak.mysql-1.0.0.zip</em></li>
<li>Rechte aendern, damit niemand anders das Script ausfuehren und lesen kann: <em>chmod 700 mkbak.mysql.pl</em></li>
<li><strong>Configuration</strong>: Nach dem Kommantar <em># CONFIG START</em> gibt es ein paar Einstellungen, die man aendern sollte. Die Variable <strong>$DBUSER</strong> sollte man auf <em>root</em> lassen, damit alle Datenbanken exportiert werden.  Die Variable <strong>$DBPASS</strong> muss das MySQL-Root-Passwort enthalten. Und die 3. Variable, die man aendern sollte, ist <strong>$BAKDIR</strong>. Dort hinein werden dann die Backup-Files gespeichert. Als Standard ist jetzt <strong>~/mysql_backup</strong> eingestellt. Diesen Ordner sollte man auch auf <em>chmod 700</em> setzen, damit niemand anders auf die MySQL-Files zugreiffen kann. Wenn man RAR installiert hat, kann man noch optional die Variable <strong>$RAR</strong> setzten. Sollte sich das Tar-Programm nicht unter <strong>/bin/tar</strong> befinden, so kann man es auch aendern. Genau so auch mit GZip (<strong>$GZIP</strong>).</li>
<li>Wenn man sich bei Schritt 1 nicht mit <strong>root</strong> eingeloggt hat, muss man die Datei <strong>/var/log/mkbak.mysql.log</strong> haendisch mit dem User root erstellen und die Rechte richtig setzen. Oder man aendert den Logfile-Pfad auf einen Eigenen. Z.B. auf <em>./mkbak.mysql.log</em></li>
<li>Jetzt kann man den ersten Test machen: <em>./mkbak.mysql.pl</em></li>
<li>Danach schaut man sich das Logfile (/var/log/mkbak.mysql.log) an, ob irgendwelche Fehler aufgetretten sind.</li>
<li>Optional kann man folgende Zeile zu den Cronjobs hinzufuegen, damit jeden Tag um 00:00 Uhr das Script ausgefuehrt wird: <em>0 0 * * * /path/to/the/mkbak.mysql.pl</em></li>
</ol>
<h2><strong>Download</strong></h2>
<ul>
<li><a target="_blank" href="http://software.fox21.at/mkbakmysql/releases/mkbak.mysql-1.0.0.zip">mkbak.mysql-1.0.0.zip</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/mysql-backup-100.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mandelbrotbaeume</title>
		<link>http://fox21.at/mandelbrotbaeume.html</link>
		<comments>http://fox21.at/mandelbrotbaeume.html#comments</comments>
		<pubDate>Tue, 02 Dec 2008 13:37:11 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Bild]]></category>
		<category><![CDATA[Image::Imlib2]]></category>
		<category><![CDATA[Mandelbrot]]></category>
		<category><![CDATA[Spiel des Lebens]]></category>

		<guid isPermaLink="false">http://fox21.at/?p=100</guid>
		<description><![CDATA[Ich hab mir ein Perl-Script geschrieben, dass Mandelbrotbaeume berechnet und als Grafik (Bild rechts) darstellt. Mit der Mandelbrotfunktion lassen sich coole Bilder erzeugen. Das erinnert mich auch irgendwie an Das Spiel des Lebens. Mit dem hab ich mich auch einmal &#8230; <a href="http://fox21.at/mandelbrotbaeume.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a target="_blank" href="http://img.fox21.at/mandelbrot/mandelbrot_6144x4608_blue_depth255.png" target="_blank"><img class="alignright" title="Mandelbrot 320x240" src="http://img.fox21.at/mandelbrot/mandelbrot_320x240_blue_depth25.png" alt="" width="256" height="192" /></a>Ich hab mir ein <a target="_blank" href="http://software.fox21.at/mandelbrot/releases/mandelbrot.zip">Perl-Script</a> geschrieben, dass <a target="_blank" href="http://de.wikipedia.org/wiki/Mandelbrotmenge" target="_blank">Mandelbrotbaeume</a> berechnet und als Grafik (Bild rechts) darstellt. Mit der Mandelbrotfunktion lassen sich coole Bilder erzeugen. Das erinnert mich auch irgendwie an <a target="_blank" href="http://de.wikipedia.org/wiki/Conways_Spiel_des_Lebens" target="_blank">Das Spiel des Lebens</a>. Mit dem hab ich mich auch einmal eine Zeit lang beschaeftigt. Aber nie so wirklich selber ein Script geschrieben, dass das ausrechnet. Die Mandelbrotbaeume sind ziemlich komplex. Das faszinierende daran ist, dass sich die Aufloesung eines solchen Bildes ins Unendliche fortsetzen laesst. Das heisst, man kann das Bild vergroessern und vergroessern und immer wieder weiter vergroessern und man sieht jedes Mal eine andere Form. Ja, hat viel mit Mathematik zutun. Ich bin auch gerade dabei, ein Bild zu rendern, das 4096 x 3072 Pixel gross ist. Das hat dann ca. 50 MB. Aber das wird warscheinlich noch ein paar Tage brauchen, bis es fertig ist. Also was man mit einem <a target="_blank" href="/redsun-server.html">Server</a>, Perl und ein bisschen Zeit alles machen kann&#8230;</p>
<h2>Benoetigte Perl-Module</h2>
<ul>
<li><a target="_blank" href="http://search.cpan.org/dist/Image-Imlib2/" target="_blank">Image::Imlib2</a></li>
</ul>
<h2><strong>Download</strong></h2>
<ul>
<li><a target="_blank" href="http://software.fox21.at/mandelbrot/releases/mandelbrot.zip">mandelbrot.zip</a><a href="http://cms.fox21.at/wp-content/uploads/2008/12/mandelbrot.zip"> </a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/mandelbrotbaeume.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

