Archiv der Kategorie: Computerkram

Nutch und Solr einrichten

Wer selber Suchmaschinenbetreiber werden und dem Großen G Konkurrenz machen will, kann das mit dem Webcrawler Nutch und dem Suchserver Solr tun. Leider ist das Tutorial von Nutch nicht ganz so deutlich, enthält ein paar unnötig komplizierte Sachen und zudem in einer nicht ganz logischen Reihenfolge.

Das hier gezeigte Vorgehen wurde mit Ubuntu 16.04 getestet, sollte aber genau so mit anderen Linuxen oder macOS funktionieren.

Unter Windows laufen die Nutch-Skripte nicht. Da das eigentliche Nutch selbst aber genau wie Solr in Java implementiert ist, ließe sich das mit Cygwin lösen. Die Frage ist nur, ob man das auch will…

Für die Beispiele wird davon ausgegangen, dass sich Nutch im Verzeichnis „apache-nutch-1.14“ und Solr im Verzeichnis „solr-6.6.3“ jeweils direkt unterhalb des Home-Verzeichnisses befinden.

Wer möchte, kann das Nutch-Tutorial parallel öffnen. Ich orientiere mich hier am Stand des Tutorials vom Mai 2018 und weise jeweils auf Stellen im Tutorial hin.

1. Voraussetzungen: Java und Solr

Siehe Abschnitt Requirements im Tutorial.

Nutch 1.14 setzt Java voraus. Von mir wurde Nutch mit Java 1.8 getestet.

Ant ist nicht nötig, wenn Nutch als Binary geladen und nicht selbst kompiliert werden soll.

Damit Nutch die gecrawlten Webseiten direkt zum Indexieren an Solr weiterreichen kann, muss die passende Solr-Version laufen. Nutch 1.14 läuft mit Solr 6.6

Die Installation von Solr ist denkbar einfach, es ist lediglich ein Archiv herunterzuladen und zu entpacken.

(Im Tutorial wird Solr erst später erwähnt, es ist meiner Ansicht nach aber empfehlenswert, schon an dieser Stelle Solr zum Laufen zu bringen und zu testen.)

2. Nutch herunterladen

Siehe Option 1 im Abschnitt Install Nutch im Tutorial.

Die Installation von Nutch läuft erst mal fast genau so: Downloaden von http://nutch.apache.org/ und in ein Verzeichnis nach Wahl entpacken.

Siehe nun Verify your Nutch installation im Tutorial.

Aus dem Nutch-Verzeichnis heraus sollte jetzt ein „bin/nutch“ schon funktionieren und Nutch sollte zumindest mal ein Lebenszeichen von sich geben.

Wenn Nutch wie oben angegeben ins Verzeichnis „apache-nutch-1.14“ entpackt wurde, sind folgende Befehle einzugeben:

cd apache-nutch-1.14/
bin/nutch

Es sollte eine Meldung erscheinen, die die möglichen Nutch-Kommandos auflistet.

Achtung: An der /etc/hosts herumzufummeln, wie es im Tutorial steht, sollte im allgemeinen nicht notwendig sein!

3. JAVA_HOME setzen

Wir sind immer noch bei Verify your Nutch installation im Tutorial.

Möglicherweise ist die Umgebungsvariable JAVA_HOME nicht gesetzt. Ob das so ist, erfährt man durch Eingabe von

echo $JAVA_HOME

Wenn nichts ausgegeben wird, war JAVA_HOME nicht gesetzt. Dann ist unter Ubuntu (oder Debian) folgendes zu tun:

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

Damit beim nächsten Neustart des Terminals die JAVA_HOME gleich gesetzt ist, empfiehlt es sich, diese Zeile ans Ende der .bashrc im Home-Verzeichnis anzufügen:

cd

echo 'export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")' >> .bashrc

Unter macOS setzt man die JAVA_HOME wie folgt auf den korrekten Wert (Achtung, die Angabe im Nutch-Tutorial stimmt für neuere macOS-Versionen nicht!):

export JAVA_HOME=$(/usr/libexec/java_home)

Bei macOS würde man die JAVA_HOME wohl eher in der .profile setzen:

cd

echo 'export JAVA_HOME=$(/usr/libexec/java_home)' >> .profile

4. Crawler-Properties

Wir sind im Tutorial nun bei Customize your crawl properties.

Der Crawler meldet sich bei den Web-Server, die gecrawlt werden, mit seinem Namen. Es ist aber standardmäßig nichts voreingestellt. Ohne dass wir hier etwas konfigurieren, verweigert Nutch seinen Dienst.

In die Datei apache-nutch-1.14/conf/nutch-site.xml muss folgendes rein (der fette Teil ist neu):

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
<name>http.agent.name</name>
<value>Der Test Nutch Spider</value>
</property>
</configuration>

Statt „Der Test Nutch Spider“ sollte man natürlich selber irgendeinen Namen wählen.

5. Solr konfigurieren

Wir überspringen einiges im Tutorial und gehen nun direkt zu Setup Solr for search.

Im Tutorial wird als zu Nutch 1.14 zugehörig die Version Solr 6.6.0 angegeben. Im Test funktionierte es aber auch mit 6.6.3. Mit Solr 7 dagegen könnte es Probleme geben.

Die von Nutch gecrawlten Webseiten sollen in einen eigenen Solr-Core. Zum Setup des Schemas für diesen Core nehmen wir die Standard-Beispielkonfiguration von Solr und kombinieren sie mit einer schema.xml, die von Nutch geliefert wird.

Die Schritte im einzelnen:

1. Das Configset basic_configs kopieren und neu nutch nennen.

2. Die managed_schema im Configset nutch löschen.

3. Die schema.xml von Nutch ins neue Configset nutch kopieren.

4. Solr starten

5. Einen neuen Core unter Verwendung des soeben erstellen Configsets einrichten.

Die Befehle dazu:

cd
cd solr-6.6.3/
cd server/solr/configsets/

cp -r basic_configs nutch

cd nutch/conf

rm managed-schema

cd

cp apache-nutch-1.14/conf/schema.xml solr-6.6.3/server/solr/configsets/nutch/

cd solr-6.6.3/

bin/solr start

bin/solr create -c nutch -d server/solr/configsets/nutch/conf/

6. Nutch klar machen zum Crawlen

Wir springen nun im Tutorial zurück zu „Create a URL seed list„.

Wenn man das Web crawlen will, muss man irgendwo anfangen. Diese Startseiten kommen in die Seed List.

Den Teil des Tutorials, wie man an eine schöne Seed List kommt, in dem man z.B. eine Liste von Webseiten von dmoz herunterlädt, ignorieren wir hier mal, wir machen das von Hand und setzen unsere Lieblingswebseite als Startpunkt.

Die Schritte im einzelnen:

1. Unterhalb von apache-nutch-1.14 ein Verzeichnis urls anlegen

2. Darin eine Datei seed.txt anlegen und da drin einfach eine Liste von URLs eintragen.

Konkret:

cd

cd apache-nutch-1.14/

mkdir urls

cd urls

echo 'http://hs-furtwangen.de/' > seed.txt

Jedenfalls sollte man das so machen, wenn die Webseite der Hochschule Furtwangen die Lieblingswebseite ist.

Den Regex-URL-Filter (siehe Tutorial) lassen wir so er ist. Wir müssten den ändern, wenn wir z.B. nur die Unterseiten einer Homepage crawlen und indexieren wollen, ohne externe Links zu verfolgen.

Den ganzen Abschnitt „Using Individual Commands“ überspringen wir mal getrost. Die Befehle, die dort stehen, sind zwar schön, wenn man mal sehen will, was im einzelnen passiert, aber zu kompliziert.

7. Crawl starten!

Wir gehen im Tutorial direkt zu Using the crawl script.

Den Aufruf des Crawl-Skripts ist im Tutorial erklärt, aber wir können selber das Skript von einem eigenen Skript aus starten, das direkt schon die gewünschten Parameter enthält. 🙂

Ich gehe hier davon aus, dass, wie hier im Beispiel, der Solr-Server auf dem selben Rechner läuft, der Core nutch heißt und die Seed-Liste dort liegt, wo wir sie in Schritt 4 gerade angelegt haben. Außerdem sind hier jetzt mal 50 Iterationen eingestellt. Das ist viel! Man kann den Crawl-Vorgang aber ruhig zwischendurch abbrechen.

cd

cd apache-nutch-1.14/

echo 'bin/crawl -i -D solr.server.url=http://localhost:8983/solr/nutch -s urls crawl 50' >> crawl.sh

chmod +x crawl.sh

./crawl.sh

8. Die Ergebnisse begutachten

Schon während der Crawl läuft, können wir in der Admin-Oberfläche von Solr den Index abfragen. Spätestens jetzt empfiehlt es sich, sich mit dem Schema des neuen Cores vertraut zu machen, um anschließend ein schönes Frontend programmieren zu können.

Viel Spaß!

@ oder die rechte und die linke Hand des Teufels

Normalerweise ist es auch bei einer Mac-Tastatur völlig egal, ob man die linke oder die rechte alt-Taste (beim Mac auch option-Taste) verwendet.

Böse Falle: Hat man ein Ubuntu-Linux in Parallels laufen, wird die linke alt-Taste das Menü der jeweiligen Anwendung öffnen, nur mit der rechten alt-Taste kann man zum Beispiel das @-Symbol (alt+L) eingeben.

Aber Vorsicht: Während das bei der internen Tastatur eines MacBook gilt, sieht es bei externen Tastaturen schon wieder anders aus und es kann sein, dass es dort genau andersherum ist…

Das MySQL-Kuriositätenkabinett

Zusammengesetzte Fremdschlüssel

Zusammengesetzte Primärschlüssel kommen in der Datenbankwelt allerorten vor, z.B. in Beziehungstabellen. Zusammengesetzte Fremdschlüssel sind seltener, werden aber naturgemäß gebraucht, wenn auf eine Tabelle mit zusammengesetztem Primärschlüssel referenziert werden soll.

Die Syntax für die Erstellung von zusammengesetzten Fremdschlüsseln ist analog zu zusammengesetzten Primärschlüsseln.

Gegeben seien beispielhaft die folgenden Tabellen:

CREATE TABLE `raum` (
 `Buchstabe` char(1) NOT NULL,
 `RaumNr` decimal(3,2) NOT NULL,
 PRIMARY KEY (`Buchstabe`,`RaumNr`)
);

CREATE TABLE `findetstatt` (
 `Nr` int(11) DEFAULT NULL,
 `Belegnr` int(11) DEFAULT NULL,
 `Abk` varchar(5) DEFAULT NULL,
 `RaumNr` decimal(3,2) DEFAULT NULL,
 `Buchstabe` char(1) DEFAULT NULL
);

Ein zusammengesetzter Fremdschlüssel, der von von „findetstatt“ auf „raum“ verweist, wird nun erstellt mit:

alter table findetstatt add foreign key(buchstabe, raumnr) references raum(buchstabe,raumnr);

Falle: Error 1215

Zu beachten ist, dass die Reihenfolge, in der die Spalten des Fremdschlüssels angegeben werden, der Reihenfolge entsprechen muss wie sie in der Definition des Primärschlüssels, auf den sich der Fremdschlüssel bezieht, angegeben ist. Wird dies nicht beachtet, quittiert MySQL das mit einer nichtssagenden Fehlermeldung.

mysql> alter table findetstatt add foreign key(raumnr,buchstabe) references raum(raumnr,buchstabe);
ERROR 1215 (HY000): Cannot add foreign key constraint

Das gleiche passiert, wenn man auf die Idee kommt, nur die Spalte „RaumNr“ mit einem Fremdschlüssel-Constraint zu belegen, da sich dieser dann auf den zweiten Teil des Primärschlüssels in der Tabelle „raum“ bezieht:

mysql> alter table findetstatt add foreign key(raumnr) references raum(raumnr);
ERROR 1215 (HY000): Cannot add foreign key constraint

Wird nur der erste Teil eines mehrteiligen Primärschlüssels referenziert, ist das problemlos möglich, z.B.:

alter table findetstatt add foreign key(buchstabe) references raum(buchstabe);

 

Riesige Text- oder XML-Dateien zerteilen mit Python

Manchmal ist es einfacher, große Datenmengen nicht auf einmal zu verarbeiten, sondern sie zuerst in kleine Stücke zu zerteilen. Ein Beispiel, das eine Teilung notwendig macht, ist das Umwandeln von XML mit XSLT, das bei sehr großen Dateien zu viel Speicher beansprucht.

Das Unix-Kommando split kann große Textdateien in kleine zerlegen, aber für manche Anwendungsfälle wie die Teilung von sehr großen XML-Dateien ist das nicht ausreichend. Es gelten dabei folgende Anforderungen:

  • Die Trennung darf nur an bestimmten Stellen erfolgen (d.h. zumeist hinter bestimmten schließenden XML-Tags).
  • Aber nicht an jeder dieser möglichen Trennstellen muss auch tatsächlich getrennt werden.
  • Ein Header/Footer (mit äußeren XML-Tags) muss in jedem Teil erhalten bleiben bzw. kopiert werden.

Das split-Kommando ist dafür zu unflexibel, da es entweder nach einer bestimmten Anzahl Zeilen oder an definierten Trennstellen teilt, aber keine Kombination aus beidem zulässt und außerdem die automatische Übernahme von Kopf- und Fußzeilen nicht zulässt.

Folgendes Python-Skript erledigt den Job (getestet mit Python 3.6):

Riesige Text- oder XML-Dateien zerteilen mit Python weiterlesen

Solr Highlighting geht nicht?

Offenbar war ich zu doof, Solr mit einem ganz einfachen Beispiel zu bedienen, deswegen für mich (und vielleicht für andere, die sich auch für zu doof halten) eine kleine Notiz, was zu tun ist, wenn das Highlighting (in meinem Fall in Solr 6.6.0) zwar im „techproducts“-Beispiel wunderbar funktioniert, mit einem eigenen Korpus aber nicht:

Wenn man eigene Dokumente importiert und sich dabei auf die Standardkonfiguration und darauf, dass die Felder automatisch angelegt werden, verlässt, sind der Field Type für diese Felder möglicherweise auf „StrField“ (anstatt auf „TextField“) und die Optionen auf „Omit Term Frequencies & Positions“ (was für alles außer Text Standard ist) gesetzt. Die Suche an sich funktioniert dann ganz normal, ein bei der Query eingeschaltetes Highlighting liefert dann in der Antwort zwar eine Highlighting-Sektion, aber nur mit den IDs, ohne Text mit Hervorhebungen.

Mögliche Lösung: Die Felder, für die später Highlighting funktionieren soll, von Hand anlegen (geht auch im Admin-Interface unter Schema / Add Field) und dabei auf den korrekten Field Type und darauf, dass die Omit-Options nicht aktiv sind, achten. Eventuell sollte man in Betracht ziehen, die Optionen termPositions=true und termOffsets=true zu aktivieren. Siehe dazu die SchemaXml-Doku.

Bei der Abfrage ist dann hl=on und hl.fl=[Der Name des eben angelegten Feldes] anzugeben. Das kann man bei Bedarf auch in der solrconfig.xml aufnehmen, wenn es dauerhaft aktiv sein soll.

Manchmal (!) klappt das Highlighting auch nur, wenn in der Query nicht einfach nur q=Suchbegriffe, sondern ausdrücklich q=[Feldname:Suchbegriffe] angegeben ist. Da bin ich mir jetzt aber wirklich nicht sicher, ob das nicht doch ein Bug ist.

Datenbanken, Teil 2: Das Entity-Relationship-Modell

Im ersten Teil der Serie haben wir festgestellt, dass der Einsatz von Datenbanken eine gute Sache ist, da sich der Entwickler nicht mehr mit den Grundfunktionen der Datenspeicherung befassen muss. Allerdings konnten wir auch schon erkennen, dass eine sinnvolle Datenmodellierung essenziell ist. Oder anders gesagt:

One does not simply create a database

Bevor ein sinnvoller Datenbankentwurf beginnen kann, ist es zunächst entscheidend, sich über den Ausschnitt der realen Welt, der abgebildet werden soll, im Klaren zu sein. Dazu empfiehlt sich das von Peter Chen 1976 vorgestellte Entity-Relationship-Modell, das Entitäten, also Dinge der realen Welt, ihre Eigenschaften und Beziehungen zwischen diesen beschreibt. In diesem Artikel werden wir uns mit den Grundlagen dieses Modells beschäftigen. Im Lehrbuch von Kemper und Eickler wird das Entity-Relationship-Modell in Kapitel 2 besprochen.

Da die eigentliche Datenspeicherung in den gängigen DBMS allerdings nach dem relationalen Modell, also in Tabellenform, erfolgt, müssen wir uns auch damit beschäftigen, wie man ein Entity-Relationship-Modell in das relationale Modell umwandelt. Dies ist in vielen Fällen recht umkompliziert und führt zu guten Datenbankschemata, die die im ersten Artikel der Serie beleuchteten Probleme wie Redundanzen nicht aufweisen.

Datenbanken, Teil 2: Das Entity-Relationship-Modell weiterlesen

Datenbanken, Teil 1

tl;dr

Datenbanken sind toll, weil sie die Grundaufgaben der Datenspeicherung übernehmen und man sich nicht mehr selber darum kümmern muss.

Datenbanken

Seit einiger Zeit unterrichte ich an der Hochschule Furtwangen im Studiengang Wirtschaftsinformatik das Fach Datenbanken. Im Laufe der Zeit ist dabei einiges an Vorlesungsmaterial, Übungsaufgaben und Notizen zu Eigenheiten von Software angefallen. Auch ein Podcast war dabei. Bisher war mein Material aber nur hochschulöffentlich. Außerdem gibt es bisher – außer den Slides – noch kein Skript zu meiner Vorlesung. Zeit, das alles mal zu ändern und die Notizen zu meiner Vorlesung in Form zu bringen und bei der Gelegenheit ins Blog zu stellen.

Aber ganz zu Anfang gilt es erst mal zu klären, warum man sich denn überhaupt mit Datenbanken befassen sollte. Oder anders gesagt:

Databases – Y U no use simple text file?

Um diese Frage zu klären, schauen wir uns ein – scheinbar – einfaches Beispiel an: eine Adressliste. Was kann da schon schiefgehen?

Datenbanken, Teil 1 weiterlesen

MySQL auf dem Mac: Systemdatenbank weg?

Heute wurde ich im Datenbanken-Praktikum auf dem Rechner eines Studenten mit einer MySQL-Installation konfrontiert, deren System-Datenbank (d.h. die Datenbank „mysql“) einfach mal verschwunden war. Diese Datenbank enthält unter anderem die Einstellungen für die Berechtigungen der Benutzer. Das ist recht ungünstig, denn der Server startet dann natürlich auch nicht mehr. Dass die fehlende System-Datenbank dafür der Grund ist, erfährt man nur durch Anschauen der Error-Logs, die im „data“-Verzeichnis der Installation (auf dem Mac normalerweise /usr/local/mysql/data) liegen. In diesem Verzeichnis fehlt dann auch das Unterverzeichnis „mysql“.

Als einfachster Weg, die Installation wieder zum Laufen zu bekommen und evtl. vorhandene Nutzdaten zu retten, erwies sich folgender:

  1. Das data-Verzeichnis umbenennen
  2. MySQL neu initialisieren, ab Version 5.7.6 mit:
    sudo mysqld_safe --initialize
  3. Wenn hier ein von der Intialisierung zufällig gesetztes root-Passwort angezeigt wird, so ist das unbedingt zu notieren. Es muss dann, wie bei einer Neuinstallation auch, beim ersten normalen Login geändert werden. Sollte zwar ein Passwort zufällig gesetzt, aber nicht angezeigt werden (war merkwürdigerweise bei mir so), muss evtl. anschließend die Prozedur zum Zurücksetzen des Passworts durchgeführt werden.
  4. Durch die Neuinitialisierung wurde ein neues data-Verzeichnis angelegt. Der Inhalt des alten data-Verzeichnisses kann nun ins neue kopiert werden.
  5. Der Server sollte sich jetzt wieder normal starten lassen.

Wenn der Rest des data-Verzeichnisses unbeschädigt war und wirklich nur die mysql-Datenbank gefehlt hat, sollten die anderen Datenbanken wieder in Ordnung sein.

MySQL auf dem Mac: FAQs

Die Systemvariable PATH setzen

Will man am Terminal nicht jedes Mal den vollständigen Pfad angeben, wenn man den MySQL-Client startet, muss man die Systemvariable PATH setzen. Dies geht, wenn man in der Datei „.profile“ (man beachte den Punkt am Anfang!) die Zeile „export PATH=/usr/local/mysql/bin:$PATH“ einfügt. Dies geht am Terminal am einfachsten mit folgendem Befehl:

echo "export PATH=/usr/local/mysql/bin:$PATH" >> .profile

Anschließend das Terminal komplett schließen und neu starten, damit die Änderung aktiv wird.

Einen Dump einer Datenbank erstellen

Eigentlich total easy. Im Terminal eingeben:

mysqldump -u root -p NameDerDatenbank > NameDerDatei.sql

Man muss natürlich nicht unbedingt den root-User benutzen, wenn man auch andere Datenbank-User mit den passenden Berechtigungen hat. Wenn für den Benutzer kein Passwort vergeben wurde, muss man das „-p“ weglassen.

Das root-Passwort von MySQL zurücksetzen

Weil es bei meinen Datenbank-Studierenden immer mal wieder nötig ist:

  1. MySQL-Server stoppen
  2. Terminal öffnen
  3. Folgende Befehle eingeben, um den MySQL-Server neu zu starten mit der Option, sämtliche Zugriffsrechte zu ignorieren. Dies benötigt die Eingabe des Mac-Admin-Passworts.
    sudo mysqld_safe --skip-grant-tables
  4. Ein zweites Terminal öffnen und mysql starten. Einloggen bei MySQL als root braucht nun kein Passwort mehr!
    mysql -u root
  5. An der MySQL-Befehlszeile:
    mysql> flush privileges;
    Query OK, 0 rows affected (0,01 sec)
    
    mysql> alter user 'root'@'localhost' identified by '';
    Query OK, 0 rows affected (0,00 sec)
    
    mysql> flush privileges;
    Query OK, 0 rows affected (0,00 sec)
    
    mysql> quit
    Bye

    Das Passwort ist nun zurückgesetzt. Es kann natürlich in den Anführungszeichen bei „identified by“ statt einem leeren Passwort ein neues Passwort eingesetzt werden.

  6. Wieder am Terminal sollte man nun den MySQL-Server, der mit „–skip-grant-tables“ gestartet wurde, wieder beenden:
    sudo killall mysqld
  7. Dann über die Systemeinstellungen den MySQL-Server wieder normal starten.
  8. Fertig!

Nach macOS-Update: Rechner herunterfahren dauert ewig?

Wenn nach einem Update des Betriebssystems der Rechner ewig zum Herunterfahren braucht, könnte das daran liegen, dass beim Update-Prozess manchmal (?) die Rechte des mysql-Verzeichnisses verstellt werden. Dann kann man folgendes tun:

  1. Das „data“-Verzeichnis aus dem MySQL-Verzeichnis (normalerweise /usr/local/mysql) an einen sicheren Ort kopieren.
  2. MySQL neu installieren. Das ist wohl der einfachste Weg, um die Rechte wieder korrekt zu bekommen.
  3. Das gesicherte data-Verzeichnis wieder an die selbe Stelle in das MySQL-Verzeichnis der Neuinstallation kopieren.

Von der Unsinnigkeit, die Webcam abzukleben

Immer wieder sehe ich an Laptops in meinem Umkreis abgeklebte Webcams. Und ich frage mich dann jedes Mal, was das eigentlich soll.

Haare schön?
Haare schön?

Liebe Leser mit abgeklebter Webcam:

Habt Ihr denn auch Euer Mikrofon abgeklemmt?

Vermutlich nicht, denn dafür ist wohl bei den meisten Laptops nötig, das Gehäuse zu öffnen. Glaubt Ihr ernsthaft, dass sich ein Angreifer die Mühe macht, Eure Kamera anzuzapfen, nur um herauszufinden, was für ein T-Shirt Ihr heute an habt, ob die Frisur sitzt und der Bart gestutzt ist? Lauschen, was gesprochen wird, ist doch viel interessanter! Und glaubt Ihr, dass der Angreifer dann noch den Zusatzaufwand investiert, die LED der Kamera auszuschalten, wo doch das Mikrofon eine solche LED gar nicht erst hat? Aber eigentlich ist das egal, denn noch viel spannender als das Mikrofon dürften für einen Angreifer sowieso die eingetippten Passwörter oder die auf dem Rechner gespeicherten Daten sein.

Ernsthaft, wenn jemand schon mal so weitgehenden Zugriff auf Euren Rechner hat, dass er oder sie in der Position ist, Eure Kamera anzuzapfen, dann ist die Kamera Euer kleinstes Problem!

Das echte Horrorszenario!

Nehmen wir mal folgendes an: Ihr seid in einem öffentlichen, unverschlüsselten WLAN eingeloggt. Ihr gebt Euer Passwort in einem Internet-Forum ein. Weil dieses Forum eigentlich nicht so wichtig ist, achtet Ihr nicht darauf, ob die Zugangsdaten verschlüsselt übermittelt wurden. Jetzt kann ein Angreifer mit Wireshark ganz locker Euer Passwort mitschneiden. Blöd jetzt, wenn Ihr für Euren E-Mail-Account fast das gleiche Passwort habt.

Seid Ihr Euch eigentlich darüber im Klaren, was alles möglich ist, wenn jemand Zugriff auf Euer Mail-Konto hat? Viele Online-Dienste bieten die Möglichkeit, über die Mail-Adresse das Passwort zurückzusetzen. Wenn also jemand Zugriff auf Euer E-Mail-Konto hat, hat er auch Zugriff auf praktisch alle anderen Accounts von Euch, einschließlich des Zugangs zum Cloud-Speicher, in dem Eure Bikini-Fotos vom letzten Strandurlaub liegen. Wer braucht da noch den Zugang zur Webcam, wo Ihr vor dem Rechner doch meistens vollständig bekleidet seid? Für all das reicht übrigens ein rein passiver Angriff, der somit völlig unbemerkt vonstatten geht! Nicht gerade eine beruhigende Vorstellung.

Sichert Eure Rechner!

Vergebt sichere Passwörter für Eure E-Mail-Accounts und achtet darauf, dass Ihr diese Passwörter nur über TLS-gesicherte Verbindungen verschickt! Passt auf, wenn Ihr in öffentlichen WLANs unterwegs seid! Und ganz allgemein: Sichert Eure Rechner, in dem Ihr nicht jedem Mist installiert und blind überall drauf klickt!

Aber die Massenüberwachung…!?

Natürlich ist seit Snowden nun wirklich jedem klar, dass Geheimdienste Massenüberwachung betreiben. Aber wie sinnvoll ist es vor diesem Hintergrund, die eigene Webcam abzukleben?

Für Massenüberwachung eignen sich weder Mikrofon noch Webcam, da zum Zugriff darauf der Rechner individuell angegriffen werden müsste. Das ist ein Aufwand, der zur flächendeckenden Überwachung auch für Geheimdienste viel zu groß ist. E-Mails und Chatnachrichten massenhaft abzusaugen, ist dagegen völlig unbemerkt möglich.

Um sich gegen flächendeckende Überwachung zu schützen, sollte man sich also lieber mit der Verschlüsselung von E-Mails beschäftigen. Oder damit, ob man nicht auf kryptographisch gesicherte Messenger ausweicht.

All das ist etwas aufwändiger, als einen bunten Sticker auf die Kamera zu kleben. Dafür bringt es wenigstens was.