[Logo]

Archive for the ‘OpenSource’ Category

Paxle Suchframework released

Donnerstag, April 16th, 2009

Paxle ist ein komplettes, modulares Suchframework auf OSGi-Basis, bei dem alle funktionalen Komponenten sauber voneinander getrennt sind und deshalb einzeln ersetzt werden können. Metasuchfähigkeit ist über die Definition mehrerer Suchprovider möglich.
Zusätzlich zur Anbindung externer Quellen enthält Paxle auch einen Suchprovider der eine durch Crawling des Internets erzeugte lokale Datenbank auf dem Computer des Nutzers abfragt. Die Datenbankerstellung ist ebenfalls von Paxle abgedeckt, allerdings lassen sich auch andere DBs mit Paxle betreiben.
Paxle hat eine wenig restriktive Lizenz und ist Open-Source-Software im Sinne der OSI und FSF.

picpaste.py – fast image uploading

Sonntag, Februar 8th, 2009

picpaste.de is a nice website for posting images online. It stores images up to 2 weeks without access, and it provides a delete link, so the image can be removed before the chosen time.

With picpaste.py (markup) you can upload an image real fast: Just type “picpaste.py /path/to/image.jpg” on the commandline. you will get the image-link and the deletion-link on standard output, and if xclip is installed, the image-link is copied to the clipboard.

The MultipartPostHandler library is LGPL licensed, the main script can be used under the terms of the WTFPL.

Gästebuch mit Django

Montag, August 25th, 2008

Da sich kein Code für ein einfaches Gästebuch für das Django-Webframework finden ließ, habe ich selber eines geschrieben. Wer auch noch ein Gästebuch für seine Django-Seite sucht, wird hier fündig:

Django Snippet 1003: simple guestbook

[UPDATE] Tracksbacks und Kommentare wegen Spam gesperrt. Feedback ist bei Django Snippets ja auch möglich.

KDE 4.1 in Debian – leider noch “experimental”

Donnerstag, Juli 31st, 2008

Heute mal getestet, weil die Features für mich fast ausreichend die von KDE 3.5.9 ersetzen, aber

  • nervende Kleinigkeit: Paneleinträge sind zentriert, man kann den freien Platz also nicht aufteilen sodass links und Rechts Icons sind, und dazwischen frei.
  • Akregator crasht nach kurzer Zeit, reproduzierbar
  • kwin crasht manchmal
  • Kleinigkeit: Plasma Objekte zu resizen geht stockend, und mit einer beidseitigen Größenänderung statt wie man erwartet von der Seite des Resize-Icons aus.
  • Seitliche Panels gehen noch nicht
  • Panelbreite kann nitcht geändert werden

Postiv fällt vor allem das Desktop-Plasmoid auf, welches genial ist, sowie die Desktopeffekte die sofern es gerade gut läuft anscheinend schlanker als Compiz daherkommen. Außerdem natürlich Programme wie marble(mit OpenStreetmap!) und andere neue KDE-Programme.

Bislang bin ich jetzt wieder auf KDE 3.5.9 und nutze die neuen Programme noch unter altem KDE und warte mal auf Debian Pakete die sich nicht direkt schon “experimental” nennen ;) .

Firefox für Privatssphäre tunen

Donnerstag, Juli 24th, 2008

Firefox hat in seinen Standard-Einstellungen einige Funktionen aktiviert, die der Privatssphäre nicht unbedingt zuträglich sind. Hier sollen die wichtigsten Einstellungen erwähnt werden um die Situation zu verbessern:

  • Cookies
  • “Supercookies” (DOM-Storage)
  • Prefetch
  • Flash-Cookies
  • Browserkennung
  • Referer
  • Web Keywords (Google)
  • Suchvorschläge
  • Pings senden
  • Einen Filter-Proxy nutzen

about:config

Viele Einstellungen werden über “about:config” geändert. Dazu gibt man in der URL-Zeile einfach “about:config” ein, und drückt Enter. Danach bekommt man eventuell eine Warnung, dass man mit about:config auch manches kaputt konfigurieren kann, die man bestätigen muss bevor man Einstellungen ändern kann. Dann sieht man eine lange Liste mit Einstellungen und oben eine Textbox die es ermöglicht in den Einstellungen zu suchen.

Wenn man die gewünschte Einstellung gefunden hat, kann sie durch Doppelklick verändert werden. Einige Einstellungen sind in einer Standard-Konfiguration nicht enthalten (wie zum Beispiel general.useragent.override), und müssen durch Rechtsklick in die Liste und die Funktion neu->String bzw. neu->integer oder neu->boolean erstellt werden. String heißt hierbei Text (also z.B. für den Useragent), Integer ist eine Ganzzahl, und Boolean ein Wahr/Falsch Wert.

Cookies

Funktion

Cookies ermöglichen es, dass Webseiten kleine Textstücke auf dem Computer des Benutzers speichern können. Dies wird z.B. dazu genutzt, einen Warenkorb beim Online-Einkauf anbieten zu können. Oft wird nur eine Identifiktionsnummer im Cookie gespeichert, und die eigentlichen Daten sind unter dieser Nummer beim Seitenbetreiber abgespeichert.

Problem

Das Problem an Cookies wie sie bei einer Standardinstallation von Firefox akzeptiert werden ist, dass beliebige Webseiten Informationen sehr lange beim Nutzer speichern können. So kann eine Webseite zum Beispiel dem Nutzer beim ersten Besuch eine Nummer geben, mit welcher der Nutzer bei jedem weiterem Besuch wiedererkannt werden kann.

Beispiel

Google-Cookies überstehen 2 Jahre ohne Google-Besuch. Und das ist eine kurze Zeit, denn bis vor kurzem waren Google-Cookies bis zum Jahr 2038 gültig.

Abhilfe

Im Firefox Einstellungsdialog können Cookies auf “deaktiviert” oder “nur für die Sitzung speichern”(Empfehlung) gestellt werden. Für Seiten bei denen man tatsächlich gerne automatisch wiedererkannt werden möchte (Login bei Foren, etc.) ermöglicht die Ausnahmen-Liste eine Whitelist(Positivliste) für Cookies, die dauerhaft gespeichert werden sollen.

nützliche Extension

CS Lite ermöglicht es Cookies nur temporär zuzulassen, und kompfortabel die White- und Blacklist zu verwalten.

Dom-Storage

Funktion

Wie Cookies, allerdings können mehr Informationen gespeichert werden. Bisher ist mir keine Seite mit sinnvollem Nutzen bekannt

Problem

Wie bei Cookies, nur kann man die “Supercookies” nicht über die normalen Einstellungen löschen.

Abhilfe

in about:config den Wert “dom.storage.enabled” auf “false” ändern.

Prefetch

Funktion

Seit Version 2 lädt firefox Links mit dem Attribut rel=”next” und rel=”prefetch” automatisch beim Besuch der Seite, welche die Links enthält nach. Das reduziert die Ladezeit wenn man die nächste Seite besucht, und erhöht die Ladezeit für die Seite mit den Links.

Problem

Man taucht in den Log-Dateien von Seiten auf, die man gar nicht besucht hat.

Abhilfe

in about:config den Wert “network.prefetch-next” auf “false” setzen.

nützliche Extension

Fasterfox erlaubt es Prefetch an- und auszuschalten.

Flash-Cookies

Auch Flash-Applets können “Cookies” setzen, mit den gleichen Funktionen / Problemen wie bei DOM-Storage, da die Flash-Cookies nicht so einfach zu löschen sind.

Abhilfe

Auf der Adobe-Seite gibt es das Global Storage Settings Panel, welches es ermöglicht den Speicherplatz den jedes Flash zur Verfügung hat auf “keinen” zu begrenzen.

Browserkennung

Jeder Browser sendet eine Browserkennung im “User-Agent” Feld mit. Wenn man eine exotischere Version des Firefox (z.B. Debian Iceweasel) hat, ist man darüber leichter wiedererkennbar. Im Gegensatz zu Cookies ist zwar auch eine seltene User-Agent Kennung nicht sehr eindeutig, aber wer lieber in der Masse untergehen möchte, kann in about:config die Eigenschaft “general.useragent.override” ändern z.B. auf

  • Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15
  • Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1
  • Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
  • Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
  • Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

nützliche Extension

Der UserAgent Switcher ermöglicht das schnelle wechseln der Browserkennung.

Referer

Funktion

Die meisten Browser senden beim Laden einer Seite die URL der vorher besuchten Seite mit. Das ermöglicht den Seitenbetreiben Statistiken, von wo ihre Besucher kommen, und manche Seiten nutzen die Information um andere Seiten daran zu hindern ihre Bilder einzubinden (Hot-Linking).

Problem

Man verrät dem Seitenbetreiber von welcher Seite man auf seine kommt. Bei manchen Webmailern können in der Referer-URL auch private Daten stehen, und manche URLs enthalten sogar Zugangsdaten (“login.php?user=benutzername&password=meingeheimespasswort”).

Abhilfe

In den about:config Einstellungen gibt es die Option “network.http.sendRefererHeader“. Ein Wert von “2″ heißt, dass bei eingebundenen Bildern und bei besuchten Seiten ein Referer übertragen wird. “1″ sorgt dafür, dass nur bei Seiten die vorherige URL übertragen wird, nicht aber bei Bildern. “0“(Empfehlung) deaktiviert den Referer ganz.

nützliche Extension

RefControl ermöglicht es eine Black- und eine Whitelist zu verwalten, und das Standardverhalten anzupassen. Außerdem gibt es die Funktion die URL der gerade besuchten Seite statt der vorher besuchten Seite zu übertragen um Seiten die ohne Referer z.B. keine Bilder anzeigen auszutricksen.

Web Keywords

Funktion

Wenn man in die URL-Zeile einfach ein Wort eingibt und Enter drückt, wird automatisch eine Googlesuche gestartet.

Problem

Bei Tippfehlern landet man automatisch in einer Googlesuche, und Google erfährt welche Seite man besuchten wollte. Zusammen mit dem Google-Cookie kann Google so durch Tippfehler ein Profil der Seiten die man besucht anfertigen.

Abhilfe

In about:config die Eigenschaft “keyword.enabled” auf “false” ändern. Danach wird automatisch “falscheseite.com” probiert wenn man “falscheseite” eingibt. Um auch dieses Verhalten abzustellen ändert man noch “browser.fixup.alternate.enabled” auf “false”.

Suchvorschläge

Funktion

Die Suchbox generiert seit Firefox 2 automatisch Suchwort-Vorschläge, sobald man anfängt zu tippen.

Problem

Man startet ohne es zu wollen schon bevor man Enter drückt verschiedene Websuchen bei der gerade eingestellten Suchmaschine. Ändert man erst nach der Eingabe die Suchmaschine, hat man trotzdem schon bei der vorher aktiven gesucht.

Abhilfe

Auf das Suchmaschinen Symbol klicken, und am unterem Ende der Liste auf “Suchmaschinen verwalten”. In dem dann erscheinenden Dialog kann man die Suchvorschläge deaktivieren.

Pings senden

Funktion

Viele Seiten möchten wissen, auf welche externen Links der User geklickt hat. Dazu gibt es in Firefox das “ping”-Attribut bei Links, welches beim Klick im Hintergrund noch eine weitere Seite lädt, die der Seite die den Link gesetzt hat verrät dass der User geklickt hat.

Problem

Es geht den Seitenbetreiber nichts an, welche externen Links man besucht

Abhilfe

in about:config setzt man den Wert “browser.send_pings” auf “false”

Filter-Proxy nutzen

Noch mehr Kontrolle kann man erhalten, wenn man Firefox mit einem Proxy der Header und Inhalt filtern kann nutzt. Ein solcher Proxy ist zum Beispiel Privoxy, welcher auch gute Regeln um Werbung zu blockieren enthält. Hier auf die genaue Konfiguration einzugehen würde den Rahmen sprengen, aber auf der Privoxy-Homepage gibt es ein umfangreiches (englisches) Handbuch.

Weitere nützliche Extensions

  • AdblockPlus blockiert nicht nur Werbung, sondern kann auch dazu genutzt werden Scripts von Google Analytics und andere Usertracking Techniken zu blockieren.
  • NoScript deaktiviert Javascript komplett, und ermöglicht es einzelne Seiten temporär freizuschalten, und eine Whitelist mit Seiten die immer Javascript nutzen können sollen zu verwalten. Das erhöht die Sicherheit, und blockiert Google Analytics, LayerAds und ähnliches ohne weiteres Zutun.
  • Mit CustomizeGoogle kann man einige Google Funktionen ändern.

Nützliche Seiten

Private Daten entfernen

Neben den hier behandelten Einstellungen, die der Privatssphäre nicht zuträglich sind, enthält Firefox aber auch gute Funktionen um private Daten zu löschen:

Alle privaten Daten auf einmal

Im Extras Menu findet man die Funktion “private Daten entfernen”, mit der man Cookies, Verlauf, in Formulare Eingetragene Daten und Cache gleichzeitig löschen kann. Nicht entfernt werden Flash-Cookies.

In den Einstellungen unter “Privatssphäre” kann man einstellen, dass private Daten beim Beenden von Firefox automatisch (oder nach Rückfrage) entfernt werden sollen.

Cookies

Im Einstellungsdialog auf der “Privatssphäre” Seite zunächst auf “Cookies anzeigen” klicken und dann hat man dort die Möglichkeit alle Cookies zu löschen oder einzelne zu entfernen. Hier sieht man auch, welche Seiten alle Cookies gesetzt haben. Cookies von Seiten die man nicht bewusst besucht hat stammen oft von Werbebannern, welche Cookies setzen.

Weitere Tipps?

Falls noch jemand weitere nützliche Tipps kennt, postet sie einfach als Kommentar.

nilfs2: Ein log-structured file system für Linux

Montag, März 24th, 2008

Achtung: Dies ist ein Artikel für technisch Interessierte, die bereits mit der Linux-Shell umgehen können und wissen was sie tun.
Alle anderen sollten lieber eines der Standard-Dateisysteme wie ext3, xfs oder ReiserFS verwenden, die bereits im Linux-Kernel enthalten sind.

Nilfs2 ist ein log-structured file system. Das heißt, dass Daten bei bearbeitung nicht überschrieben werden, sondern an eine andere Stelle geschrieben werden, sodass das Original erhalten bleibt.

Ähnlich wie bei Journalling Dateisystemen führt dies dazu, dass im Falle eines Ausfalls keine Daten nur halb geschrieben sind. Aber auch nach der Schreiboperation bleibt der alte Zustand erhalten, und kann zum Beispiel genutzt werden um gelöschte Dateien wiederherzustellen.
Dazu nutzt Nilfs2 Checkpoints und Snapshots. Bearbeitet man Dateien, erstellt Nilfs2 ca. alle 30 Sekunden einen Checkpoint, welcher in der Standardeinstellung nach einer Stunde gelöscht wird. Möchte man einen Checkpoint dauerhaft behalten, kann man ihn in einen Snapshot umwandeln, welcher nicht automatisch gelöscht wird.

(weiterlesen…)

TrueCrypt 5.0

Mittwoch, Februar 6th, 2008

Truecrypt 5.0 ist freigegeben worden.

Statt wie bisher nur Container oder Daten-Partitionen kann jetzt die Windows-Systemplatte komplett verschlüsselt werden, wobei dann beim Start ein Passwort erforderlich ist. Das beugt z.B. einem Austauschen von TrueCrypt auf der Bootplatte mit dem Ziel Passwörter mitzuschneiden vor. Da hilft auch ein heimlicher Offline-Trojanereinsatz nicht gegen.

TrueCrypt unterstützt sogenannte Hidden Volumes, welche in einem normalem Volume sein können, oder nicht. Dadurch dass sich nicht nachweisen lässt ob eines enthalten ist, könnte sich ein Nutzer der zur Passwortübergabe gezwungen wird herausreden er hätte kein Hidden Volume genutzt. Das Konzept an sich ist eine gute Idee, ich halte es jedoch aus den Folgenden Gründen für nicht ganz unkritisch:

  • In einem Rechtsstaat ist es ein gutes Recht eine verschlüsselte Partition zu haben, ohne irgendein Passwort rauszurücken.
  • Rechnet tatsächlich jemand mit Beugehaft, Folter oder ähnlichem, sollte er bei einer Software in der etwas wie “hidden Volumes” möglich ist besser auch ein hidden Volume haben, da der Folterknecht sicher solange foltert bis er zwei Passwörter bekommt.
  • Die meisten die ein Hidden Volume haben werden bei einer Folter sowieso schnell beide Passwörter rausrücken, wer keins hat wird eventuell deswegen länger als “nötig” gefoltert.
  • Die wenigsten werden im äußerem Container realistische Daten haben, sondern z.B.:
    • 50 MB Dateien in 100 GB Container.
    • Timestamp der Dateien mehrere Monate alt, obwohl das Volume gestern noch genutzt wurde.
    • Daten sehen nicht schützenswert aus (da der Nutzer diese ja pflegt um sie freimütig herauszurücken)

Der letzte Punkt zeigt natürlich, dass man gerade auch unwichtige Dateien verschlüsseln sollte, damit nicht jeder der Verschlüsslung braucht damit auffällt. Davon abgesehen gehören auch unwichtige Dinge zur Privatssphäre: Auch wenn man mir aus meinen E-Mails keinen Strick drehen kann, möchte ich dennoch wissen, dass nur ich sie lesen kann.

Eine Möglichkeit Hidden-Volumes so zu gestalten, dass keiner weiß ob er schon alle Passwörter kennt wäre Verschachtelung zu ermöglichen. Dann weiß ein Angreifer nicht, ob das 2. Hidden-Volume schon das innerste ist, oder ob noch weitere genutzt wurden.

In dem Sinne: TrueCrypt (5.0) ist eine tolle Sache, gerade weil es eine Software ist die wirklich jeder bedienen kann.

Flow: Brainfuck in 2D mit Threads

Donnerstag, Januar 24th, 2008

Brainfuck ist eine Programmiersprache, die eher als Scherz zu verstehen ist, oder um zu zeigen dass eine Programmiersprache mit 8 Befehlen schon alles berechnen kann. Das Konzept wird erweitert durch PATH, welches 2-dimensionalen Code ermöglicht mit Spiegeln und mit bedingten Übergängen eine explizite Schleifensyntax überflüssig macht.

Doch ein Konzept fehlt auch noch in PATH: Threads. Um diese Lücke mit einer weiteren verspielten Programmiersprache zu schließen habe ich Flow geschrieben, welches ich heute als OpenSource online gestellt habe.

Die Idee ist, dass der Instruction-Pointer fließendes Wasser ist, welches sich an Verzweigungen teilt. Eine Verzweigung entsteht ähnlich wie in PATH durch 2-dimensionalen Code. Auch Flow kann auf explizite Schleifen verzichten, und nutzt dazu statt des “nächste Anweisung ignorieren”-Zeichens von PATH ein Konzept auf Ventilen und Schleusen. Eine Schleife entsteht also durch schleifenförmigen Quelltext.
Die Threads sind nicht als tatsächliche Threads implementiert, sondern als eine Schleife über die momentanen Zustände, sodass das Verhalten des Programms immer gleich ist (wichtig für gemeinsam genutzte Daten in verschiedenen “Threads”).

Das Release enthält eine noch recht kurze deutsche Dokumentation. Eine Homepage, englische Dokumentation und mehr Beispiele kommen später dazu.

Tagmindr – Erinnerungen per RSS

Freitag, Oktober 12th, 2007

Mit Tagmindr gibt es jetzt die Möglichkeit del.icio.us-Bookmarks mit Datum zu versehen, an dem man erinnert werden möchte. Dazu abboniert man einen speziellen Tagmindr-Feed, und tagged die Bookmarks mit “tagmindr, remind:yyyy-mm-dd”.

Für alle die ihre Bookmarks nicht gerne zentral lagern und Scuttle nutzen gibt es hier einen Patch der das für Scuttle implementiert.
Zu patchende Datei: services/bookmarksservice.php

Patch1 (Markup)
Patch2 (Markup)

Patch1 implementiert das mit 2 Zeilen Code, indem einfach wenn nur das Tag “tagmindr” vorhanden ist der inhalt von $cat auf “tagmindr, remind:yyyy-mm-dd” erweitert wird, wobei yyyy-mm-dd das aktuelle Datum ist.

Patch2 setzt beim Tagparsing an, und ermöglicht auch wiederkehrende Termine (momentan mm-dd und dd). Erweiterbar ist es mit jedem Output der php date-Funktion. Ich bin mir aber nicht sicher, ob das so 100% korrekt funktioniert. Also ist Patch1 die sicherere Variante.

Danach einfach wie bei Tagmindr taggen, z.b. “tagmindr, remind:2007-10-13″.


Browser raten und E-Tag “Cookies”

Sonntag, September 23rd, 2007

Der Quelltext für die “HTTP-Spielereien” auf laxu.de ist jetzt verfügbar:

  • UserAgent Guesser: Errät den Browser trotz falscher UserAgent-Angabe
  • E-Tag Cookies: Nutzt den E-Tag Header um eine eindeutige ID im Browser-Cache zu speichern.

Der Useragent-Guesser versucht anhand typischer HTTP-Header unabhängig von der “Useragent”-Angabe zu erraten was für ein Client gerade zugreift. Klappt leider nicht immer, und die ganzen if-Abfragen sollten auf Dauer durch ein Spamassissin-ähnliches Regelsystem abgelöst werden. Der Googlebot wird momentan z.B. falsch erkannt:

“Useragent guesser. Your browser claims to be: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) Probably your browser is: Safari …”

Die E-Tag-Seite setzt den HTTP-Header “E-Tag” mit einer zufälligen ID. Mozilla-Browser speichern diese ID zusammen mit der gecachten Seite, um festzustellen ob der Cache aktuell ist. Daher wird die ID bei jedem Request übertragen, und kann so wieder ausgelesen und Cookie-Ersatz missbraucht werden. Die meisten anderen Browser unterstützen das Feld nicht, und sind daher nicht betroffen.

Beide Demos stehen unter freien Lizenzen. Der UserAgent-Guesser steht unter BSDL, der E-Tag Code ist aufgrund seiner Kürze public domain(frei verwendbar).