Zum Website-Fingerprinting

Es vergeht ja kaum ein Tag, an dem ich nicht irgendwelchen Hokuspokus zum Thema Privatsphäre im Internet lesen muss – und irgendwelche Maßnahmen, mit deren Hilfe die Surfer doch noch irgendwie in Profile gepackt werden sollen. So machen jetzt auch Leute ordentlich Datamining in den Datenpaketen aus dem Tor- und JAP-Netzwerk, und es gelingt ihnen wirklich – obwohl sie natürlich kein einziges Byte der Kommunikation entschlüsselt kriegen – Surfer allein über die aufgerufenen Websites individuell zu identifizieren.

In der Tat, das kann klappen – man hat ja Interessen, die man verfolgt. Neben den Gegenmaßnahmen, die Golem da anpreist…

Wer seine IP-Adresse häufig ändert und nach jeder Änderung andere Webseiten ansteuert, senkt die Trefferquote der Analysesoftware. Eine weitere Schutzmöglichkeit besteht darin, verschiedene Proxys für verschiedene Aktivitäten zu verwenden.

…fällt mir ganz spontan noch eine weitere ein: Gebt diesen Profilerstellern doch jede Menge Daten, damit sie auch etwas zum Analysieren haben!

Es reicht wohl erstmal hin, wenn ein nennenswerter Anteil des Traffics aus völlig zufällig ausgewählten Websites besteht. Und damit es auch wirklich schön zufällig ist, kann man ruhig dem Computer die Auswahl überlassen.

Auf meinem Debian habe ich zum Beispiel eine hübsche Wörterbuchdatei, die aus über 300.000 Wörtern besteht. Ideal, um eines davon zufällig auszuwählen, es als Suchbegriff für Google zu verwenden und zufällig fünf Links aus dem Suchergebnis auszuwählen und anzusurfen.

Zum Glück beim Umsetzen dieser einfachen Idee ist fast alles fertig, was ich dafür brauche – unixoide Systeme sind ja nicht gerade arm an nützlichen, kleinen Tools. Für die Google-Suche und das Ansurfen der gefundenen Websites nehme ich meinen für viele derartige Aufgaben unentbehrlichen lynx, und das Extrahieren des gewünschten Wortes lässt sich sehr bequem mit dem ollen sed erledigen.

Das Skript habe ich aus Bequemlichkeit schnell in Perl gehäckselt – es wäre auch als Shellskript möglich gewesen, aber etwas schwieriger:

#!/usr/bin/perl
# -*- coding: utf-8 -*-
########################################################################
#
# randsurf.pl
# Automatisiertes zufälliges Surfen
#
# Voraussetzungen:
# - lynx
# - Übliche Unix-Utilites wie wc und sed
#
# Das hat beides jeder, der ein richtiges Betriebssystem hat.
#
########################################################################
#
# Elias Schwerdtfeger, http://www.tamagothi.de/
# Lizenziert unter Piratenlizenz - licensed under the terms of the 
# pirates' license - SHARE AND ENJOY, BUT DON'T SUE ME!
#
########################################################################

use strict;
use warnings;


# Eine Datei mit einer Wortliste, jede Zeile ein Wort. Hier kann 
# natürlich auch eine eigene Datei verwendet werden.

my $wordfile = '/usr/share/dict/words';


# Ermitteln eines zufälligen Wortes aus der Datei. Alles, was man
# dafür braucht, hat ja schon das freundliche Betriebssystem, wenns
# denn kein Winhose ist.

my $wordcount = `wc -l $wordfile`;
$wordcount =~ s/[^0-9]//g;
my $randindex = int(rand($wordcount)) + 1;
my $randword = `sed -n ${randindex}p $wordfile`;


# So, jetzt machen wir damit eine Guhgell-Suche

my $p = `lynx -dump -listonly -nonumbers 'http://www.google.com/search?q=$randword'`;
my @lines = split /\n/, $p;


# Alles, was kein Link ist oder was ein Link auf Guhgell ist, wird
# entfernt.

@lines = grep(/^http\:/, @lines);
@lines = grep(!/google/, @lines);


# @lines ist jetzt ein Array mit den URLs, die Google als Suchergebnis
# ausgespuckt hat. Nehmen wir doch mal fünf willkürliche URLs raus und
# surfen die an

my $nlines = int(@lines);
for (my $i = 0; $i < $nlines; ++$i)
{
    my $j = int(rand($nlines));
    my $tmp = $lines[$i];
    $lines[$i] = $lines[$j];
    $lines[$j] = $tmp;
}
my $maxsurf = $nlines > 5 ? 5 : $nlines;
for (my $i = 0; $i < $maxsurf; ++$i)
{
    my $forget = `lynx -dump -nolist '${lines[$i]}'`;
    # Wer sehen will, was er da angesurft hat, könnte es ausgeben
    # print "$forget\n\n";
    # Damit es realistischer aussieht, könnten wir Pausen machen...
    # sleep(rand(30)+rand(30)+30);
}

# Wer jetzt noch Lust darauf hat, der kann dieses einfache Verfahren
# erheblich verbessern, etwa durch das Versenden obskurer Referer...
# Have fun!

Eine Anpassung an individuelle Wünsche ist schnell gemacht, wenn man ein wenig Perl kann. Wer regelmäßig mit Tor unterwegs ist und nicht getrackt werden möchte, wird sich dieses Skript vielleicht in die crontab schreiben wollen, um es in regelmäßigen Abständen aufzurufen. Dabei empfiehlt sich dann noch ein bisschen »Verwürfelung«, damit dies nicht zu allzu auffälligen und leicht filterbaren Mustern führt. Wenn man es jede Minute aufruft, sollte vielleicht ein…

exit if(rand(10) > 8);

…an den Anfang gesetzt werden, damit es im Schnitt nur jedes fünfte Mal ausgeführt wird. Und dass der Aufruf immer zur vollen Minute erfolgt, kann auch verräterisch sein, lässt sich aber durch ein schlichtes…

sleep(rand(60));

…am Anfang des Skriptes wirksam verhindern. Jeder, der kurz darüber nachdenkt, wird selbst auf weitere Verbesserungen kommen.

Sollen die doch mal ihr Profiling mit lauter zufällig angesurften Websites machen, in denen die »Nutzinformation« erst einmal gesucht und ausgefiltert werden muss! Wer dann richtig kreativ wird, denkt sich bestimmt auch etwas aus, um die Nutzinformation dünner zu machen – zum Beispiel ist die einseitige Benutzung von Google zum Ermittlen von zufälligen Websites eine echte Schwachstelle in diesem Skript, die es Untersuchern leicht macht. Und der Lynx sollte ruhig seinen User-Agent ändern.

Wer keine Lust hat, das kleine Skript übers Clipboard zu transportieren: Hier ist der Download.

Eher für »normale« Menschen gedacht und problemlos unter Windows laufend ist übrigens das Firefox-Plugin »Track Me Not«, dass ebenfalls eine Reihe sinnloser Suchen erzeugt.

Abschließende Anmerkung: Mir geht dieses ganze User-Tracking und überhaupt jede Bestrebung zur Totalüberwachung an allen möglichen und unmöglichen Stellen sowas von auf den Keks! Dass hier die Interessen von repressiven Staaten und von Marketingärschen in die gleiche Richtung gehen, ist ein gutes Spiegelbild, dass diese beiden Gruppen den gleichen Allheitsanspruch und Kontrollwahn haben – und sich gefälligst zur Hölle scheren sollen.

Veröffentlicht unter Technisches | Verschlagwortet mit , , , , , | Schreib einen Kommentar

In diesem Jahr…

In diesem Jahr wird es nichts mehr mit dem Album »Temple of Void«, dass ich Anfang des Jahres für dieses Jahr angekündigt hatte. Ich wurde leider durch etliche (und für die Darlegung im Internet völlig ungeeignete) Umstände herausgerissen und komme einfach nicht wieder herein – es kann gut sein, dass es gar nichts mehr wird. Ein paar kleine Vorabs habe ich ja an anderer Stelle gestreut, damit lasse ich es vielleicht auch gut sein.

Denn in meinem Notizbuch haben sich ganz andere Ideen breit gemacht, von »La Martienne nue«, der Nackten vom Mars bis hin zum Tschernobyl im Dreivierteltakt. Und auch, wie das Ergebnis heißen könnte, ist mir schon ins Notizbuch gefallen, als ich die aussichtslose Tristesse im Elchkeller in Worten festzuhalten versuchte: Vomitron. Vielleicht wird das Cover ungefähr so aussehen (erster Entwurf, der mir halbwegs gefällt, und das lasse ich dann meist auch so):

Geplantes Cover für Vomitron

Aber wann es fertig sein könnte, deute ich lieber nicht an – das hat sich nicht bewährt. Weder bei »Schwarzer Nasser Schmerz«, das geschlagene zwei Jahre länger als geplant dauerte und mich am Ende doch nicht zufriedenstellte, noch bei »Temple of Void«. Und das Cover wird am Ende vermutlich auch völlig anders aussehen.

Also: Viele Worte und nichts Wesentliches gesagt. Wer mag, kann dazu sagen: Wie immer… 😉

Veröffentlicht unter Musik | Verschlagwortet mit , , , | Schreib einen Kommentar

Das sinnloseste Programm der Welt

Wenn mich jemand fragte, was wohl das sinnloseste Programm der Welt ist, denn wäre meine frisch als Beta 0.4 veröffentlichte Virtuelle Zockhalle schon ein ganz guter Kandidat…

Vielleicht gefällt es ja jemanden.

Wenn nicht, ist das auch nicht weiter schlimm.

Veröffentlicht unter Technisches | Schreib einen Kommentar

Spammafia

Ich wurde in der Vergangenheit immer wieder einmal für ein Wort kritisiert, dass ich gelegentlich in Unser täglich Spam verwendete. Es handelte sich um das Wort »Spammafia«, das einigen Lesern wohl als unpassend erschien. Dies wohl auch, weil sie keine Vorstellung von der organisierten Kriminalität haben, die hinter einem Großteil des Spamaufkommens steht – es handelt sich mitnichten um eine ziellose Tätigkeit irgendwelcher hirnloser, soziopathischer Milchbubis, sondern um ein kriminelles Milliardengeschäft, das mit großem Aufwand betrieben wird. Mit der Spam wird nicht gespaßt.

Wer einen Eindruck davon bekommen möchte, wie übel die Strukturen hinter der Spam wirklich sind, der sollte einmal beim Antispam e.V. weiterlesen.

Dass endlich mal wieder eines von diesen kriminellen Netzwerken geschlossen wurde, macht ein bisschen Hoffnung. Aber der Ausblick am Ende des Textes, dieser Ausblick nach China… zum Gruseln. Es wird wohl auch in Zukunft nur eines geben, was gegen Spam hilft: Wenn niemand mehr auf eine Spam so reagiert, wie es der Spammer wünscht.

Veröffentlicht unter Bloggen | Verschlagwortet mit , , , , | Schreib einen Kommentar

Wpcmd 0.4 beta

Mein kleines Kommandozeilen-Programm für das Bloggen in WordPress-Blogs benutze ich jetzt ja doch schon etwas länger, und zumindest für mich hat es sich so sehr bewährt, dass ich in den letzten Monaten keine Wünsche nach zusätzlichen Features hatte. Das, wofür ich das Programm ursprünglich geschrieben habe, erledigt es ausgesprochen gut – ich kann meine Blogpostings in meinem Lieblingseditor schreiben und bequem mit meiner Lieblingsshell an die verschiedenen Blogs senden, die ich so befülle. Und natürlich nehme ich dabei auch eine Menge kleiner, neckischer Automatisierungen vor. Wie meine zwei Handvoll Leser jeden Tag sehen, funktioniert das alles recht gut…

Das heißt aber nicht, dass ich nicht im Laufe der Zeit die eine oder andere kleine Verbesserung daran vorgenommen hätte. Und diese ganzen kleinen Verbesserungen läppern sich im Laufe eines Jahres doch zusammen – die Veröffentlichung der letzten Alpha ist schon wieder fast ein Jahr her. Da ich sehe, dass das kleine Progrämmchen doch hin und wieder einmal heruntergeladen wird, finde ich es nur angemessen, hier eine aktualisierte Version zum Download anzubieten.

Deshalb habe ich mich einmal daran gesetzt, meine verschiedenen Änderungen – so weit sie auch für andere sinnvoll sein könnten – in eine neue Veröffentlichung einzupflegen. (Vielleicht sollte ich mit meinen wechselnden Arbeitsplätzen einmal einen Subversion-Server aufsetzen, um mir solche Handarbeit zu ersparen. Der Weg zur Hölle soll übrigens mit guten Vorsätzen gepflastert sein.) Die dabei entstandene Version stelle ich hier zum freien Download zur Verfügung.

Download-Link: Wpcmd 0.4 beta

Das Programm ist unter GNU GPL, Version 2 (oder auf ihren Wunsch: jede spätere Version) lizenziert.

Änderungen

  • Es ist jetzt möglich, eine Zeile zu veröffentlichen, die mit einem # beginnt, wenn in der Datei ## geschrieben wird. So schön ich es beim Schreiben finde, wenn ich mir private Notizen in Kommentaren machen kann, diese Einschränkung hat mich das eine ums andere Mal zur Weißglut gebracht. Das einfache # am Zeilenanfang markiert weiterhin einen Kommentar, der nicht ins Blogposting übernommen wird.
  • Um das von wpcmd verwendete Passwort zu ändern, muss man nicht mehr die Konfigurationsdatei bearbeiten. Das ich da nicht gleich dran gedacht habe, war einfach nur ein bisschen schlafmützig.
  • Ach ja: Passworteingaben sind nicht mehr auf dem Bildschirm sichtbar.
  • Wenn es beim Hochladen einer Datei oder beim Veröffentlichen eines Postings zu einem Fehler kommt – etwa wegen eines instabilen Netzwerkes, massiver DNS-Probleme oder einem Timeout – denn führt das nicht mehr zu einem sofortigen Fehler, sondern es wird drei Mal versucht, ehe der Vorgang abgebrochen wird.
  • Das mitgelieferte Beispielskript ist vorsichtig an die von mir verwendete Version angepasst worden und archiviert jetzt auch automatisch hochgeladene Dateien.
  • Mir wurde einige Male berichtet, dass es Probleme beim Einsatz mit Python 3.0 gibt. In der Tat, an einer Stelle hatte ich einen Flüchtigkeitsfehler beim Versuch gemacht, das Skript auch unter Python 3.0 lauffähig zu machen. Hoffentlich war das der einzige derartige Fehler. Python kann wirklich unangenehm sein, und 3.0 ist nur teilweise zu älteren Versionen kompatibel.
  • Einige mehr interne Änderungen, die aus Anwendersicht unsichtbar sein sollten, erwähne ich gar nicht weiter.

Natürlich ist die Dokumentation im Paket enthalten; sowohl eine man-page als auch eine einfach zu verstehende Einführung im HTML-Format in deutscher wie in englischer Sprache. Die Installation auf unixoiden Systemen ist mithilfe des beigefügten Makefiles sehr einfach, für andere Betrübssysteme kann ich jedoch keine Hilfe geben.

Veröffentlicht unter Download | Verschlagwortet mit , | Schreib einen Kommentar