Was für ein feiner Rootkit-MBR-Supertrojaner

13 12 2010

Kürzlich wurde ich gerufen, um einen Rechner mit Windows 7 von einem Trojaner zu befreien, der eine lustige TAN-Abfrage in das Online-Banking der Postbank injiziert ("Geben Sie 20 TANs ein" direkt nach der Eingabe von Kotonummer und PIN). Schnell war klar, dass ich es mit einem ordentlichen Stück Software zu tun hatte, weil alleine die organische Einbindung der injizierten Abfrage mittels jQuery UI wirklich sauber ausgeführt wurde. So gehört sich das. Der Virenscanner hat zwar etwas gefunden, aber das verriet lediglich den Weg der Infektion über ein veraltetes Java-Plugin (Update 17, aktuell ist Update 23). Ein Autostart war auch schnell auffindbar, aber ebenfalls eine Sackgasse: Die Exe hatte 0 Byte und war zusammen mit dem Autostart-Eintrag nach jedem Löschen plus Neustart wieder da. Klingt ziemlich nach Rootkit, also Rechner mitnehmen und genauer ansehen.

Also habe ich als nächstes die Desinfec't DVD von der c't 02/2010 gebootet und einige Stunden Bitdefender, Kaspersky und Avira mit aktuellen Signaturen laufen lassen. Für sowas braucht man viel Zeit, weil alleine die Akualisierung der Scanner sich bei mir im Stundenbereich bewegt hat. Verwunderliches Ergebnis: Nichts, keine einzige verdächtige Datei, die Avira nicht schon aus dem laufenden System heraus in Quarantäne verschoben hatte. Nanu? Irgendwo her muss der Scheiß doch kommen und so neu oder unbekannt wird so ein Virus auch nicht sein. Bleibt also als letzte Möglichkeit der MBR. Also schnell mal mit fixmbr.exe hantiert und von einer Boot-CD aus den Autostart und die immer wieder neu angelegte 0-Byte-Exe gelöscht, und zack, das war es. Keine TAN-Abfrage mehr beim Banking. Die hatte übrigens den Firefox und den Internet Explorer betroffen, nicht aber einen testweise heruntergeladenen Protable Chrome. Scheinbar injiziert sich das Ding als geheime DLL in ihm bekannte Browser, um sein Unwesen zu treiben.

So muss das. Diese Scriptkiddie-Virusbaukasten-Kinderkacke langweilt doch nur. Ich warte schon lange auf solche Schadsoftware, die mal ein echter Gegner ist; die auch mal von Leuten lanciert wird, die nicht mit ihren scheiß Botnetzen und adoleszent geprägten Allmachtsfantasien irgendwelche Seiten DDoSen, weil man dort ihren Account wegen Missbrauchs geblockt hat. Von sowas hat mir gerade gestern noch jemand erzählt, der eine Matchmaker/Liga-Seite für ein beliebtes Computerspiel betreibt. Stattdessen gibt es ordentlich gestaltete Software, die ihren Zweck erfüllt und mal wieder zeigt, wie angreifbar Online-Banking mit TAN-Liste doch ist. Mit Browser-basiertem Banking hat man da besonders als Angreifer leichtes Spiel, aber wenn jemand so weit ist, dass er sich mit einem MBR-Rootkit tarnen und unauffällig den ganzen Browser manipulieren kann, sollte auch ein Angriff auf StarMoney oder andere Banksoftware kein prinzipielles Problem sein.

Dass man hier sehr auffällig direkt 20 iTANs haben will, ist wohl dem Umstand geschuldet, dass man diese nur verkauft und eben nicht direkt selber nutzt. Sollte sich jemand finden, der bereit ist, das zu tun, ist es natürlich viel erfolgsversprechender, eine legitime TAN-Abfrage abzuwarten und nur die Überweisungsdaten zu manipulieren. Dagegen helfen einige neuere TAN-Verfahren, die neben der TAN auch immer Ziel und Betrag der Überweisung anzeigen. Wenn man dem überhaupt Beachtung schenkt. mTAN oder die neueren TAN-Generatoren tun da gute Dienste, weil sie die TAN-Generierung an die angezeigten Überweisungsdaten binden. Nutzt sowas, wenn ihr das noch nicht macht. Oder eben HBCI-Chipkarten-Banking mit (teurem) Kartenleser mit Display und eigenem Pinpad, aber das ist wirklich sehr unkomfortabel, vor allem wenn man mehr als eine Bank hat.

Insgesamt muss man sagen: Haltet um Gottes Willen Eure Software aktuell! Ein Java Update 17 ist einfach mal sechs Versionen alt und enthält etliche Sicherheitslücken, die sich ohne Zutun des Anwenders bequem im Browser ausnutzen lassen. Was aus sowas werden kann, hat dieser Fall mal wieder eindrucksvoll bewiesen. Auf dem betroffenen Rechner habe ich jetzt Java einfach deinstalliert, denn bezeichnend an der Sache ist, dass der Besitzer von Java eben noch nie etwas gehört hatte; kein Wunder also, dass er dessen Update-Anfragen offensichtlich ignoriert hat. Weg damit. Überhaupt: Alle Browser-Plugins sind tickende Zeitbomben, das gilt genau so für Flash und den Adobe Reader (oder Shockwave oder Quicktime oder Windows Media). Die Browser sind heutzutage echt ziemlich sicher geworden, vor allem Google Chrome mit seinen ungefragten Hintergrund-Updates geht da den richtigen Weg. Aber wenn man sich diese Sicherheit mit Sandboxen und allem durch veraltete Plugins direkt wieder kaputt macht, ist das ein Fehler im Prinzip. Also: Plugins vermeiden oder zumindest nicht ungefragt ausführbar machen, ein Flashblocker ist heutzutage sicherheitstechnisch wirklich Gold wert, NoScript kann das sogar mit allen Plugins. Ansonsten muss Java eben ganz gehen, aber das hatten wir ja schon neulich.


Der Pferdefuß an Amazon Prime

16 11 2010

Ich werde meine Amazon Prime Mitgliedschaft nicht verlängern. Nicht, weil ich grundsätzlich keinen Nutzen im Wert von 30€ pro Jahr darin erkennen würde. Die Idee finde ich an sich prima, aber in der Realität krankt das System an einer sowieso schon ärgerlichen Eigenheit von Amazon: Dem Drecks-Marketplace.

Dass man mit Prime immer Expressversand hat, ist nett, aber dank Amazons sowieso schon schnellem Versand nicht so wirklich kritisch. Prime macht ja in erster Linie Sinn, wenn es um die versandkostenfreie Lieferung geringwertiger Güter geht. Und genau da kommt der Marketplace ins Spiel, denn unter dem ganzen Fremdanbietern sind die Angebote mit Versand durch Amazon bei diesen geringwertigen Waren in der klaren Minderheit. Das nervt unglaublich, denn nur bei letzteren gilt Prime. Das wäre sogar nur halb so wild, wenn man bei Amazon einen immer greifenden Filter für den ganzen Marketplace-Scheiß einstellen könnte, was den Umgang mit Amazon auch abseits von Prime wieder benutzbarer machen würde. Gibts aber nur in der Form, dass man das bei jeder Suche erneut anhaken muss.

So einen Filter in gut stelle ich mir so vor, dass Marketplace-Angebote nur (deutlich gekennzeichnet) angezeigt werden, wenn das Produkt von Amazon nicht lieferbar ist. Die Suche soll, wenn ich mir das nicht im Einzelfall ausdrücklich anders wünsche, gar keine Marketplace Angebote anzeigen. Ich will bei Amazon bestellen und nicht bei irgendwem über Amazon. Zu Hause bin ich bei Amazon immer eingeloggt, es läge also nahe, wenn dieser Filter global für alle Suchen unter meinem Profil greifen würde (wie gesagt, mit leicht erreichbarer Ausnahme im Einzelfall). Solange Amazon so einen Filter nicht anbietet, ist Prime für mich in erster Linie ein frustrierendes Unterfangen, weil es gerade da, wo es sich lohnen würde, nicht greift. Der einzige praktische Nutzen für mich ist bei einzelnen CDs, die unter 20€ kosten, aber da kaufe ich meistens sowieso MP3s oder mache eine Bestellung mit anderen Sachen voll. Also keine Verlängerung von Prime zur Zeit.


phpBB3 und die Sommerzeit

10 11 2010

Einmal im halben Jahr gibt es in vielen Ländern der Welt eine Zeitumstellung, wahrscheinlich hat das jeder schon mal mitbekommen. Bei der phpBB3 Forensoftware ist das ebenfalls berücksichtigt, ist aber leider nicht praxistauglich implementiert. Man kann zwar als Admin boardweit die Zeitumstellung vornehmen, aber das ändert nur die Einstellung für Gäste, denn zusätzlich wird die Sommerzeit pro Benutzer gespeichert, was nicht automatisch angepasst wird. Es müsste also jeder User in sein Profil gehen und dort seine eigene Zeitumstellung vornehmen. Unparktikabel und nicht zu Ende gedacht. Folgende SQL-Abfragen erledigen das für das Board und alle User in einem Rutsch:

Auf Winterzeit umstellen:

UPDATE phpbb3_config SET config_value = 0 WHERE config_name = 'board_dst';
UPDATE phpbb3_users SET user_dst = 0;

Auf Sommerzeit umstellen:

UPDATE phpbb3_config SET config_value = 1 WHERE config_name = 'board_dst';
UPDATE phpbb3_users SET user_dst = 1;

Die Tabellennamen müssen ggf. noch angepasst werden, wenn andere Prefixe als phpbb3_ benutzt werden.

Nachtrag 16.11.2010: Ich frage mich immer wieder, wieso die User ihre Sommerzeit selber einstellen können/müssen, statt dass sie einfach einen Haken für "Ich lebe in einem Land mit Sommerzeit" setzen können. Dieses Flag kann dann einfach berücksichtigt werden, wenn das Board umgestellt wird oder sich gar selber umstellt.


Java muss gehen

03 11 2010

Ich mochte die Java-Runtime noch nie, in letzter Zeit aber hat das Java-Plugin im Browser die Führung übernommen (von Flash und dem Adobe Reader), was die Ausnutzung von Sicherheitslücken angeht. Also ist eines klar: Java muss endlich mal aus meinen Browsern verschwinden, vorzugsweise gleich vom ganzen System. In Opera benutze ich sowieso schon den PlugIn-Blocker, den man in opera:config aktivieren kann und der alle PlugIns erst nach einem Aktivierungsklick auf einen Platzhalter startet. Das betrifft dann auch das Adobe Reader PlugIn, Flash und Silverlight. Bequem, aber irgendwie habe ich das Gefühl, dass einige PlugIns trotzdem einfach so starten (möglicherweise, wenn sie in einem iframe geladen werden). Im Firefox kann man PlugIns einfach deaktivieren, aber nach einem Update von Java war selbiges im Firefox wieder aktiv. Also auch hier nur eine halbe Lösung. Java muss also vom System verschwinden, die Browser sollen keine PlugIns sehen.

Leider stehen der systemweiten Deinstallation von Java einige Hürden entgegen, allen voran ein paar unersetzliche Java-Programme wie Netbeans und der JDownloader. OpenOffice meckert ohne Java auch herum, läuft dann aber trotzdem. Ich habe das alles lösen können, als Notiz eine kurze Beschreibung, worauf es ankommt:

1. JavaPortable

Dankenswerterweise gibt es bei portableapps.com eine portable Version von Java, die aktuell gehalten wird und sich bequem und fix installieren lässt. Ich habe ein Sammelverzeichnis für portable Programme, dort landet gleich auch Java. Soweit kein Problem, Java findet sich jetzt unter D:\ProtableApps\Java (das sind Backslashes, keine Pipes, liegt am Font).

2. JDownloader und andere Java-Programme, die als .jar kommen

Der JDownloader ist ein klassisches Java-Programm, das direkt als .jar kommt und mit einem einfachen Aufruf gestartet werden kann. Man legt in so einem Falle einfach irgendwo eine neue Verknüpfung an und trägt ins Zielfeld D:\PortableApps\Java\bin\javaw.exe -jar D:\PortableApps\Jdownloader\JDownloader.jar ein, in das Feld "Ausführen in:" kommt D:\PortableApps\Jdownloader. Die Pfade müssen natürlich der Situation angepasst werden und ggf. jeweils in Anführungszeichen gepackt werden, wenn Leerzeichen darin vorkommen. Dann wählt man der Optik halber das Symbol der JDownloader.exe aus und speichert die Verknüfpung ab. Das wars schon, JDownloader läuft jetzt ganz entspannt und hat sogar den Vorteil, dass man die Verknüpfung an die Taskleiste von Windows 7 anheften kann, was mit der JDownloader.exe daran scheitert, dass man nur den Starter anheften kann und für das laufende Programm ein zweiter Eintrag in der Taskleiste erscheint. Heftet man das laufende Programm an, hat es nur ein fieses Platzhalter-Symbol, wenn es nicht läuft.

3. OpenOffice/LibreOffice

OpenOffice bzw. LibreOffice meckert beim ersten Start, wenn keine Java-Runtime am Start ist, lässt sich aber unter Extras->Optionen->OpenOffice.org->Java ohne weiteres mit der portablen Runtime bekannt machen. Ich bin mir aber gar nicht sicher, ob das überhaupt notwendig ist, denn auch ohne Java scheint OpenOffice/LibreOffice ganz normal zu funktionieren.

4. NetBeans

Netbeans benötigt normalerweise ein ganzes JDK, da kommt man um eine systemweite Installation nicht herum. Will man es nur für die PHP-Enwicklung (oder andere Java-freie Sprachen) benutzen, reicht aber auch eine portable JRE. Nur scheitert die Installation ohne systemweites Java. Hilfsweise kann man ein bereits installiertes NetBeans umstellen oder die plattformunabhängige Version hernehmen, der Trick ist der gleiche: Im etc-Ordner der Installation gibt es eine netbeans.conf, die eine Zeile für den Pfad der JRE enthält. Den schnell umgestellt (Pfad natürlich wieder anpassen), und NetBeans startet wieder:

netbeans_jdkhome="D:\PortableApps\Java"

Bei meinen ersten Versuchen bin ich daran gescheitert, dass hier das Java-Hauptverzeichnis angegeben werden muss und nicht das Unterverzeichnis bin mit dem Java-Binary.

Fazit

So, meine Browser sind nun zuverlässig befreit vom Java-PlugIn und ich kann wieder ruhig schlafen; meine wichtigen Java-Programme laufen nach kurzem manuellem Eingriff trotzdem wie zuvor. Alles wird gut. Schlimm genug, dass Browser Sicherheitslücken haben, aber sowieso nie benutze PlugIns wie Java werden immer wieder vergessen, erfahren keine oder zu späte Updates und sind alle paar Wochen erneut ein spannender Zoo von Zero-Day-Exploits. Die Antwort kann nur lauten: Weg damit. Und Java im Browser werde ich nicht vermissen.

P.S. Bei der Gelegenheit habe ich übrigens auch gleich den Adobe Reader entsorgt und durch SumatraPDF ersetzt, ein simples Frontend für Ghostscript, das zur einfachen Anzeige völlig reicht und zudem super schlankt ist. Nachteil ist, dass das Markieren von Text damit nicht wirklich komfortabel klappt (Strg gedrückt halten und einen Rahmen aufziehen, der darunter liegende Text wird dann irgendwie unvorhersehbar markiert). Das kann ich aber zumeist verschmerzen. Flash wird bei mir sowieso in allen Browsern grundsätzlich geblockt (Opera blockt alle PlugIns bis auf Widerruf, FlashBlock erledigt das in Firefox und Chrome dank einer einfachen Whitelist sogar noch viel eleganter).

Nachtrag 19.11.2010: Wenn man JDownloader auf die angegebene Weise mit einem portablen Java verheiratet, kann man .dlc-Dateien leider nicht mehr per Doppelklick im JDownloader öffnen. Man muss dazu die Dateizuordnungen manuell ändern, was wiederum in Windows 7 nicht mehr mit den klassischen Bordmitteln geht. Die alte Oberfläche zur genaueren Dateizuordnung gibt es sein Vista nicht mehr, man muss also in der Registry hacken oder das tolle Tool ExtMan benutzen, das in etwas die alte von XP gewohnte Oberfläche wieder bringt. Tolles Tool und ein prima Ziel für PayPal-Spenden. Für den JDownloader muss man den Eintrag für .dlc-Dateien editieren und folgende "Anwendung für diesen Vorgang" zuordnen (wie immer: Pfade anpassen): D:\PortableApps\Java\bin\javaw.exe -jar D:\PortableApps\Jdownloader\JDownloader.jar "%1". Dann klappt auch der Start per Doppelklick wieder. Für die visuellen Typen habe ich dazu mal zwei Screenshots gemacht:

.dlc-Dateien mittels ExtMan mit JDownloader verknüpfen Schritt 1.dlc-Dateien mittels ExtMan mit JDownloader verknüpfen Schritt 2


Objektliebe Wasserkocher

31 10 2010

Mein Leben lang hatte ich es mit schlechten Wasserkochern zu tun. Der erste Wasserkocher meiner Eltern irgendwann in den 90ern hing noch fest an seinem Kabel und hatte eine ungemein schnell verkalkende Heizspirale. Im Grunde war das nicht mehr als ein Tauchsieder mit Gefäß drumrum, der zudem in Ermangelung nennenswerter Leistung nicht viel schneller war, als ein Wassertopf mit Deckel auf dem Elektro-Kochmuldenherd. Irgendwann gab es Wasserkocher mit verdeckter Heizspirale und etwas mehr Leistung, die man von ihrem Sockel abheben konnte. Die ersten Modelle krankten an der Fummeligkeit ihres Sockels, aber ein Fortschritt war da. Meine Eltern neigen leider dazu, bei solcherlei Gerätschaften immer nur die billige Variante zu kaufen, also gab es immer wieder fehlkonstruierte Scheiß-Wasserkocher. Zuletzt war das einer, aus dessen Deckel einem beim Ausgießen heißer Dampf über die Finger der haltenden Hand schoss, wenn man das Gerät oben am Griff anfasste. Den Deckel zur Befüllen einer zweiten Runde zu öffnen, war auch gerne mal von einem Schuss heißen, sich vom Deckel lösenden Kondensats begleitet. Lustiges Gerät.

Ich hatte dann irgendwann die Schnauze voll und kaufte bei Aldi einen hübschen 3000W Wasserkocher mit 1,7l Fassungsvermögen für 18€. Der sah gut aus, kochte schnell und kostete nicht die Welt, eine super Sache. Leider hatte ich kein Glück und das Ding war undicht. Ernsthaft: Ein nagelneuer Wasserkocher war nicht dicht. Also zurück damit. Inzwischen haben meine Eltern den Nachfolger des besagten Aldi-Kochers, der gut und dicht ist. Fein, Problem gelöst.

Nun zu mir. In der WG hatte ich einen Wasserkocher angeschafft, der irgendwie ebenfalls doof und vor allem recht schnell kaputt war. Ich hatte einfach kein Glück mit Wasserkochern. Zur Einweihungsparty in der aktuellen Wohnung schenkten mir die Kollegen aus dem T3Lab dann diesen Philips-Wasserkocher. Wenn man dieses Gerät benutzt, weiß man erst, dass Wasserkocher auch Spaß machen können. Das ist der Wasserkocher für den Technikfreund. Auf den ersten Blick leuchtet eine elektronische Steuerung nicht unbedingt ein, aber der erste grüne Tee mit recht genau 80 Grad heißem Wasser führt einem klar vor Augen, dass man gerade den Durchbruch in Sachen Wasserkocher vor sich stehen hat. Das Ding hat eine Temperaturvorwahl (40, 60, 80 und 100 Grad), die ziemlich gut funktioniert und die einem die Heißwasserbereitung für grünen Tee oder Wärmflaschen immens vereinfacht. Die Warmhaltefunktion ist sicher auch manchmal praktisch, ich habe sie aber tatsächlich in anderthalb Jahren nicht einmal benutzt. Das Ding hat aber nicht nur technische Gimmicks, es sieht auch noch brauchbar aus, kocht mit 2400W schnell genug, hat ein herausnehmbares Edelstahlgeflecht als Kalkfänger und verbrüht einen nicht mit irgendwelchen Deckelfehlkonstruktionen. Dass er piepst, wenn das Wasser fertig ist, erweist sich im täglichen Gebrauch übrigens ebenfalls als äußerst nützlich, gerade in Kombination mit der Temperaturvorwahl. Der einzige Wunsch, den ich an das Ding noch hätte, wäre etwas mehr Fassungsvermögen, denn 1l reicht zwar meistens für unseren Bedarf, aber eben nicht immer.

Also noch mal mein Dank an die Schenker. Ich erfreue mich tagtäglich daran und fühle mich wasserkochertechnisch endlich angekommen.

P.S. Ach ja, noch ein Tipp zur Erhöhung der Benutzbarkeit von Wasserkochern: Benutzt einen Wasserfilter. Ich habe unseren Wasserkocher trotz häufiger Benutzung über anderthalb Jahre noch nicht einmal entkalken müssen, sogar das Edelstahlgeflecht, das Kalk fangen soll, ist blitzeblank. Wer also nicht gerade in einer Gegend mit ohnehin kalkfreiem Wasser lebt, sollte die geringe Investition in einen Wasserfilter nicht scheuen und vor allem konsequent nur gefiltertes Wasser in seinen Wasserfilter lassen. Als Lohn winkt einem ein immer sauberer Wasserkocher, der nie entkalkt werden muss und deswegen schnell wie am ersten Tag bleibt, sowie schmackhafterer Tee ohne Kalkschicht oben drauf. Ohne die Kalkschicht oben auf dem Tee bleibt übrigens auch keine hartnäckige braune Kalkschicht in der leeren Tasse zurück, oder zumindest deutlich weniger, was das Spülen ebenfalls immens erleichtert. Die Patina in der Edelstahl-Teekanne ist ohne nennenswerten Kalkanteil übrigens auch viel gleichmäßiger und nicht so abstoßend. Kampf dem Kalk. Für das Wasser hier in Düsseldorf reichen die billigen dm-Wasserfilter übrigens locker aus, in Köln aber wohl bei weitem nicht, wie ich mir habe sagen lassen. Dort kommt man wegen des unfassbaren Kalkgehaltes im Wasser wohl nicht um gute Markenfilter herum.

P.P.S. So ein Wasserkocher ist übrigens nicht zu unterschätzen, was die Leistungsaufnahme angeht. Wenn da 3000W als Nennleistung angegeben sind, nähert man sich den 16A der Hausabsicherung schon recht stark (230V*16A sind nur 3680W, die man aus einer Haushaltssteckdose ziehen darf). Also Vorsicht im Umgang mit solchen Geräten, gerade wenn sie billig waren. Vor allem Vorsicht, wenn man sie über Verlängerungskabel, billige Mehrfachsteckdosen oder parallel an einer Sicherung mit anderen starken Verbrauchern betreibt. Ein 3000W Wasserkocher und eine Mikrowelle oder ein Toaster im gleichen Mehrfachstecker sollten die Sicherung hoffentlich bereits auslösen. Aber verlassen würde ich mich da nicht drauf, gerade in Wohnungen mit fragwürdiger Elektroinstallation.


Die lustige SQL-Injection am Morgen

30 10 2010

Gelegentlich habe ich das Vergnügen, in fremdem PHP-Code zu wühlen. Über die Nichteinhaltung irgendwelcher Coding-Standards ärgere ich mich deshalb nicht mehr, weil das der Normalfall ist. Was mich aber immer wieder bass erstaunt, ist die Anfälligkeit für SQL-Injections. Im Jahre 2010 sollte sich doch wirklich auch zum letzten PHP-Frickler herumgesprochen haben, das Konstrukte wie diese beiden hier wahnsinnig sind:

$sql = "SELECT * FROM tabelle WHERE ort = '" . $_POST['ort'] . "'";
$sql = "SELECT * FROM users WHERE username = 'admin'
  AND password = '" . $_POST['password'] . "'";

Gibt man nun im zweiten Beispiel ein kleines leckmich' OR 1 OR password = ' ein, macht PHP daraus folgendes SQL-Statement:

$sql = "SELECT * FROM users WHERE username = 'admin'
  AND password = 'leckmich' OR 1 OR password = ''";

Et voilà, wir sind als Admin eingeloggt. Das ist ein echtes Beispiel, das mir mal den Zugang zu einem Admin-Backend ermöglicht hat, zu dem ich auf die Schnelle keine Zugangsdaten bekommen konnte. In dem Fall war das ein Segen, weil es mir die Arbeit erleichtert hat, aber auf die Idee hätte auch irgendwann jemand anderes kommen können. Es gibt auch ein legendäres XKCD dazu, das ich gerne als Einstieg in meiner Vorlesung benutze, wenn es um Computersicherheit geht.

Manchmal wird $_POST immerhin vorher irgendwie geprüft oder gefiltert, Konstrukte wie das folgende sind also im Grunde recht klug gedacht:

$connection = mysql_connect('localhost', 'user', 'password');
mysql_select_db("dbnamme", $connection);
if ( preg_match('/[\w\(\)\.-]/iu', $_POST['ort']) )
{
  if ( $result = mysql_query("SELECT * FROM tabelle WHERE ort = '" . $_POST['ort'] . "'") )
  {
    $row = mysql_fetch_array($result);
  }
}

Allerdings neigt man bei solchen Sachen dazu, im Eifer des Gefechts die wichtige Prüfung auf ungültige Zeichen zu vergessen oder unter bestimmten Randbedingungen gar nicht ausführen zu lassen. Es gibt unzählige Möglichkeiten, eine SQL-Injection zu vermeiden, irgendeine davon sollte genutzt werden. Mein Favorit ist eindeutig die Nutzung eines Frameworks, das sich darum kümmert, oder eben die eigene Datenbankprogrammierung ausschließlich über prepared statements und PDO. Letzteres sieht dann für obige Funktionalität vereinfacht etwa so aus:

$dbh = new PDO('mysql:host=localhost;dbname=dbname', 'user', 'password');
$stmt = $dbh->prepare("SELECT * FROM tabelle WHERE ort = :ort");
if ( $stmt->execute(array(':ort' => $_POST['ort'])) )
{
  $row = $stmt->fetch(PDO::FETCH_ASSOC);
}

Hier sorgt das prepared statement von PDO dafür, dass zuerst der SQL-String mit Platzhalter an die Datenbank übertragen wird, und später getrennt davon der Inhalt von $_POST['ort']. Keine SQL-Injection möglich an dieser Stelle, wir können ruhig schlafen. Und das beste ist, es ist nicht mal wirklich komplizierter, schwieriger oder mit mehr Code verbunden, einfach sicherer. PDO kann übrigens noch mehr, etwa sehr komfortabel mit Transaktionen umgehen, die dann wichtig werden, wenn man mehrere voneinander abhängige Schreiboperationen auf der Datenbank durchführt und die nur entweder ganz oder gar nicht haben will. EIn Blick die Dokumentation zu PDO zeigt noch etliche andere Vorteile auf und PHP mindestens in Version 5.1 sollten wir inzwischen doch hoffentlich alle haben.

Neben SQL-Injections gibt es noch unzählige weitere Angriffsflächen auf Webapplikationen, aber wenn man schon an so offensichtlichen Grundlagen scheitert, sollte man die eigene Programmierleistung noch mal grundlegend auf den Prüfstand stellen. Vielleicht sollte man auch lieber stricken oder kochen, wenn man da grundlegende Fehler macht, fängt man sich nicht direkt einen Servereinbruch ein. Wer fürs Web programmiert, trägt eine gewisse Verantwortung; sich also zumindest ein klitzekleines Basiswissen an sicherer Programmierung zuzulegen, darf doch erwartet werden. Vor allem, wenn in dem Admin-Interface Kundendaten einsehbar oder gar veränderbar sind, oder man dort anderen Schindluder mit wichtigen Dingen treiben kann. War in obigem Fall nicht so, immerhin.

Klar passieren einem Programmierfehler, aber Daten ungeprüft aus $_POST (oder sonstigen vom Benutzer kontrollierten Quellen) in eine Datenbankabfrage zu übernehmen geht wirklich ganz und gar nicht, nie und nimmer. Das ist ein unverzeihlicher Fehler und zeugt von mangelndem Grundverständnis der Thematik. Wenn ich sowas sehe, frage ich mich immer, ob der jeweilige Programmierer überhaupt ansatzweise weiß, was er da macht. Wenn das ein Anfänger bei seiner ersten Clan-Homepage macht, kann man darüber ja noch lachen, aber wenn Geld fließt, kann man sich solche Sperenzchen einfach nicht mehr leisten.

Nachtrag 01.11.2010: Besonders schön sind übrigens Kommentare wie //Schutz vor SQL-Injection, die nur wenige Zeilen unterhalb einer anderen gefährdeten SQL-Abfrage kommen. Offenbar ist das Problem grundsätzlich bekannt, aber etwas dagegen tun tut man dann doch nur, wenn man mal Lust darauf hat. Warum nur?


DRM: Immer wieder der gleiche Fehler

29 09 2010

Ich möchte mich gerade in das Thema Pedelecs, also Fahrräder mit elektrischer Trittunterstützung, einarbeiten. Dabei bin ich auf ExtraEnergy.org gestoßen, einen Verein, der scheinbar regelmäßig neutrale und ausführliche Tests macht und veröffentlicht. Die Testergebnisse werden in einem eigenen "Pedelec und E-Bike Magazin" veröffentlich, dessen aktuelle Ausgabe satte 25€ (für 200 Seiten) kostet. Etwas viel für meine aktuelle etwas lose Recherche, da kommt mit die 12,50€ kostende E-Book-Ausgabe also sehr entgegen. Um das abzukürzen: Ich habe weder noch gekauft, obwohl mich der Inhalt mehr oder weniger brennend interessiert. Warum? Ich kann mich nicht durchringen, 25€ für etwas auszugeben, das es auch für 12,50€ gibt (was ich bereits nicht ohne finde), vor allem, weil ich in erster Linie am Inhalt interessiert bin. Die elektronische Version wiederum ist klar weniger Wert, immerhin lese ich Magazine meistens unterwegs, jedenfalls nie am Rechner. Das wäre gemessen am halben Preis OK, ich hatte auch schon den Link zu lulu.com angeklickt und wollte das E-Magazin kaufen.

Doch was musste ich da sehen? DRM-Scheiße der übelsten Sorte: PDF für Adobe Digital Editions Format. DRM, immer wieder DRM. Ich kaufe keine mit DRM vor mir geschützten Inhalte. Punkt. DRM ist eine super Sache für die Vermietung von digitalen Gütern, wobei super Sache hier eher notwendiges Übel bedeutet. Kommt es zum Kauf, ist jedwede DRM-Einschränkung jedoch vollkommen inakzeptabel. Das gilt für Musik, das gilt für Filme, das gilt für E-Books. Ich werde nicht extra ein Programm auf meinen Rechner installieren, nur um meine gekauften Inhalte ansehen zu können. Ich werde nicht akzeptieren, dass ich gekaufte Inhalte nicht weitergeben kann, erst recht nicht, wenn ich nicht alleine recherchiere. Ich werde nicht akzeptieren, dass die Nutzbarkeit meiner gekauften Inhalte in der Zukunft ungewiss ist. Ich habe sogar wegen Sicherheitsbedenken nicht mal mehr den Adobe Reader auf dem Rechner und mit Linux hätte ich sowieso verloren.

Also liebe Leute von ExtraEnergy.org, zur Strafe kaufe ich jetzt weder das eine noch das andere. Sollte es eine E-Book-Ausgabe im reinen PDF-Format geben, bin ich dabei. Vielleicht komme ich auch in einer späteren Recherchephase auf die gedruckte Ausgabe zurück. 25€ sind happig, aber möglicherweise für das Gebotene angemessen, immerhin will gute journalistische Arbeit bezahlt sein. Möglicherweise, denn ich weiß nicht mal, ob mich gute journalistische Arbeit erwartet.


Please put the C in CSS

24 09 2010

Fast immer, wenn ich an Websites arbeite, die andere (Agenturen) verbrochen haben, stolpere ich über mehr oder weniger lästige Eigenheiten der konkreten Implementierung. Dass man TYPO3 auf etliche verschiedene Weisen mit Templates füttern kann, ist ja normal, auch dass es Abweichungen in der Sorgfalt im Umgang mit HTML-Markup und CSS-Code gibt. Aber es gibt Abweichungen im Rahmen des Nachvollziehbaren und solche, die einfach dumm, lästig und ärgerlich sind.

Aktuelles Beispiel: Ich mache zur Zeit einige inhaltliche Änderungen an einer Website, deren CSS-Code sehr eigenartig ist. Die auffälligste Eigenart ist dabei wirklich spaßig: Man hat dem BODY ein text-align: center; gegeben, ohne das bei nächster Gelegenheit, etwa einem Wrapper, wieder zurückzunehmen. Nun könnte einem im weiteren Verlauf auffallen, dass nun alles, aber wirklich alles zentriert wird. Das ist natürlich nicht zu übersehen und vor allem ziemlich lästig. Ich und die meisten anderen Frontend-Entwickler, die ich kenne, würden nun unseren Fehler bemerken und dem Wrapper ein text-align: left; zuweisen, wie es best practice ist. Nicht so der Entwickler dieser Website, denn der gibt der mittleren Content-Box diese Eigenschaft und zudem noch mal allen möglichen anderen Boxen, die nicht zentrieren sollen. Bei der Gelegenheit habe ich mal die style.css geöffnet und staunte nicht schlecht: Fast alle vergebenen Styles sind per ID an verschiedene Content-Boxen drangehängt, so dass beispielsweise eine H2 in Box A gestyled ist, in Box B, C und D und überhaupt anderswo nicht; was wiederum bedeutet, dass sie fast überall zentriert ist (und sonst die Standardeigenschaften des Browsers für H2 hat). Das ist eine Wartungshölle sondergleichen, denn bei jeder Inhaltsänderung, die über den initialen Zustand der Site hinausgeht, muss man den Style anfassen. Letztlich hat man also etwas ähnliches, wie inline-styles, nur eben in eine externe Datei ausgelagert und auf unvorhersehbare Weise mal wirkungsvoll und mal nicht. Die Vorteile der Kaskadierung werden also nicht ausgespielt, die Nachteile aber schon.

Nun wäre es eine Kleinigkeit, das alles zu korrigieren, aber dann schlägt gnadenlos der Nachteil der Kaskadierung zu: Man weiß nicht, welche Seiteneffekte sich bei grundlegenden Änderungen ergeben. Nimmt man etwa die Zentrierung für alles heraus, wird man gar nichts mehr zentriert vorfinden, weil bei absichtlich zentrierten Elementen möglicherweise eine Angabe zur Zentrierung weggelassen wurde, weil sich das ja implizit aus der nicht zurückgestellten Zentrierung des BODYs ergibt. Ohne eine genaue Analyse des Stylesheets und der Seitenstruktur, sowie umfangreiche Tests wird man solche Änderungen also besser nicht machen. Ich halte mich in solchen Fällen einfach an das vorgegebene System und ergänze meine nötigen Styles entsprechend. Das macht es nicht besser, aber wenigstens wird man – ohne daran Schuld zu sein – für jede dieser Änderungen angerufen und bezahlt.

Die ahnungs- oder lustlose CSS-Schluderei ist nur ein Aspekt dieser Website, auch die URLs der Seiten (mit CoolURI gemacht) waren weit entfernt von Sinn und Zweck einer guten URL-Struktur. Die Menüs sind lieblos zusammenkopiert, das Hauptmenü ein manuell erstelltes (und manuell zu pflegendes) Imagemap-Ungetüm, das einen besonders spannenden Nebeneffekt zeigt: Sind Seiten in TYPO3 nicht über zumindest irgendein automatisch erstelltes Menü zu erreichen, kann CoolURI die URL der Seite nicht wissen und wirft eine Fehlerseite. Man muss nun für jede dieser Seiten einen manuellen Eintrag in CoolURI vornehmen und den bei Änderungen auch Pflegen. Besonders lustig ist das, wenn man die URL-Struktur nach umfangreichen Änderungen neu startet und dann das Hauptmenü nicht funktioniert. Falls man eine automatische Sitemap hat, kann die einen immerhin retten. hat man hier aber nicht. Solche Schludrigkeit zieht sich durch das gesamte Projekt und macht erhebliche Mehrarbeit bei der Pflege. Kein Wunder, dass direkt nach Projektabschluss alle Passwörter geändert wurden und die Änderungen bei mir landen. Leider ist das kein Einzelfall, gerade im TYPO3-Kontext treffe ich immer wieder auf haarsträubende Implementierungen. Ob die Agenturen, die immerhin explizit TYPO3 anbieten, zu dumm oder zu faul sind, weiß ich nicht.

Also aufgemerkt: Wenn man jemanden beauftragt, eine Website umzusetzen, gerade bei TYPO3 und anderen komplexen Systemen, achte man auf einen Dienstleister mit Ahnung und Bock. Nur billig billig schnell schnell führt einen zu oft schon mittelfristig aufs Wartungs-Glatteis. Mir ist das recht, wenn ich der Typ bin, der jammern darf und dabei auch noch gut an der Schludrigkeit anderer verdient.


Rauchen in Restaurants

22 09 2010

Kürzlich war ich in der Trattoria/Pizzeria gegenüber, um bestellte Speisen abzuholen. Irgendwas stimmte hier nicht und war doch so vertraut. Zuerst trat nur der Stapel Aschenbecher in mein Unterbewusstsein, der sich auf dem Anrichttisch neben den Servietten und dem Besteck befand. Da ich im Gespräch war, fiel mir erst nach einer Weile auf, dass auch auf den Tischen Aschenbecher standen und überall rauchende Gäste im schummerigen Licht saßen. Moment mal, der ganze Raum war total verqualmt; In einem Restaurant. In dem gegessen wird! Schlimmer noch, in einem Restaurant mit offenem Küchenbereich. Gibt es nicht seit ein paar Jahren so ein Nichtraucherschutzgesetz [PDF], das sich so schön NiSchG NRW abkürzt? Sind da nicht klare Regeln zum Thema Gastronomie und Rauchen kodifiziert? Dürfen die das? Immerhin stehen die (wahrscheinlich) nicht auf S und M oder zerschneiden sich mit Glas.

Nüchtern betrachtet: Nein, das dürfen die keinesfalls. Es gibt eine ausführliche FAQ zum NiSchG NRW, der man allerlei für Menschen umformulierte Ausnahmen entnehmen kann. Der Hauptgastraum eines Restaurants gehört keinesfalls dazu: Das Raucherclub-Schlupfloch gilt nicht und als Eckkneipe geht die Bude auch nicht durch, eine andere der zahlreichen Ausnahmen (Zelte, geschlossene Gesellschaften, Brauchtum etc.) kommen ebenfalls nicht in Betracht. Es gibt noch einen zweiten Gastraum zum Hof hin, der ist kleiner und abgeschlossen und erfüllt somit genau die Regeln für einen Raucherraum, aber ich stand im Hauptraum im Qualm. Raucherräume müssen übrigens immer die kleineren Räume sein, damit niemand auf die Idee kommt, die Abstellkammer zum Hauptraum zu erklären und an der Theke schön rauchen zu lassen.

An der Ecke gibt es noch eine größere Kneipe mit Billard, Kegelbahnen, Sport auf Großbildschirmen und richtiger Speisegastronomie, an der Tür hängt das Raucherclub-Schild und drinnen war es zum WM-Viertelfinale so verqualmt, dass man von der Tür nicht ohne weiteres den ganzen Gastraum erfassen konnte. Ein guter Grund, das Spiel doch zu Hause zu gucken. Auch hier gilt (wegen des Essens), dass es eigentlich keinen Raucherclub geben dürfte. Skandal!!11 In dieser scheiß Straße kann man nirgends hingehen, ohne seine Klamotten nachher zur Reinigung bringen zu müssen. Cafékneipe an anderer Ecke: Ebenfalls Raucherclub, aber immerhin ist Essen hier nur Nebensache. Bei den anderen Läden hier im Kiez (ich hasse dieses Wort) bin ich mir auch nicht sicher.

Fuck off, wieso interessiert es kein Schwein, dass es da eine gesetzliche Regelung für gibt? Nicht, dass ich – mit oder ohne Rauch – gerne in Kneipen rumhängen würde, das konnte ich noch nie leiden, aber manchmal muss man sich dem sozialen Druck beugen und in Kneipen rumhängen. Ganz zu schweigen von schummerigen Restaurants, die ich durchaus gerne mal besuche. Wieso muss ich hinnehmen, dass ich und mein Schlafzimmer nach so einem Besuch wie ein Aschenbecher müffeln? Das Leben ist nicht fair, zum kotzen.

Gerade stelle ich mir das süffisante Gesicht vom militanten Rauchertyp mit der kernigen Stimme vor, was mir eine Ahnung davon verschafft, wieso landauf, landab das NiSchG NRW kommentarlos ignoriert wird: Man wird als Spießer und Pedant dargestellt, wenn man kein Bock auf Qualm hat. Man soll mal die armen Raucher in Ruhe ihr Ding machen lassen und sich nicht anstellen. Wenn man kein Bock auf Kneipe hat, soll man halt zu Hause bleiben, man Pussy. Da kann ich nur eins sagen: Gar keine so schlechte Idee, geht man eben in Läden, die sich an Gesetze halten. Oder man bleibt einfach zu Hause, ist sowieso billiger und man kann ohne vollgequatscht zu werden seinen Joint rauchen. Wobei, das ist auch kacke, weil die Bude dann so stinkt. Das ist bestimmt auch der Grund, wieso viele Leute lieber in Kneipen rauchen. Jetzt verstehe ich auch, wieso das Rauchen in Kneipen so kratzbürstig verteidigt wird: Es ist das letzte Refugium der Raucher, denn zu Hause will man wegen des Gestanks und der ständig notwendigen Renovierungen (und nicht zu vergessen auch des Verlusts der Garantie der teuren Apple-Produkte) gar nicht rauchen. Außerdem kann man zu Hause auch nicht so schön das Enfant terrible geben, indem man anderen völlig selbstverständlich ungehörig auf die Eier geht. Was wir eigentlich brauchen ist kein NiSchG, sondern eine Renaissance der gesellschaftlichen Übereinkunft, dass man seinen Mitmenschen vorzugsweise nicht ungehörig auf die Eier geht. Freie demokratische Grundordnung und so. Es muss wohl ein Ruck durch Deutschlands Gastronomie gehen.

Übrigens apropos Joints: In Holland gilt in einigen Gemeinden striktes Rauchverbot, das sogar bei Coffee Shops keine Ausnahme macht, deren Kernzweck der Konsum von Cannabis ist. Auf den ersten Blick reichlich widersinnig, aber im Grunde leicht und vor allem deutlich gesünder zu lösen: Man raucht das Gras nicht, sonder isst Space-Cookies oder nimmt das THC vaporisiert statt verbrannt zu sich. Davon muss man nicht husten, zieht sich keine giftigen Verbrennungsprodukte rein, es stinkt gar nicht und die Wirkung ist um Größenordnungen effizienter zu erreichen (gemessen an der verbrauchten Menge bei gleicher Wirkung). Nachteil: So ein Vaporisator ist nicht ganz billig in der Anschaffung und die gas- oder akkubetriebenen mobilen Geräte machen mangels präziser Temperaturregelung wohl keinen Spaß. Also sitzt man um so ein stationäres Ding wie um eine Shisha oder befüllt große Ballons und reicht die herum. Stilvoll ist wohl anders, aber da müsste man Experten in Sachen Rauchen und Stil befragen.

P.S. Bei IKEA gibt es neuerdings einen leicht dunkel verglasten Raucherkäfig im Eingangsbereich des Restaurants. Da drin sitzen rundherum sichtbar ein paar Raucher im eigenen Saft und gehen ihrem Laster nach. Das sieht so demütigend aus, dass die einem fast leid tun. Andererseits ist es schon eine befriedigende Vorstellung, das Ziel der Finger von empörten Mamas zu sein, die ihren Amélies und Torbens die Raucher-Outlaws als Musterbeispiel eines keinesfalls erstrebenswerten Lebensstil vorführen; nur um irgendwann enttäuscht festzustellen dass die Kinder irgendwann erst recht die Leute werden, vor denen ihre Eltern sie immer gewarnt haben. Demnächst schminke ich mich KISS-mäßig und stelle mich eine Weile in den Raucherzoo, um mich auch mal kernig und männlich zu fühlen. Schlimm genug, dass mir kein brauchbarer Bart wächst. Vielleicht bin ich dabei sogar nackt, rufe die Republik freier Raucherzoo aus und zu freier Liebe auf. Arrr.


Kurztest: Smartbook Surfer

18 08 2010

Man beachte die zahlreichen Updates am Ende des Artikels.

Vor zwei Wochen ging im Netz die Nachricht um, Marktkauf biete für 179€ das 7" Android-Tablet Smartbook Surfer an. Sogar bis in die News von heise.de hat es das Gerät geschafft. Es war im Online-Shop sofort ausverkauft und der nächste Marktkauf von hier ist in Gelsenkirchen, also legte ich den Gedanken erst mal ad acta. So ein Gerät reizt mich grundsätzlich aber schon, vor allem, weil ich mit Android rumspielen und vor allem ausloten möchte, wofür man sowas produktiv einsetzen könnte. Letzten Donnerstag war im Online-Shop von Marktkauf dann eine kleine Charge verfügbar, also habe ich direkt mal so ein Ding bestellt.

Die übergreifende Fragestellung lautet dabei: Was taugt ein Tablett für 180€? Ich vermutete nichts gutes und um das vorweg zu nehmen: Es taugt wirklich nichts. Ein paar lose Punkte:

  • Das Ding ist unglaublich träge. Alles fühlt sich langsam an, sehr unerquicklich. Ein Leistungsstarker Arbeitsprozessor mit 800MHz soll da laut Packung drin stecken, auf der Website steht Telechips TTC8902 720MHz Prozessor. So oder so, das Ding ist quälend langsam.
  • Der resistive Touchscreen ist eine Unverschämtheit. Davon abgesehen, dass man mitunter sehr viel Druck ausüben muss, um eine Reaktion hervorzurufen, schwankt der nötige Druck auch noch ständig. Manchmal reicht ein jovialer Tipper mit der Fingerkuppe (wie bei meinem HTC Touch HD), manchmal muss man aber wirklich mehrmals so kräftig auf das Display eindrücken, dass man Angst bekommt, seinen Finger auf der anderen Seite wieder zu sehen. Wischen (also vor allem scrollen) wird so zum Glücksspiel, selbst mit dem billig wirkenden und sehr fest im Gehäuse steckenden Plastikstift.
  • Lahmer Prozessor plus hakeliger Touchscreen sind eine schlimme Kombination, die sich vor allem bei der virtuellen Tastatur auswirkt: Es ist unmöglich, auf dem Ding auch nur halbwegs flüssig zu tippen. In den Einstellungenm lässt sich ein leiser Tastenquittungsklick einschalten, der aber genau so unzuverlässig abgespielt wird, wie die Tastendrücke angenommen werden. Um eine Twiter-Nachricht in der TweetDeck Beta zu tippen, brauche ich über eine Minute. Die Texteingabe ist also völlig unbrauchbar. Hatte ich erwähnt, dass man trotz ca. 6mm hoher Tasten und spitzem Eingabestift ständig Tasten aus einer Reihe weiter oben auslöst? Setzen, sechs!
  • Aber das reicht noch nicht an Unpraktikabilität: Die Android-Tasten Menü, Suche, Home und Zurück liegen auf der Rückseite. Das ist OK, wenn man das Ding in der Hand hält, aber selbst dann sind die kleinen Tasten fummelig zu bedienen und man muss sich die Reihenfolge merken. Liegt das Ding auf dem Tisch oder hält man es irgendwie anders, muss man für jeden Klick auf eine der Tasten erst mal fummelig suchen gehen. Super lästig, vor allem, weil man diese Tasten bei Android ständig braucht. Aber auch das reicht noch nicht, denn die schwergängigen Tasten wollen mit viel Gefühl gedrückt werden, was aber auch dann nicht immer auf Anhieb angenommen wird. Fast noch schlimmer als der Touchscreen. Und weil das Ding so träge ist, bemerkt man das Ignorieren den deutlich hörbaren Tastendrucks erst eine Bedenksekunde später.
  • Der dämlichste Designfehler kommt aber noch: Das Gerät lädt nicht über USB, sondern nur mit dem beiliegenden Netzteil m(. Was soll man dazu noch sagen?

Das sind meine Hauptkritikpunkte, aber auch sonst glänzt das Ding nicht sonderlich:

  • Die Verarbeitung ist mäßig, aber für den Preis OK.
  • Die Webcam macht grausige Bilder, das Mikrofon funktionierte in Zusammenhang mit der Fritz!App Fon nicht.
  • Das Display zeigt ein immerhin brauchbares Bild.
  • Die vorinstallierte Skype-Betaversion ist ein schlechter Witz und nutzt zudem nur einen Bruchteil des Bildschirms (wahrscheinlich 320x240 im Querformat oben in der Mitte des 800x480er Displays).
  • Der Audio-Ausgang ist eine 2,5mm Klinke, ohne, dass dafür ein Grund ersichtlich wäre.

Alles in allem ist das Tablet-Computing zum abgewöhnen. Man kann nur hoffen, dass es ein offizielles oder zumindest inoffizielles Android 2.2-Update geben wird, damit zumindest die Geschwindigkeit etwas erhöht wird. Ich glaube aber nicht daran. Immerhin kann das Ding angeblich 1080p-Videos dekodieren und sogar über seinen Mini-HDMI-Ausgang ausgeben. Das wär ja was. GPS gibt es übrigens keins, Lagesensor und Kompass scheinbar ebenfalls nicht.

Fazit: Finger weg vom Smartbook Surfer! Und generell von Android-Tablets mit resistivem Touchscreen und fragwürdigen Prozessoren: Es macht keinen Spaß und ist rausgeschmissenes Geld. Mal schauen, ob ich einen sinnvollen Platz dafür finde.

Dass der Android-Market seit ich das Gerät habe nicht funktioniert ist ärgerlich, aber dafür kann das Gerät wahrscheinlich nichts. Angeblich soll der inzwischen wieder laufen, bei mir ist davon noch nichts zu sehen: Ich starre weiterhin auf ein meine lustigen "Download wird gestartet" Meldungen. Möglicherweise funktioniert der Market auch einfach wegen Nichterfüllung der Hardwareanforderungen (kein Lagesensor, kein Kompass, kein GPS, kein Mobilfunk) gar nicht, das wäre aber sehr komisch, denn er ist installiert und liegt als Verknüpfung auf dem Startbildschirm.

Nachtrag 18.08.2010: Der Android-Market funktioniert bei mir weiterhin nicht. Ich wollte mein Google-Konto entfernen und neu eintragen, vielleicht hilft ja da. Aber dazu müsste man das ganze Gerät in den Auslieferungszustand zurücksetzen, was alle installierten Programme (unklar, ob nur über den Market oder auch direkt installierte) und Einstellungen entfernt. Da ich noch nicht viel gemacht habe und man ohne Market keinen Spaß haben wird, habe ich das in den Datenschutzeinstellungen versucht. Und siehe da: Nicht mal das klappt. Sprich: ich kann die Einstellungen und mein verknüpftes Google-Konto nicht mal loswerden, weil diese essentielle Funktion beim Smartbook Surfer schlicht nicht funktioniert. Aaaaah!

Noch ein Nachtrag vom 18.08.2010: Der Zugang zum Android Market funktioniert tatsächlich schlicht nicht, obwohl er vorinstalliert ist. Man kann den Zugang mit Tricks freischalten, aber Spaß ist anders. Eine tolle Quelle für solcherlei Informationen findet sich hier.. Dort steht auch, dass der Prozessor nur mit 600MHz arbeitet.

Nachtrag 08.09.2010: In der aktuellen c't ist ein Kurztest vom Smartbook Surfer, dessen Beobachtungen sich frappierend mit meinen decken. Ich habe also keine Ausnahme mit kaputtem Touchscreen, das ist serienmäßig. In der Zwischenzeit habe ich mal den Support kontakiert, vor allem wegen des nicht zurücksetzen können Problems. Selbstverständlich habe ich nach der Eingangsbestätigung am 18.08.2010 keine weitere Antwort mehr bekommen.

Nachtrag 19.09.2010: Inzwischen gab es mehrere Systemupdates, die man auf der Website von Smartbook herunterladen kann. Mit etwas bastlerischem Geschick lässt sich das leicht flashen. Es gibt nun eine Kalibrierung für den Touchscreen, wodurch man immerhin nicht mehr ständig gnadenlos daneben tippt. Auch gibt es nun Lautstärkeregler in der Statuszeile. Leider habe ich erst nach der langwierigen Freischaltprozedur für den Android Market (hier beschrieben, in Kürze: Man verschafft sich Rootrechte, richtet einen Shell-Autostart ein, installiert das Android SDK, spielt dort ein system.img aus fragwürdiger Quelle ein und generiert darin eine Google-Market-ID, liest diese aus und überträgt sie in das Surfer) bemerkt, dass das aktuelle Image den Android Market gar nicht mehr mitbringt. Sehr witzig, wenn auch nachvollziehbar. Ich habe jetzt die Market-App von Pdassi installiert.

Nachtrag 05.10.2010: Falls sich jemand auch mal von dem Gerät desillusionieren lassen möchte, kann er meins gerne kaufen. Ich habe keine Lust auf größere Verluste und mache lieber einen teuren Bilderrahmen daraus, als es für zu billig wegzugeben. Wer also Lust hat, 150€ inkl. Versand (Originalpreis war 180€ zzgl. Versand, ernsthaft benutzt habe ich es nicht) auf den Tisch zu legen, kann das Smartbook Surfer in der Marktkauf-Edition mit Packung, allem Zubehör und der aktuellen Firmware 1.3 haben. Natürlich ist das Gerät wie hier beschrieben auf den Werkszustand zurückgesetzt, gerootet ist es offensichtlich ebenfalls noch. Also falls jemand Interesse haben sollte und angemessen leidensfähig ist: Meine Kontaktdaten findet ihr auf der Kontaktseite.

Nachtrag 24.10.2011: Nachdem das Ding jetzt seit ca. einem Jahr neben mir auf dem Schreibtisch gelegen und mir schlechte Laune gemacht hat, habe ich es doch noch mal zur Hand genommen und siehe da: Dass es zwei oder drei mal vom Schreibtisch gefallen ist, hat ihm nicht gut getan, denn der Touchscreen funktioniert jetzt nur noch im rechten Drittel. Falls es also jemand geschenkt haben will, um daran rumzubasteln, einfach melden.

Nachtrag 19.11.2011: Es hat sich tatsächlich jemand gemeldet, der in erster Linie am Netzteil interessiert ist. Habe ihm kurzerhand das ganze Scheißding in ein Paket geworfen und zugeschickt. Endlich kann ich das Ding vergessen.