Wer überwacht die Überwacher?

6. November 2007 um 00:47 Keine Kommentare

Ein Artikel in Telepolis beschert der Aktion Ãœberwach! eine Menge Besucher und Aufmerksamkeit. Webseitenbetreiber können ein Stück HTML-Code auf ihre Seiten einbinden, durch das diese dabein helfen können, das Seitenbesuche aus deutschen Ministerien aufgezeichnet werden – und so den Volksvertretern Vorratsdatenspeicherung und Ãœberwachungsstaat am eigenen Leibe näherbringen (ich hoffe, sowas lässt sich auch auf EU-Ebene machen, dort werden noch üblere Pläne zur Totalüberwachung ausgeheckt).

Leider hat die Aktionen einen Geburtsfehler, die bereits bei dataloo diskutiert wird: Es lassen sich grundsätzlich alle Seitenbesucher überwachen – weshalb ich mich bislang nicht am Datensammeln beteilige. Stattdessen habe ich mal wieder meine angestaubten PHP-Kenntnisse hervorgekramt und eine Serverseitige Vorfilterung gebastelt.

Dazu muss erstens die Liste der Verdächtigen und zweitens der grüne Überwach-Button auf den eigenen Server gezogen werden.

Anschließend baut euch in eure PHP-Anwendung folgende Funktion ein:

function verdaechtig ($remoteip) {

function ip2hex($ip) { // Normalisiert eine IP-Adresse in 8-Byte-Zeichenkette
    if (preg_match('/(\d+)\.(\d+)\.(\d+)\.(\d+)/', $ip, $match)) {
        for ($i=1; $i< =4; $i++)  {
            $hex .= sprintf("%02X",$match[$i]);
        }
    }
    return $hex;
}

function jsonstring($value) { // JSON fuer PHP < 5.2.0
    static $jsr = array(array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'),
           array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"'));
    return '"' . str_replace($jsr[0], $jsr[1], $value) . '"';
}

$iphex = ip2hex($remoteip);

$handle = fopen ("verdaechtige.csv","r"); // IP-Liste einlesen
while ( ($data = fgetcsv ($handle, 1000, ";")) !== FALSE ) {
    $ips = explode('-',$data[0]);
    if ($iphex < ip2hex($ips[0]) || $iphex > ip2hex($ips[1])) continue;
    return '{"ip":' . jsonstring($remoteip) . ',"name":' . jsonstring($data[1])
         . ',"url":' . jsonstring($data[2]) . '}';
}
fclose ($handle);
return "{}";
}

Die PHP-Funktion verdaeechtig liefert ein JSON-Objekt zurück, dessen Felder „ip“, „name“ und „url“ gesetzt werden, falls die übergebene IP in einen der vorgegebenen Bereiche fällt. Das ganze kann dann beispielsweise folgendermaßen eingebunden werden

<script type='text/javascript'><!--
< ?php print "var ministerium = " . verdaechtig($_SERVER['REMOTE_ADDR']) . ";"; ?>
if (ministerium.ip) {
    document.writeln('<a href="http://www.uberwach.de/"><img src="http://www.uberwach.de/wanze?'+escape(window.location)+'" alt="Aktion UBERWACH!" width="80" height="15" border="0" /></a>');
   // Hier ggf. weitere Befehle
   // alert("Vielen Dank, dass sie Vorratsdatenspeicherung unterstützen!");
}//--><script>

Sicherlich lässt sich das noch vereinfachen und so beschreiben, dass es eher verständlich wird. Ein fertiges WordPress-Plugin o.Ä. wäre vielleicht hilfreich. Wem also die Aktion Überwach! nicht gut genug ist, der sollte sich selber an einer Verbesserung versuchen, alle anderen können auch den auf der Projektseite beschriebenen Weg der Beteiligung wählen.

No Comments yet »

RSS feed for comments on this post. TrackBack URI

Sorry, the comment form is closed at this time.