<?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>AB-WebLog.com</title>
	<atom:link href="http://www.ab-weblog.com/de/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ab-weblog.com/de</link>
	<description>Andreas Breitschopp</description>
	<lastBuildDate>Wed, 09 May 2012 09:27:14 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Spartakiade-Konferenz in Berlin</title>
		<link>http://www.ab-weblog.com/de/spartakiade-konferenz-in-berlin/</link>
		<comments>http://www.ab-weblog.com/de/spartakiade-konferenz-in-berlin/#comments</comments>
		<pubDate>Wed, 09 May 2012 09:23:29 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Intel AppUp]]></category>
		<category><![CDATA[AppUp]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Intel]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Vortrag]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/de/?p=490</guid>
		<description><![CDATA[Ich wurde eingeladen bei der Spartakiade-Konferenz in Berlin als Trainer teilzunehmen. Dort werde ich eine Session über &#8220;Intel AppUp &#8211; Deine HTML5-/.NET-App im App-Store&#8221; anbieten: Möchte man als Entwickler sein Produkt an die Frau oder den Mann bringen, so ist &#8230; <a href="http://www.ab-weblog.com/de/spartakiade-konferenz-in-berlin/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ich wurde eingeladen bei der <a title="Webseite der Spartakiade-Konferenz" href="http://spartakiade.org/2012/MainPage.ashx" target="_blank">Spartakiade-Konferenz</a> in Berlin als Trainer teilzunehmen.</p>
<p>Dort werde ich eine Session über &#8220;Intel AppUp &#8211; Deine HTML5-/.NET-App im App-Store&#8221; anbieten:</p>
<blockquote><p>Möchte man als Entwickler sein Produkt an die Frau oder den Mann bringen, so ist jeder neue Vertriebsweg willkommen. Einer davon ist der von Intel betriebene App-Store AppUp, der auf vielen heute verkauften Notebooks (z. B. von notebooksbilliger.de) bereits vorinstalliert ist. In dieser Session zeigt Andreas Breitschopp wie eine vorhandene HTML5- oder .NET-App fit für AppUp gemacht wird. Gerne dürfen die Teilnehmer auch eigene Produkte mitbringen, die dann gemeinsam zur Veröffentlichung auf AppUp vorbereitet werden.</p></blockquote>
<p>Natürlich gibt es bei der Konferenz auch andere interessante Themen und die Teilnahme ist kostenlos.</p>
<p><em>Daher würde ich mich freuen auch Sie dort zu treffen!</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/de/spartakiade-konferenz-in-berlin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows 8 App Excellence Lab</title>
		<link>http://www.ab-weblog.com/de/windows-8-app-excellence-lab/</link>
		<comments>http://www.ab-weblog.com/de/windows-8-app-excellence-lab/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 13:28:58 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Metro]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Veranstaltung]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/de/?p=487</guid>
		<description><![CDATA[Heute habe ich an einem Windows 8 App Excellence Lab bei Microsoft in Unterschleißheim nähe München teilgenommen. Es war sehr interessant mit einem Microsoft-Entwickler über die Anforderungen zu sprechen, die von einer Metry-Style-App für den Windows-8-App-Store erfüllt sein müssen. Es &#8230; <a href="http://www.ab-weblog.com/de/windows-8-app-excellence-lab/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Heute habe ich an einem Windows 8 App Excellence Lab bei Microsoft in Unterschleißheim nähe München teilgenommen.</p>
<p>Es war sehr interessant mit einem Microsoft-Entwickler über die Anforderungen zu sprechen, die von einer Metry-Style-App für den Windows-8-App-Store erfüllt sein müssen. Es gibt sehr hohe Standards, insbesondere hinsichtlich des Look &amp; Feels der Anwendung.</p>
<p>Zur Zeit möchte ich besonders einen HTML5-basierte Vokabeltrainer fit für Windows 8 machen. Als Ergebnis dieses App Excellence Lab habe ich ein Token erhalten, welches ich für die Registrierung im Windows-8-App-Store vor der offiziellen Start verwenden kann. Zudem ist mit dem Token die Registrierung für zwei Jahre kostenlos.</p>
<p><em>Haben Sie auch an einem Windows 8 App Excellence Lab teilgenommen?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/de/windows-8-app-excellence-lab/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Teilnahme am Windows 8 Camp</title>
		<link>http://www.ab-weblog.com/de/teilnahme-am-windows-8-camp/</link>
		<comments>http://www.ab-weblog.com/de/teilnahme-am-windows-8-camp/#comments</comments>
		<pubDate>Thu, 05 Apr 2012 19:04:43 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Metro]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Veranstaltung]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/de/?p=480</guid>
		<description><![CDATA[Heute habe ich am Windows 8 Camp in der deutschen Microsoft-Zentrale in Unterschleißheim bei München teilgenommen. Der Vortragende erklärte einige Details zum neuen Betriebssystem und insbesondere zu den neuen Metro-Apps aus Entwicklersicht. Obwohl es schon interessant war, hatte ich etwas &#8230; <a href="http://www.ab-weblog.com/de/teilnahme-am-windows-8-camp/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Heute habe ich am Windows 8 Camp in der deutschen Microsoft-Zentrale in Unterschleißheim bei München teilgenommen.</p>
<p>Der Vortragende erklärte einige Details zum neuen Betriebssystem und insbesondere zu den neuen Metro-Apps aus Entwicklersicht. Obwohl es schon interessant war, hatte ich etwas mehr neue Informationen in so einem Seminar erwartet.</p>
<p>Aber es hat mich gefreut einige Bekannte wieder zu treffen und das Essen war auch gut. <img src='http://www.ab-weblog.com/de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><em>Waren Sie auch bei dieser Veranstaltung?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/de/teilnahme-am-windows-8-camp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MunichJS: Vortrag über Internationalisierung von HTML5-Apps und Verwendung des Encapsulators</title>
		<link>http://www.ab-weblog.com/de/munichjs-vortrag-ueber-internationalisierung-von-html5-apps-und-verwendung-des-encapsulators/</link>
		<comments>http://www.ab-weblog.com/de/munichjs-vortrag-ueber-internationalisierung-von-html5-apps-und-verwendung-des-encapsulators/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 21:00:32 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[AppUp]]></category>
		<category><![CDATA[Encapsulator]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Intel]]></category>
		<category><![CDATA[Internationalisierung]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Lokalisierung]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Vortrag]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/de/?p=469</guid>
		<description><![CDATA[Heute fand ein JavaScript-Meetup von MunichJS (English) in Feldkirchen bei München statt. MunichJS ist eine Usergroup in München von Entwicklern, die sich monatlich treffen, um Themen wie JavaScript und ECMAScript zu diskutieren. Ich war eingeladen dort einen Vortrag über das &#8230; <a href="http://www.ab-weblog.com/de/munichjs-vortrag-ueber-internationalisierung-von-html5-apps-und-verwendung-des-encapsulators/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Heute fand ein JavaScript-Meetup von <a title="Webseite von MunichJS" href="http://www.munichjs.org" target="_blank">MunichJS</a> (English) in Feldkirchen bei München statt. MunichJS ist eine Usergroup in München von Entwicklern, die sich monatlich treffen, um Themen wie JavaScript und ECMAScript zu diskutieren.</p>
<p>Ich war eingeladen dort einen Vortrag über das Thema &#8220;Ausführen einer internationalisierten HTML5-App als natives Windows-Programm&#8221; zu halten.</p>
<p><a href="http://www.ab-weblog.com/de/files/munichjs-vortrag-ueber-internationalisierung-von-html5-apps-und-verwendung-des-encapsulators.png"><img class="aligncenter size-medium wp-image-477" title="MunichJS: Vortrag über Internationalisierung von HTML5-Apps und Verwendung des Encapsulators" src="http://www.ab-weblog.com/de/files/munichjs-vortrag-ueber-internationalisierung-von-html5-apps-und-verwendung-des-encapsulators-300x179.png" alt="MunichJS: Vortrag über Internationalisierung von HTML5-Apps und Verwendung des Encapsulators" width="300" height="179" /></a></p>
<p>Im ersten Teil des Vortrages zeigte ich eine HTML5-App, die eine JavaScript-Bibliothek nutzt, um einfach sämtliche Zeichenketten im HTML- und JavaScript-Teil der Anwendung zu lokalisieren. Am Ende des Vortrages verwendete ich den Intel AppUp Encapsulator zur Generierung einer MSI-Datei für diese App. Damit lief die Anwendung native auf einem Windows-Betriebssystem. <a title="MunichJS: Internationalisierung von HTML5-Apps und Verwendung des Encapsulators (Präsentation)" href="http://www.ab-weblog.com/de/files/munichjs-internationalisierung-von-html5-apps-und-verwendung-des-encapsulators-praesentation.pdf" target="_blank">Downloaden Sie die PowerPoint-Präsentation (Englisch)</a>.</p>
<p>Das in der Präsentation verwendete Beispielprojekt kann in meinem Artikel <a title="Internationalisierung: Wie lokalisiert man HTML5-Projekte?" href="http://www.ab-weblog.com/de/internationalisierung-wie-lokalisiert-man-html5-projekte/">Internationalisierung: Wie lokalisiert man HTML5-Projekte?</a> herunter geladen werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/de/munichjs-vortrag-ueber-internationalisierung-von-html5-apps-und-verwendung-des-encapsulators/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Telefonie-Ereignisbenachrichtigungen von Polycom-Telefonen mittels PHP</title>
		<link>http://www.ab-weblog.com/de/telefonie-ereignisbenachrichtigungen-von-polycom-telefonen-mittels-php/</link>
		<comments>http://www.ab-weblog.com/de/telefonie-ereignisbenachrichtigungen-von-polycom-telefonen-mittels-php/#comments</comments>
		<pubDate>Thu, 01 Mar 2012 09:51:10 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Polycom]]></category>
		<category><![CDATA[POST-Rohdaten]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Telefonie]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/de/?p=463</guid>
		<description><![CDATA[Alle aktuellen Polycom-Telefone wie die Polycom SoundPoint IP, die Polycom VVX 500/1500 oder die Polycom SpectraLink Serie unterstützen eine Ereignisbenachrichtigung. Dies ist ein hervorragendes Feature, bei welchem das Telefon eine POST-Anfrage an eine vorher definierte URL für verschiedene Telefonie-Ereignisse sendet. Bei &#8230; <a href="http://www.ab-weblog.com/de/telefonie-ereignisbenachrichtigungen-von-polycom-telefonen-mittels-php/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Alle aktuellen Polycom-Telefone wie die Polycom SoundPoint IP, die Polycom VVX 500/1500 oder die Polycom SpectraLink Serie unterstützen eine Ereignisbenachrichtigung. Dies ist ein hervorragendes Feature, bei welchem das Telefon eine POST-Anfrage an eine vorher definierte URL für verschiedene Telefonie-Ereignisse sendet.</p>
<p>Bei der Entwicklung einer PHP-Server-Anwendung, die einige dieser Ereignisse behandelt sollte, stieß ich auf das Problem, dass in dem PHP-Datenfeld <code class="brush: php; gutter: false">$_POST</code> keine Daten enthalten waren, obwohl das Skript vom Polycom-Telefon korrekt aufgerufen wurde.</p>
<p>Nach einigen Nachforschungen fand ich heraus, dass die Daten (aus welchem Grund auch immer) nicht als &#8220;normales&#8221; POST-Key-Value-Paar, sondern also POST-Rohdaten gesendet werden. Somit kann PHP die POST-Rohdaten natürlich auch nicht in das Datenfeld <code class="brush: php; gutter: false">$_POST</code> schreiben.</p>
<p>Hier ist eine Möglichkeit wie man die POST-Rohdaten dennoch erhalten kann:</p>
<pre class="brush: php; gutter: true">// Sicherstellen, dass wirklich POST-Rohdaten verfügbar sind
if ($_SERVER[&#039;REQUEST_METHOD&#039;] === &#039;POST&#039;) {
	// Nun können wir die POST-Rohdaten von der PHP-Standardeingabe lesen
	$rawPostData = trim(file_get_contents(&#039;php://input&#039;));
}</pre>
<p>Als Ergebnis erhalten Sie die XML-Daten, die von dem Polycom-Telefon gesendet wurden, in der Variable <code class="brush: php; gutter: false">$rawPostData</code>.</p>
<p><em>Haben Sie auch bereits Probleme beim Empfang von Polycom Ereignisdaten gehabt?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/de/telefonie-ereignisbenachrichtigungen-von-polycom-telefonen-mittels-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erstellen eines beschränkten SSH-Benutzers nur für SSH-Tunneling</title>
		<link>http://www.ab-weblog.com/de/erstellen-eines-beschraenkten-ssh-benutzers-nur-fur-ssh-tunneling/</link>
		<comments>http://www.ab-weblog.com/de/erstellen-eines-beschraenkten-ssh-benutzers-nur-fur-ssh-tunneling/#comments</comments>
		<pubDate>Sat, 11 Feb 2012 14:55:07 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[Sonstiges]]></category>
		<category><![CDATA[Benutzer]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PATH]]></category>
		<category><![CDATA[rbash]]></category>
		<category><![CDATA[Router]]></category>
		<category><![CDATA[Shell]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Tunneling]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/de/?p=451</guid>
		<description><![CDATA[Manchmal ist es nötig SSH-Tunneling zu verwenden, um einen Webservice auf einem bestimmten Port zu erreichen, welcher von einer Firewall oder einem Router blockiert wird. Natürlich könnten Sie einfach einen neuen SSH- Benutzer auf Ihrem Linux-Server einrichten, aber dieser Benutzer &#8230; <a href="http://www.ab-weblog.com/de/erstellen-eines-beschraenkten-ssh-benutzers-nur-fur-ssh-tunneling/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Manchmal ist es nötig SSH-Tunneling zu verwenden, um einen Webservice auf einem bestimmten Port zu erreichen, welcher von einer Firewall oder einem Router blockiert wird.</p>
<p>Natürlich könnten Sie einfach einen neuen SSH- Benutzer auf Ihrem Linux-Server einrichten, aber dieser Benutzer kann dann sämtliche Serverbefehle auszuführen, obwohl diese für SSH-Tunneling eigentlich nicht benötigt werden. Genaugenommen muss der Benutzer sich lediglich ein- und wieder ausloggen können – das reicht! Aus diesem Grund möchten wir aus Sicherheitsgründen nicht, dass der Benutzer sonst noch irgendetwas machen kann.</p>
<p>Im Folgenden werde ich zeigen, wie Sie solch einen beschränkten SSH-Benutzer auf einem Linux-Server (getestet auf Debian Linux), nur für die Verwendung von SSH-Tunneling, einrichten können.</p>
<p>Zunächst erstellen wir einen neuen Benutzer (ich nenne ihn nun einfach <code class="brush: bash; gutter: false">sshtunnel</code>) mit <code class="brush: bash; gutter: false">rbash</code> als Shell:</p>
<pre class="brush: bash; gutter: true">useradd sshtunnel -m -d /home/sshtunnel -s /bin/rbash
passwd sshtunnel</pre>
<p>Die Verwendung von <code class="brush: bash; gutter: false">rbash</code> anstatt <code class="brush: bash; gutter: false">bash</code> beschränkt den Benutzer bereits, da er insbesondere das Verzeichnis nicht mehr wechseln und auch keine Umgebungsvariablen setzen kann. Jedoch die meisten Bash-Befehle können vom Benutzer weiterhin ausgeführt werden.</p>
<p>Um ihn davon abzuhalten, verwenden wir einen kleinen Trick: Wir setzen die Umgebungsvariable <code class="brush: bash; gutter: false">PATH</code> für diesen Benutzer auf nichts. Dadurch wird die Bash keine Befehle zum Ausführen mehr finden. Dies kann ganz einfach dadurch erreicht werden, dass am Ende der Datei <code class="brush: bash; gutter: false">.profile</code> im Heimatverzeichnis des Benutzers (in unserem Beispiel <code class="brush: bash; gutter: false">/home/sshtunnel/</code>) folgende Zeile eingefügt wird:</p>
<pre class="brush: bash; gutter: false">PATH=&quot;&quot;</pre>
<p>Da wir sicherstellen wollen, dass der Benutzer das selbst nicht wieder ändern kann, entfernen wir die Schreibrechte von den Benutzer-Einstellungsdateien sowie vom Heimatverzeichnis des Benutzers selbst:</p>
<pre class="brush: bash; gutter: true">chmod 555 /home/sshtunnel/
cd /home/sshtunnel/
chmod 444 .bash_logout .bashrc .profile</pre>
<p>Jetzt sind wir fertig: Sie können den SSH-Tunnel ganz normal beispielsweise mit PuTTY einrichten und sich mit dem neu angelegten SSH-Benutzer einloggen. Sie werden nichts anderes tun können als sich ein- und wieder auszuloggen, aber das SSH-Tunneling wird einwandfrei funktionieren!</p>
<p><em>Haben Sie auch schon mal einen so eingeschränkten SSH-Benutzer benötigt?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/de/erstellen-eines-beschraenkten-ssh-benutzers-nur-fur-ssh-tunneling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP-Skript für den Zugriff auf die VirusTotal API Version 2.0</title>
		<link>http://www.ab-weblog.com/de/php-skript-fuer-den-zugriff-auf-die-virustotal-api-version-2-0/</link>
		<comments>http://www.ab-weblog.com/de/php-skript-fuer-den-zugriff-auf-die-virustotal-api-version-2-0/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 10:53:44 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Malware]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[VirusTotal]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/de/?p=442</guid>
		<description><![CDATA[Vor kurzem hat VirusTotal (Englisch) ihre API auf Version 2.0 aktualisiert. Da die Version 1.0 nun veraltet ist, habe ich auch mein PHP-Skript für den Zugriff auf die VirusTotal API aktualisiert: Download des PHP-Skriptes für den Zugriff auf die VirusTotal API Version 2.0 &#8230; <a href="http://www.ab-weblog.com/de/php-skript-fuer-den-zugriff-auf-die-virustotal-api-version-2-0/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Vor kurzem hat <a title="Webseite des VirusTotal-Dienstes" href="http://www.virustotal.com" target="_blank">VirusTotal</a> (Englisch) ihre API auf Version 2.0 aktualisiert. Da die Version 1.0 nun veraltet ist, habe ich auch <a title="Zugriff auf die öffentliche VirusTotal API mittels PHP" href="http://www.ab-weblog.com/de/zugriff-auf-die-oeffentliche-virustotal-api-mittels-php/">mein PHP-Skript für den Zugriff auf die VirusTotal API</a> aktualisiert:</p>
<p style="text-align: center;"><strong><a title="VirusTotal-API 2.0 PHP-Implementierung" href="http://www.ab-weblog.com/de/files/virustotal-api-2-0-php-implementierung.zip">Download des PHP-Skriptes für den Zugriff auf die VirusTotal API Version 2.0</a></strong></p>
<p>Für eine genaue Beschreibung dieser API-Implementierung, werfen Sie bitte einen Blick auf meinen <a title="Zugriff auf die öffentliche VirusTotal API mittels PHP" href="http://www.ab-weblog.com/de/zugriff-auf-die-oeffentliche-virustotal-api-mittels-php/">Artikel zur VirusTotal API Version 1.0</a>.</p>
<p><em>Lassen Sie mich wissen, wenn Sie Probleme oder Fragen zu diesem PHP-API-Skript haben.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/de/php-skript-fuer-den-zugriff-auf-die-virustotal-api-version-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ports 135, 137 und 445 in AVM Fritz!Box Routern freigeben</title>
		<link>http://www.ab-weblog.com/de/ports-135-137-und-445-in-avm-fritzbox-routern-freigeben/</link>
		<comments>http://www.ab-weblog.com/de/ports-135-137-und-445-in-avm-fritzbox-routern-freigeben/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 11:31:05 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[Sonstiges]]></category>
		<category><![CDATA[AVM]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[Fritz!Box]]></category>
		<category><![CDATA[NetBIOS]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[Router]]></category>
		<category><![CDATA[SMB]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/de/?p=437</guid>
		<description><![CDATA[Vor einigen Tagen habe ich hier einen neuen Glasfaser-Internetanschluss bekommen, der einwandfrei funktioniert. Zusammen mit dem neuen Anschlusstyp, bekam ich auch einen neuen, kostenlosen Router von meinem lokalen Internetprovider zur Verfügung gestellt: Eine AVM Fritz!Box 7570 VDSL. Zunächst möchte ich &#8230; <a href="http://www.ab-weblog.com/de/ports-135-137-und-445-in-avm-fritzbox-routern-freigeben/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Vor einigen Tagen habe ich hier einen neuen Glasfaser-Internetanschluss bekommen, der einwandfrei funktioniert.</p>
<p>Zusammen mit dem neuen Anschlusstyp, bekam ich auch einen neuen, kostenlosen Router von meinem lokalen Internetprovider zur Verfügung gestellt: Eine AVM Fritz!Box 7570 VDSL.</p>
<p>Zunächst möchte ich anmerken, dass dies wirklich ein großartiges Produkt ist: Es hat ein eingebautes VDSL-Modem, aber auch VoIP-Telefonanschlüsse (analog und ISDN), stellt WLAN zur Verfügung und unterstützt sogar DECT, um Ihre Mobilteile zu versorgen.</p>
<p>Ich hatte nur ein Problem: Nachdem dieser neue Router in Betrieb war, konnte ich aus meinem Netzwerk nicht mehr auf unseren Webservice auf Port 445 zugreifen. Es war also keine ausgehende Verbindung auf Port 445 mehr möglich.</p>
<p>Somit prüfte ich die Router-Einstellungen, fand aber keine Option oder wenigstens ein Hinweis auf diese Port-Sperrung. Jedoch, bei einer anschließenden Suche im Internet, stellte sich heraus, dass ich keineswegs der Einzige war, der mit diesem Problem kämpfte.</p>
<p>Natürlich ist Port 445, genauso wie die anderen erwähnten Ports 135 und 137, normalerweise für die NetBIOS- beziehungsweise SMB-Kommunikation reserviert, was wirklich ein Sicherheitsproblem wäre, wenn solche Dienste außerhalb eines sicheren, lokalen Netzwerkes benutzt werden würden. Jedoch, selbst wenn eine Portnummer für einen bestimmten Dienst reserviert ist, so steht es dennoch jedem frei sie für etwas Anderes zu verwenden wie wir: Wir nutzen die Ports 444 und 445, um einige internen SSL-Webseiten zu betreiben, da der Standard-Port 443 bereits anderweitig verwendet wird.</p>
<p>Nachdem ich nicht der Einzige in meinem Unternehmen bin, der diese internen SSL-Webseiten verwendet und ich ganz sicher nicht unsere Port-Verwendung aufgrund eines neuen Routers ändern werde, musste ich einen Weg finden, um die Fritz!Box davon zu überzeugen, ausgehende Verbindungen auf Port 445 zuzulassen.</p>
<p>Nach einiger Recherche kam ich zu folgender Lösung. Hier ist eine schrittweise Anleitung, um ausgehende Verbindungen auf den Ports 135, 137 und 445 mit einer AVM Fritz!Box zum Laufen zu bringen:</p>
<ol>
<li>Speichern Sie die Einstellungen Ihrer Fritz!Box in eine Datei (Menü &#8220;System&#8221; / &#8220;Einstellungen speichern&#8221;).</li>
<li>Öffnen Sie diese Datei in einem einfachen Texteditor.</li>
<li>Ersetzen Sie alle Vorkommen von <code>filter_netbios = yes;</code> durch <code>filter_netbios = no;</code>. (Falls Sie ein älteres Fritz!Box-Modell haben, könnte der Name des Konfigurationseintrag etwas anders lauten. Suchen Sie in diesem Fall einfach nach &#8220;netbios&#8221;. Damit sollten Sie ihn schnell finden können.)</li>
<li>Fügen Sie eine neue Zeile <code>NoChecks=yes</code> irgendwo am Anfang der Konfigurationsdatei ein (Ich habe Sie nach der Zeile, die mit <code>Language=</code> beginnt, eingefügt). Ohne diese Zeile wird der Import nicht funktionieren, da die Fritz!Box eine manuell geänderte Konfigurationsdatei ablehnen würde.</li>
<li>Stellen Sie zum Schluss die Einstellungen unter Verwendung Ihrer geänderten Konfigurationsdatei wieder her.</li>
</ol>
<p>Das war&#8217;s! Nachdem die geänderte Konfigurationsdatei geladen wurde, startet die Fritz!Box neu und ab jetzt wird der ausgehende Traffic auf den Ports 135, 137 und 445 wieder problemlos funktionieren.</p>
<p>Natürlich kann ich verstehen, dass es sinnvoll ist Ports mit einem potentiellen Sicherheitsrisiko standardmäßig zu sperren, aber ich verstehe absolut nicht, weswegen AVM keine Möglichkeit (irgendwo in den erweiterten Einstellungen) anbietet dies innerhalb deren Benutzer-Interface zu ändern. Ein Router sollte den Benutzer niemals bevormunden: Wenn ein Benutzer einen bestimmten Port aus welchem Grund auch immer nutzen möchte, muss dies mit jedem Router möglich sein!</p>
<p><em>Sperrt Ihr Router auch ungefragt irgendwelche Ports?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/de/ports-135-137-und-445-in-avm-fritzbox-routern-freigeben/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Internationalisierung: Wie lokalisiert man HTML5-Projekte?</title>
		<link>http://www.ab-weblog.com/de/internationalisierung-wie-lokalisiert-man-html5-projekte/</link>
		<comments>http://www.ab-weblog.com/de/internationalisierung-wie-lokalisiert-man-html5-projekte/#comments</comments>
		<pubDate>Mon, 02 Jan 2012 17:59:48 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Internationalisierung]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Lokalisierung]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/de/?p=410</guid>
		<description><![CDATA[Während ich an einem HTML5-Projekt gearbeitet habe, stieß ich auf das Problem, dass das Projekt in mehrere Sprachen übersetzt werden sollte. Hierfür mussten offensichtlich die Zeichenketten der HTML-Tags sowie der JavaScript-Dateien übersetzt werden. Obwohl ich die Internationalisierung in einer global &#8230; <a href="http://www.ab-weblog.com/de/internationalisierung-wie-lokalisiert-man-html5-projekte/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Während ich an einem HTML5-Projekt gearbeitet habe, stieß ich auf das Problem, dass das Projekt in mehrere Sprachen übersetzt werden sollte. Hierfür mussten offensichtlich die Zeichenketten der HTML-Tags sowie der JavaScript-Dateien übersetzt werden.</p>
<p>Obwohl ich die Internationalisierung in einer global vernetzten Welt für sehr wichtig erachte, scheint dieses Thema bei der HTML5-Entwicklung komplett vergessen worden zu sein. Ich habe hierzu lediglich einen Vorschlag in der <a title="Webseite der Common JS Wiki" href="http://wiki.commonjs.org/wiki/I18n" target="_blank">Common-JS-Wiki</a> (Englisch) gefunden, der bereits seit über einem Jahr keinerlei Aktivität zeigt!</p>
<p>Nachdem ich eine Weile gesucht habe, fand ich diesen Post über <a title="Passive Lokalisierung in JavaScript" href="http://eligrey.com/blog/post/passive-localization-in-javascript">passive Lokalisierung in JavaScript</a>. Natürlich wäre mir ein offiziell standardisierter Ansatz zur Lokalisierung lieber gewesen, jedoch ist diese JavaScript-Bibliothek in der Zwischenzeit sehr nützlich bis es eine offiziell standardisierter Lösung gibt.</p>
<p>Im Folgenden werde ich erklären, wie ich diese Bibliothek nutze, nicht nur für JavaScript-Dateien, sondern auch um den Inhalt von HTML-Tags zu übersetzen.</p>
<h2>HTML5-Test-Page</h2>
<p>Zunächst benötigen wird eine HTML5-Test-Seite wie diese hier:</p>
<pre class="brush: html; gutter: true">&lt;!doctype html&gt;
&lt;html class=&quot;no-js&quot; lang=&quot;en&quot;&gt;
&lt;head&gt;
	&lt;meta charset=&quot;utf-8&quot;&gt;
	&lt;title&gt;Internationalization Test&lt;/title&gt;

	&lt;link rel=&quot;localization&quot; hreflang=&quot;de&quot; href=&quot;lang/de.json&quot; type=&quot;application/vnd.oftn.l10n+json&quot;/&gt;
	&lt;link rel=&quot;stylesheet&quot; href=&quot;css/style.css&quot;&gt;
	&lt;script type=&quot;text/javascript&quot; src=&quot;js/i18n.js&quot;&gt;&lt;/script&gt;
	&lt;script type=&quot;text/javascript&quot; src=&quot;js/script.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body onload=&quot;loaded()&quot;&gt;
	&lt;h1 id=&quot;headertext&quot;&gt;This is an Internationalization Test!&lt;/h1&gt;
	&lt;h2 id=&quot;subtitletext&quot;&gt;With any subtitle.&lt;/h2&gt;
	&lt;a id=&quot;showinenglish&quot; href=&quot;index.html?lang=en&quot;&gt;Show in English&lt;/a&gt;
	&lt;a id=&quot;showingerman&quot; href=&quot;index.html?lang=de&quot;&gt;Show in German&lt;/a&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Wie Sie sehen können habe ich allen wichtigen HTML-Tags eine ID zugewiesen. Diese werden wir später für die Übersetzung verwenden.</p>
<h2>JavaScript-Hilfsfunktionen</h2>
<p>Bevor wir mit der Übersetzung selbst beginnen können, benötigen wir zunächst einige JavaScript-Hilfsfunktionen:</p>
<pre class="brush: javascript; gutter: true">var _ = function (string) {
	return string.toLocaleString();
};

function localizeHTMLTag(tagId)
{
	tag = document.getElementById(tagId);
	tag.innerHTML = _(tag.innerHTML);
}

function getParameterValue(parameter)
{
	parameter = parameter.replace(/[\[]/, &quot;\\\[&quot;).replace(/[\]]/, &quot;\\\]&quot;);
	var regexS = &quot;[\\?&amp;]&quot; + parameter + &quot;=([^&amp;#]*)&quot;;
	var regex = new RegExp(regexS);
	var results = regex.exec(window.location.href);
	if(results == null)
		return &quot;&quot;;
	else
		return results[1];
}</pre>
<p>Hier eine kurze Erklärung was diese Hilfsfunktionen machen:</p>
<ul>
<li><code class="brush: javascript; gutter: false">_()</code>: Dies ist nur eine Kurzform des Prototyps <code class="brush: javascript; gutter: false">string.toLocaleString()</code>.</li>
<li><code class="brush: javascript; gutter: false">localizeHTMLTag(tagId)</code>: Diese Funktion holt sich das betreffende HTML-Element vom DOM-Baum basierend auf der übergebenen Tag-ID und macht anschließend direkt die Übersetzung.</li>
<li><code class="brush: javascript; gutter: false">getParameterValue(parameter)</code>: Wir werden diese Funktion benötigen, um den Wert eines URL-Parameters zu erhalten. Dadurch kann die Seitensprache, wenn vom Benutzer gewünscht, manuell geändert werden.</li>
</ul>
<h2>Durchführung der Lokalisierung</h2>
<p>Wir haben alle Teile zusammen, um unsere Lokalisierung durchzuführen, was nun sehr einfach ist:</p>
<pre class="brush: javascript; gutter: true">function loaded()
{
	var lang = getParameterValue(&quot;lang&quot;);
	if (lang != &quot;&quot;) String.locale = lang;

	alert(_(&quot;Localizing the document title...&quot;));
	document.title = _(document.title);

	alert(_(&quot;Localizing other HTML tags...&quot;));
	localizeHTMLTag(&quot;headertext&quot;);
	localizeHTMLTag(&quot;subtitletext&quot;);
	localizeHTMLTag(&quot;showinenglish&quot;);
	localizeHTMLTag(&quot;showingerman&quot;);

	alert(_(&quot;Localizing done!&quot;));
}</pre>
<p>Es gibt nur eine Funktion <code class="brush: javascript; gutter: false">loaded()</code>, die, nachdem das Dokument geladen ist, aufgerufen wird (siehe das Ereignis im Body-Tag der HTML5-Test-Seite oben). Zunächst prüfen wir, ob es einen URL-Parameter <em>lang</em> gibt, falls der Benutzer die Seitensprachen mit den Links geändert hat. Ansonsten müssen wir das Gebietsschema nicht ändern (das Standard-Browser-Gebietsschema des Benutzers wird in diesem Fall automatisch verwendet).</p>
<p>Nun können wir mit der eigentlichen Übersetzung beginnen, entweder, in dem wir eine Zeichenkette direkt mit der Funktion <code>_()</code> übersetzen oder unsere Funktion <code>localizeHTMLTag(tagId)</code> nutzen, um den Inhalt eines HTML-Tags zu übersetzen. Das war&#8217;s! <img src='http://www.ab-weblog.com/de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h2>Was ist mit mehreren Sprachen?</h2>
<p>Wenn Sie weitere oder andere Sprachen hinzufügen möchten, müssen Sie lediglich einen neuen Lokalisierungslink in den HTML-Bereich <em>head</em> zusammen mit einer JSON-Datei, welche die Übersetzung für die neue Sprache beinhaltet, einfügen.</p>
<h2>Warum werden keine kurzen Variablennamen verwendet</h2>
<p>Der Autor der JavaScript-Internationalisierungsbibliothek schlägt vor, kurzen Variablennamen anstatt der Standardübersetzungen zu verwenden. Daher möchte ich eine kurze Erklärung geben, warum ich dies in meinem Beispiel nicht mache, denn natürlich hat er recht, dass die Verwendung der Standardübersetzungen dem Projekt einen gewissen Overhead hinzufügt. Jedoch hat die Verwendung von kurzen Variablennamen auch mindestens zwei Nachteile:</p>
<ul>
<li>Ihre HTML5-Seite würde ohne Übersetzung nicht mehr funktionieren, da ansonsten nur die kurzen Variablennamen angezeigt werden würden. In meinem Beispielprojekt würde jedoch einfach die Standardübersetzung (Englisch) angezeigt werden, wenn kein Internationalisierungssystem vorhanden ist.</li>
<li>Ich hoffe immer noch, dass es einen standardisierten Weg für die Internationalisierung von HTML5-Projekten geben wird. In diesem wird man wahrscheinlich die Standardübersetzung innerhalb der HTML-Tags benötigen, da der de-facto Standard für die Übersetzung von z. B. PHP-Projekten die Verwendung von <em>gettext</em>-Dateien (.po) ist. Das ist auch die Art und Weise, wie der erwähnte Vorschlag es empfiehlt zu machen. Somit, wenn ich irgendwann in der Zukunft zu dieser Art der Internationalisierung wechseln möchte, will ich nicht sämtliche Standard-Übersetzungen zurück in die HTML-Tags kopieren müssen.</li>
</ul>
<h2>Beispielprojekt downloaden</h2>
<p>Wenn Sie möchten, können Sie den <a title="Internationalisierung HTML5 Beispielprojekt" href="http://www.ab-weblog.com/de/files/internationalisierung-html5-beispielprojekt.zip">Quelltext meines Bespiel-Projektes downloaden</a>.</p>
<h2>Update</h2>
<p>Ich habe das Beispielprojekt aktualisiert, da in der JSON-Datei ein Komma zu viel war, welches dafür gesorgt hat, dass es nur im Mozilla Firefox (nicht jedoch im Microsoft Internet Explorer und Google Chrome) funktioniert hat. Das ist nun korrigiert &#8211; danke an Margaret Wong, die mich auf das Problem aufmerksam gemacht hat!</p>
<p>Denken Sie jedoch daran, dass Sie die Dateien zum Testen auf einen Webserver hochladen müssen, da Sie vermutlich lokal im Internet Explorer und Chrome aufgrund von Browser-Zugriffsbeschränkungen nicht funktionieren werden. Das Beispielprojekt wird nun jedoch korrekt laufen, wenn Sie es auf einen Webserver hochladen.</p>
<p><em>Welches Konzept verwenden Sie für die Lokalisierung Ihrer HTML5-Projekte?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/de/internationalisierung-wie-lokalisiert-man-html5-projekte/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Zugriff auf die öffentliche VirusTotal API mittels PHP</title>
		<link>http://www.ab-weblog.com/de/zugriff-auf-die-oeffentliche-virustotal-api-mittels-php/</link>
		<comments>http://www.ab-weblog.com/de/zugriff-auf-die-oeffentliche-virustotal-api-mittels-php/#comments</comments>
		<pubDate>Mon, 26 Dec 2011 15:42:14 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Malware]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[VirusTotal]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/de/?p=417</guid>
		<description><![CDATA[Aktualisiertes Skript für VirusTotal API Version 2.0! Nachdem heutzutage sehr viel Spyware und Malware im Umlauf ist, ist es umso wichtiger sicherzustellen, dass der eigene Server stets sauber bleibt. Aus diesem Grund nutze ich öfters den sehr nützlichen VirusTotal-Dienst (Englisch), &#8230; <a href="http://www.ab-weblog.com/de/zugriff-auf-die-oeffentliche-virustotal-api-mittels-php/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong><a title="PHP-Skript für den Zugriff auf die VirusTotal API Version 2.0" href="http://www.ab-weblog.com/de/php-skript-fuer-den-zugriff-auf-die-virustotal-api-version-2-0/">Aktualisiertes Skript für VirusTotal API Version 2.0!</a></strong></p>
<p>Nachdem heutzutage sehr viel Spyware und Malware im Umlauf ist, ist es umso wichtiger sicherzustellen, dass der eigene Server stets sauber bleibt.</p>
<p>Aus diesem Grund nutze ich öfters den sehr nützlichen <a title="Webseite des VirusTotal-Dienstes" href="http://www.virustotal.com" target="_blank">VirusTotal-Dienst</a> (Englisch), um verdächtige Dateien zu überprüfen.</p>
<p>Für ein bestimmtes Projekt wollte ich das gerne automatisieren, um einige Dateien und URLs in definierten Zeitabständen automatisiert prüfen zu können. Dies kann sehr einfach mit der öffentlichen VirusTotal-API realisiert werden.</p>
<p>Leider ist der Link zu einer PHP-Implementierung auf der VirusTotal-Webseite tot. Aus diesem Grund entschied ich mich meine eigene PHP-Implementierung dieser API zu machen.</p>
<p>Sie können eine <a title="VirusTotal-API PHP-Implementierung" href="http://www.ab-weblog.com/de/files/virustotal-api-php-implementierung.zip">Kopie meiner Implementierung downloaden</a>. Der Download beinhaltet auch ein kleines Beispielskript, das erklärt, wie sie verwendet werden kann. Gerne können Sie die Implementierung kostenlos in Ihren Projekten verwenden. Natürlich würde ich mich aber über einen kleinen Backlink freuen. <img src='http://www.ab-weblog.com/de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>In meiner API-Implementierung sind nicht nur die Standard-API-Funktionen implementiert &#8211; diese sind gut dokumentiert und werde daher hier nicht weiter erklärt -, sondern auch einige Hilfsfunktionen, die das Leben einfacher machen sollen. Diese erkläre ich im Folgenden:</p>
<ul>
<li><code class="brush: php; gutter: false">getScanID($result)</code>: Gibt die Scan-ID des Scan-Ergebnisses zurück, die Sie später zur Abfrage eines Scan-Berichtes verwenden können.</li>
<li><code class="brush: php; gutter: false">displayResult($result)</code>: Zeigt ein Scan- oder Übermittlungsergebnis in einem lesbaren Format an.</li>
<li><code class="brush: php; gutter: false">getSubmissionDate($report)</code>: Gibt den Übermittlungszeitpunkt des Scan-Berichtes zurück.</li>
<li><code class="brush: php; gutter: false">getTotalNumberOfChecks($report)</code>: Gibt die Gesamtanzahl der Anti-Virus-Prüfungen des Scan-Berichtes zurück.</li>
<li><code class="brush: php; gutter: false">getNumberHits($report)</code>: Gibt die Anzahl der Anti-Virus-Treffer (Malware) des Scan-Berichtes zurück.</li>
<li><code class="brush: php; gutter: false">getReportPermalink($report, $withDate = TRUE)</code>: Gibt den Permalink des Scan-Berichtes zurück. Wenn <code class="brush: php; gutter: false">$withDate == TRUE</code>, gibt der Permalink genau den aktuellen Scan-Bericht zurück; ansonsten gibt er immer den neuesten Scan-Bericht zurück.</li>
</ul>
<p>Diese Hilfsfunktionen sollten die Arbeit mit den API-Ergebnissen einfacher machen, da Sie sich so nicht mehr um die Details des zurückgegebenen JSON-Objekten kümmern müssen. <a title="VirusTotal-API PHP-Implementierung" href="http://www.ab-weblog.com/de/files/virustotal-api-php-implementierung.zip">Hier daher nochmals der Download meiner kostenlosen API-Implementierung.</a></p>
<p><strong><strong><a title="PHP-Skript für den Zugriff auf die VirusTotal API Version 2.0" href="http://www.ab-weblog.com/de/php-skript-fuer-den-zugriff-auf-die-virustotal-api-version-2-0/">Aktualisiertes Skript für VirusTotal API Version 2.0!</a></strong></strong></p>
<p><em>Haben Sie den VirusTotal-Dienst bereits selbst eingesetzt?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/de/zugriff-auf-die-oeffentliche-virustotal-api-mittels-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

