Facebook !(gefällt) mir, aber mit Opera

Trotz aller Datenschutzbedenken gefällt mir Facebook ganz gut – solange man die Anwendungs-Platform deaktiviert hat. Aber der aktuelle Trend, auf jede Seite einen Facebook-Like-Button (oder auch „Gefällt mir“-Schaltfläche) zu setzen, bereitet mir und anscheinend auch anderen zunehmend Unbehagen. Auch als Nutzer von Facebook geht es Facebook nichts an, ob und wie lange ich auf Seiten im Internet surfe. Denn jeder Like-Button verlinkt auf Facebook und so bekommt Facebook wunderbar von jeder Seite mit Like-Button eine Information „Tobias besuchte http://www.gesundheitsprobleme.com.tw/potenzprobleme, Tobias besuchte http://www.monster.de/jobs/firmaxy, Tobias besuchte…“. Wohlgemerkt ohne den Button je gedrückt zu haben.

Ich habe daher eine praktische Opera-Funktion aktiviert: den URL-Filter. Über diesen Link findet man die Konfiguration-Datei für den aktuellen Benutzer, für die Bearbeitung sollte Opera geschlossen werden.

In der Sektion [exclude] folgende Zeilen einfügen:

http://www.facebook.com/plugins/like.php*
http://www.facebook.com/plugins/likebox.php*

Das sollte die Sache vorerst erledigen, vermutlich könnte man das Ganze auch auf /plugins/* ausdehen, aber vor allem der Like-Button hat eine große Verbreitung. Testen kann man das auf den folgenden Seiten, bei der bei jeweils rechts auch ein Beispiel angezeigt wird – oder auch nicht wenn die Blockierung greift.

http://developers.facebook.com/docs/reference/plugins/like
http://developers.facebook.com/docs/reference/plugins/like-box

Videos fürs iPad im Batch konvertieren

Gestern wollte ich einige .avi-Dateien in ein iPad kompatibles Format konvertieren. iTunes scheint das leider nicht von Haus aus zu unterstützen. Nach einigem relativ erfolglosen Googlen habe ich ein paar iPhone-Anleitungen mit ein paar alten Batch-Dateien kombiniert, mit denen ich mal Flash-Videos in AVI konvertiert habe.

Zutaten:

Hier die convert_to_ipad.cmd. Es nimmt alle Avi-Dateien aus dem Verzeichnis G:\AVIs und konvertiert diese in das mp4-Format im selben Verzeichnis.

[sourcecode language=“shell“]
set MPLAYERPATH=D:\Downloads\MPlayer\MPlayer-p4-svn-31372
set VIDEOPATH=G:\AVIs
for %%F IN (%VIDEOPATH%\*.avi) do %MPLAYERPATH%\mencoder.exe "%VIDEOPATH%\%%~nF.avi" -of lavf -lavfopts format=mp4 -vf scale=1024:-3 -ovc x264 -x264encopts crf=28:vbv_maxrate=1500:vbv_bufsize=2000:nocabac:global_header:frameref=3:threads=2:bframes=0:subq=6:mixed-refs=0:weightb=0:8x8dct=1:me=umh:partitions=all:qp_step=4:qcomp=0.7:trellis=1:direct_pred=auto -oac faac -faacopts mpeg=4:object=2:br=160:raw -channels 2 -srate 48000 -o "%VIDEOPATH%\%%~nF.mp4"
[/sourcecode]

UPDATE 2010-08-01: Ich habe die Parameter noch mal angepasst nach den Tipps von Mike. Die Variante vorher hat bei mir bei einigen Videos extremes Bildflackern erzeugt. Außerdem ist Bildverhältnis jetzt abhängig vom Input-Video (Parameter „-vf scale =1024:-3“).

UPDATE 2010-09-19: Der Link der Datei libfaac-1.28.7z hat sich geändert. Danke an Sören!

Top 10 der Usernamen bei ssh Brute-Force-Attacken

Yuri hat einen hübschen awk-Befehl gebaut, um sich eine Statistik der fehlgeschlagenen Anmeldeversuche ausgeben zu lassen.

http://yurisk.info/2010/06/04/top-10-usernames-used-in-ssh-brute-force/

[sourcecode language=“shell“]
awk ‚/Failed password for/ ‚ /var/log/secure* | sed ’s/.* \([[:print:]]\+\) from .*/ \1 /g ‚ | sort | uniq -c | sort -n -k1
[/sourcecode]

Das könnte dann z.B. so aussehen:


189 tester
190 123456
205 www
218 testing
255 user
293 guest
354 oracle
603 test
723 admin
14321 root

ReadyBoost wiederbeleben

Mein Vista SP2 hat sich heute morgen dazu entschieden, aus unbekannten Gründen ReadyBoost auf meiner SanDisk Extreme III SD-Card nicht mehr zuzulassen: „Das Gerät verfügt nicht über die notwendigen Leistungsmerkmale…“.  Und das hat definitiv schon vorher funktioniert. Nach dem obligatorischen Googlen bin auf einen Artikel von Shlomi mit dem richtigen Tipp gekommen.

  1. SD-Card formatieren und entfernen
  2. mit regedit HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\EMDMgmt öffnen
  3. die Untereinträge löschen, ich habe nur die Untereinträge für die SD-Karte gelöscht, einfach nach z.B. Hersteller gucken, bei mir z.B. Ven_O2Micro
    Beispielname: _??_SCSI#Disk&Ven_O2Micro&Prod_SD&Rev_0001#5&1fbc024f&0&000000#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}RDYBST_2483886225
  4. SD-Card wieder einstecken und ReadyBoost wieder aktivieren.

Shlomi hat das für USB-Flashdrives gemacht, also sollte das dort auch funktionieren. Das Setzen der anderen Parameter war bei mir nicht erforderlich.

phonotunes.php: phonostar-Player Aufnahmen in iTunes als Podcast verfügbar machen

Ich bin ein großer Fan des phonostar-Player. Mit diesem Programm kann man sehr bequem Radiosendungen aufnehmen. Da ich einen iPod nutze, musste ich die Aufnahmen bisher umständlich in eine Playliste im iTunes importieren. Dadurch habe ich aber keine Übersicht über schon gespielte Folgen und kann längere Hörspiele nicht mal eben in der Mitte unterbrechen und später an der Stelle fortsetzen. Wie schön läuft das dagegen bei einem Original Audio Podcast – z.B. dem des ARD Radio-Tatort. Automatisch lädt die neueste Folge und wird synchronisiert, bereits angehörte Folgen werden automatisch entfernt.

Ich habe daher ein wenig geschraubt und ein PHP-Script geschrieben mit dem ich meine phonostar-Player-Aufnahmen meinem iTunes in Form eines lokalen Audio-Podcasts unterschiebe. Ein Beitrag von digitaltoast hat mich da sehr schnell auf die richtige Spur gesetzt.

Voraussetzung: ein lokaler Webserver mit PHP Unterstützung. Ich habe dafür den IIS auf meinem Windows 7 konfiguriert.

Installation (IIS): Ich habe in meinem Webserver-Verzeichnis den Ordner phonotunes erstellt, die phonotunes.php dorthin kopiert und über den IIS Manager dort ein virtuelles Verzeichnis „Aufnahmen“ eingehängt, dass auf den Aufnahmenordner des phonostar-Player zeigt. Danach zeigt „http://localhost/phonotunes/Aufnahmen“ auf „D:\\Temp\\radiostreams\\phonostar\\Aufnahmen“.

Und schon kann man im iTunes den Link http://localhost/phonotunes/phonotunes.php hinzufügen und mit seinem iPod synchronisieren.

Verbesserungsvorschläge willkommen!

[sourcecode language=“php“]
<?php
/**
* phonotunes – generate iTunes compatible audio podcasts based on phonostar-Player recordings
*
* Copyright 2010 Tobias Harmes
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* @author Tobias Harmes, tobias@harmes.de
* @link https://harmes.de
* @version 2010-05-16
* @license Apache License, Version 2.0
*/

//change this to your needs
define (‚RECORDINGS‘, ‚D:\\Temp\\radiostreams\\phonostar\\Aufnahmen‘);
define(‚URLBASE‘,’http://localhost/phonotunes/Aufnahmen‘);

/**
* traverse sub-dirs and build up xml object
*
* @param $start directory to start at
* @param $xml_generator XML document object <by ref>
* @param $win32 determines slash, defaults to true
*/
function directoryList($start,&$xml_generator,$win32=true){
if($win32){
$slash="\\";
}else{
$slash="/";
}
$basename = pathinfo($start);
$basename = $basename[‚basename‘];
$ls=array();
$dir = dir($start);
while($item = $dir->read()){
if(is_dir($start.$slash.$item)&& $item!="." && $item!=".."){
$ls[$basename][]=directoryList($start.$slash.$item,&$xml_generator,$win32);
}else{
if($item!="."&&$item!=".."){
$ls[$basename][]=$item;
$itempath = $start.$slash.$item;
//remove default path
$itemurl = str_replace(RECORDINGS, "", $itempath);
//encode all funny characters and spaces
$itemurl = rawurlencode($itemurl);
//restore the slashes
$itemurl = str_replace(rawurlencode($slash),"/",$itemurl);
$itemurl = URLBASE.$itemurl;

$itempathinfo = pathinfo($itempath);
$recording = $xml_generator->addChild(‚item‘);
$title = str_replace("_"," ",$itempathinfo[‚filename‘]);
//remove the leading date if any
if (preg_match(‚/^\d{4}-\d{2}-\d{2}.*/‘,$title))
{
$title = substr($title, strlen("yyyy-mm-dd")+1);
}
$recording->addChild(‚title‘, $title);
$recording->addChild(‚pubDate‘, date(DATE_RFC822, filemtime($itempath)));
//if this is a regular recording use the folder name
$description = substr($start, strlen(RECORDINGS)+1);
$description = str_replace("_"," -",$description);
$recording->addChild(‚description‘, $description);
$recording->addChild(‚link‘, $itemurl);
$enclosure = $recording->addChild(‚enclosure‘);
$enclosure->addAttribute(‚url‘, $itemurl);
$enclosure->addAttribute(‚length‘, filesize($itempath));
$enclosure->addAttribute(‚type‘, ‚audio/mpeg‘);
}
}
}
return $ls;
}//directoryList

$xml_string ='<?xml version="1.0" encoding="UTF-8"?>‘."\r\n"."<channel>"."\r\n"."</channel>";
$xml_generator = new SimpleXMLElement($xml_string);
$xml_generator->addChild(‚title‘, ‚phonotunes radio podcast‘);
$xml_generator->addChild(‚category‘, ‚Audio Podcasts‘);

$dirlist = directoryList(RECORDINGS,$xml_generator, true);

header("Content-Type: text/xml");
$xml_result = $xml_generator->asXML();
$xml_LeftHandSide = ‚<?xml version="1.0" encoding="UTF-8"?>‘."\r\n".'<rss xmlns:itunes="http://www.itunes.com/DTDs/podcast-1.0.dtd" version="2.0">‘;
$xml_RightHandSide = substr($xml_result, 39);
echo $xml_LeftHandSide . $xml_RightHandSide . "</rss>";
?>
[/sourcecode]

UNMOUNTABLE_BOOT_VOLUME

Was gibt es schöneres an einem Sonntag als ein Rechner der nicht funktioniert? Jedenfalls war meine Schwester nicht sehr begeistert über die Endlos-Neustarts ihres Windows XP Home. Nachdem ich den automatischen Neustart über F8 deaktiviert hatte, konnte ich dem Bluescreen (oder stop error) ein UNMOUNTABLE_BOOT_VOLUME entnehmen. Google brachte einen KB-Artikel von Microsoft an den Tag. Ah ja, also etwas mit der Festplatte. Schnell die Daten gesichert und an einem anderen Rechner scandisk mit automatischer Reparatur laufen lassen. Neuinstallation knapp vermieden 🙂

heise Security Konferenz Cloud Computing

Diese Woche war ich in Hamburg auf der heise Security Konferenz zum Thema Cloud Computing. Wieder einmal waren es ausgezeichnete Vorträge. Die derzeitig verfügbaren Lösungen bezüglich Cloud Computing im Enterprise Umfeld sind allerdings enttäuschend. Wie soll man den hohen Anforderungen an den Datenschutz in Deutschland bei der Verarbeitung von personenbezogenen Daten in der public Cloud gerecht werden? Müssen wir tatsächlich auf homomorphe Verschlüsselung warten?

Auch diesmal gab es einige aha-Effekte und nützliche Links zum Thema, das von der Redaktion mitgebrachte Apple iPad, das ich auch mal in die Hand nehmen durfte, war da quasi noch mal das Extra-Bonbon:

  • Wie baue ich mit der Google App Engine einen kostenlosen Proxy – zum Beispiel zur Umgehung der Länderkennung auf einigen Webseiten
  • Evernote macht OCR-Erkennung von Screenshots, Fotos und Notizzettel und synchronisiert sie zwischen allen festen und mobilen Endgeräten
  • Tungle.me bietet einen Free-Busy-Planer um mit anderen Kontakten ohne Endlos-Email-Schleife einen gemeinsamen Termin auszumachen (mein Kalender)
  • Crowdsourcing für Design-Aufgaben mit CrowdSpring und für Coding-Aufgaben mit GetACoder
  • PhishingTank – ein Seite bei der man Phishing-Seiten melden und noch besser ansehen kann – erschreckend wie täuschend echt die Seiten aussehen

copy & paste per ssh Sitzung ohne vi

Heute hat mich vi in einer putty ssh-Sitzung im Stich gelassen. Ich hatte auf der Maschine kein sftp-Subsystem und musste eine kaputte Configdatei durch eine heile Version ersetzen. Ein copy&paste hat im insert-Modus von vi eine wüste Einrück-Orgie erzeugt, sogar die ssh-Sitzung ist mit einem Segmentation-Fault ausgestiegen.

Folgende Alternative hat ohne Probleme funktioniert:

cat - >/etc/vmware/hostd/proxy.xml

Der Befehl cat wartet durch den Parameter „-“ auf die Standardeingabe. Einfach den Text einfügen und dann ctrl-d (^d) drücken.  Die Ausgabe wird in die Ziel-Konfigurationsdatei umgeleitet. Done!