Raspberry Pi Kamera-Modul LED deaktivieren

Wem die sehr hell leuchtende LED bei den Kamera-Modulen für die Raspberry Pi’s stören kann diese ganz einfach abschalten.

Bearbeiten müssen wir die Datei /boot/config.txt und irgendwo, am Besten ganz unten auf die Seite folgende Zeile einfügen:

Bearbeiten können wir die Datei mit einem Editor unserer Wahl, z.B. vi oder nano. Nach dem Speichern der Datei muss ein Reboot des Pi’s erfolgen. Dies ist mit folgendem Befehl möglich der als root oder sudo ausgeführt werden muss:

 

Sicherheit: Passwörter auslesen/anzeigen wenn – Passwort vergessen / bösartige Absichten

Auch diese Situation hat jeder schon einmal durchgemacht. Man hat sich vor Ewigkeiten, oder auch vor kurzem irgendwo angemeldet und einem ist kein Passwort eingefallen. Man hat etwas eingegeben und dachte man merkt es sich. Die Sicherheitsstandards aktuell sorgen aber oft dafür, dass man Groß- und Kleinbuchstaben genauso braucht wie mindestens eine Zahl und ein Sonderzeichen. Und dann muss es noch mindestens achtstellig sein. Was tun?

Alle gängigen Browser haben eine Möglichkeit gespeicherte Passwörter auch wieder im Klartext anzuzeigen. Dies setzt mittlerweile, früher war es nicht so, voraus, dass man sich mit dem Kennwort des Benutzerprofils des Betriebssystems authentifizieren muss. Mehr dazu im Artikel zuvor.

Wie ihr eure Passwörter anzeigen lassen könnt zeige ich euch für die Browser Chrome und Firefox.

Chrome

Wir klicken auf die drei Punkte um in weitere Optionen zu gelangen.

Nun suchen wir im oberen Eingabefeld nach “Passwörter” und erhalten folgendes Ergebnis:

Hier klicken wir nun auf “Passwörter verwalten” (im Bild ganz unten). Die Ansicht ändert sich ein wenig und wir bekommen eine Auflistung, sofern zuvor Passwörter gespeichert wurden.

Klicken wir nun auf das Augen-Symbol (vorletztes Symbol), werden wir nach unserem Passwort vom Benutzerkonto des Betriebssystems gefragt. Eben jenem Konto mit dem man sich unter Windows, macOS oder Linux anmeldet. Unter Umständen kann, dies muss aber nicht sein, je nach Betriebssystem der Benutzername bereits vorausgefüllt sein. Unter Windows 10 sieht die Abfrage bei mir wie folgt aus:

Da ich mit einem Microsoft Online-Konto angemeldet bin müsste ich hier meine E-Mail Adresse als Benutzername eingeben und bestätigen. Ist das Passwort korrekt, seht ihr euer Passwort für diese eine Seite im Klartext, dass Bild hierzu werde ich mir sparen.

Firefox

Auch beim Feuerfuchs muss man erweiterte Optionen anzeigen lassen, über folgenden Knopf (siehe unten).

Danach klicken wir auf “Einstellungen” und tippen in die Suchmaske oben rechts “Passwörter” ein. Wir erhalten folgende Ansicht:

Über “Gespeicherte Zugangsdaten…” kommen wir zu folgendem Dialog:

Wie man sieht verwende ich Firefox nicht und habe deswegen keinen Eintrag. Aber ebenso wie im Chrome würden wir hier die Webseite auswählen und auf “Passwörter anzeigen” klicken um in einen Dialog zur Authentifizierung zu kommen.

Sicherheit: Im Browser gespeicherte Passwörter – Wie sicher sind sie wirklich?

Jeder kennt es. Gerade wenn man sich ein frisches Gerät kauft, ob Computer oder Notebook. Beim Smartphone bleibt man manchmal verschont. Egal ob Chrome oder Firefox, Edge oder Opera. So ziemlich jeder Browser hat heutzutage die Funktionalität die Passwörter eines Benutzers zu speichern. Und das ist toll. Wirklich! Ich muss mir kein Passwort mehr merken oder es nicht jedes Mal eintippen sind dabei die Gedanken die man hat. Man ist froh, dass der Browser einem die Arbeit abnimmt. Personen die um ihre Daten besorgt sind kann ich aber, teilweise, beruhigen. Solange man nicht mit einem Firefox Sync oder einem Google oder Opera Konto angemeldet ist, werden Passwörter nicht mit den jeweiligen Servern der Anbieter synchronisiert. Das bedeutet, diese Daten bleiben nur auf dem lokalen Gerät gespeichert. Und das tollste daran ist, sie werden verschlüsselt gespeichert. Damit ist ja alles sicher und unbedenklich, denkt man.

Mal abgesehen von der Tatsache, dass jede Verschlüsselung irgendwann einmal als unsicher gilt und geknackt wird gibt es aber einen vergleichsweise einfachen Umstand den man sich zu Nutze machen kann. Wer diese Frage beantwortet kann sofort wissen ob seine Daten gefährdet sind, theoretisch.

Ist das Benutzerkonto unter Windows, macOS oder Linux mit einem Passwort geschützt?

Wenn ja, ist schon mal eine mögliche Quelle ausgeschaltet das Passwort auszulesen, denn alle Browser bieten auch die Möglichkeit gespeicherte Passwörter anzuzeigen. Das kann sinnvoll sein, wenn man sein Passwort auf einer Seite einmal vergessen hat, oder zum Verhängnis werden, wenn das Benutzerkonto des Betriebssystems nicht mit einem Passwort versehen ist. Grund ist der, dass die Browser die Passwörter nur im Klartext darstellen, wenn man das Passwort des Benutzerkontos eingibt und es korrekt ist. Ein nicht vorhandenes Passwort bedeutet im schlimmsten Fall zum Beispiel unter macOS, dass ich die Abfrage einfach nur mit “OK” bestätigen muss, denn der Benutzer ist vorausgefüllt und es ist ja gar kein Passwort gesetzt, also ein leeres Feld wäre das korrekte Passwort.

Fazit

Egal ob man was zu verbergen hat oder nicht. Ein Benutzerkonto sollte in jedem Fall mit einem Passwort geschützt werden. Natürlich gibt es andere Methoden an die Daten zu kommen, dazu mehr in einem späteren Artikel.

Eigene Smarty Modifier

Wer in PHP Projekte realisiert und dabei auf die Template-Engine Smarty.net zurückgreift kann sich freuen. Was in der Programmierung unter wiederverwendbare Funktionen/Methoden bekannt ist kann auch in mit der Template-Engine Smarty verwendet werden. Das Ganze nennt sich “Modifier“. Im Grunde ist ein Modifier auch eine Funktion, die immer aufgerufen wird, wenn man diese im Template angibt. Von kleinen Dingen bis hin zu komplexen Aufgaben können so Aktionen durchgeführt werden.

Zwei kleine Beispiele möchte ich euch einmal vorstellen. Sie sind einfach gehalten und es macht nicht unbedingt Sinn sie in realen Projekten zu verwenden, jedoch möchte ich euch anhand dieser Beispiele nur zeigen wie das ganze funktioniert.

Lädt man sich Smarty.net herunter und entpackt es gibt es innerhalb des libs Verzeichnisses einen Ordner namens “plugins“. Hier findet man einige Dateien die mit folgenden Namen beginnen:

  • block.
  • function.
  • modifier.
  • modifiercompiler.
  • weitere

Beispiel 1: Hash-Funktion

Wir nehmen einmal an, wir wollen innerhalb des Templates aus einer Smarty-Variable oder einem Text den MD5 Hash anzeigen lassen. Unsere Datei im Plugin Verzeichnis sähe so aus:

Unser Aufruf im Template sähe so aus:

Dann sähe unsere Ausgabe wie folgt aus:

Das “test” könnte man durch eine Smarty-Variable, z.B. $test ersetzen.

Beispiel 2: mailto-Objekt

Unsere Modifier sähe so aus:

Folgendes würde im Template stehen:

So sähe das Resultat aus:

Der Link ist im Bild zwar nicht ersichtlich wäre aber die entsprechende Mail-Adresse. Somit sind die Modifier eine schöne Möglichkeit komplexere Aufgaben mit nur einem Aufruf und gegebenenfalls. zusätzlichen Parametern zu realisieren.

Artikelreihe: Sicherheit

Die kommende Zeit wird es einige wenige Artikel zum Thema Sicherheit geben. Angefangen am 12.03. und 13.03. mit Artikeln zum Thema Browser-Passwörter, wie sicher sie sind und wie man sie ausliest wenn man sie vergisst, geht es zu einem späteren Zeitpunkt weiter mit dem Thema ob man an die Browser-Passwörter und auch an die Daten eines Benutzers kommt, auch wenn dieser mit einem Passwort verschlüsselt ist und wie man sich zumindest besser dagegen schützen kann.

Raspberry Pi 1/2/3 Headless Installation

Mit diesem Tutorial möchte ich euch die Installation eines Raspberry Pi Modell 1, 2 oder 3 vorstellen. Die Installation ist sehr einfach und benötigt auch keine angeschlossenen Geräte am Pi, sofern man die Installation über ein Netzwerkkabel durchführt.

Was ihr benötigt:

  • Ein Raspberry Pi Modell 1, 2 oder 3
  • Ein Netzwerkkabel
  • Ein Terminal-Tool, z.B. Putty, SmarTTY oder eine andere
  • Etcher zum Schreiben der SD/microSD Karte – ihr erhaltet es hier (verwendet die Portable-Version, dann braucht ihr keine Software zu installieren!)
  • Gegebenenfalls wird ein microSD auf SD-Card Adapter benötigt
  • Das aktuelle Raspbian Image – von https://www.raspberrypi.org/downloads/raspbian/

Was ihr NICHT benötigt!

  • Tastatur + Maus
  • Monitor

Schritt 1: SD-Karte vorbereiten

An dieser Stelle benötigt ihr die Software Etcher und das Raspbian Image von der offiziellen Webseite. Zudem braucht ihr eine microSD Karte mit SD-Karten Adapter oder eine SD-Karte je nach Modell des Raspberry Pi’s. Ein SD-Kartenleser/Schreiber muss im Computer verbaut sein, bei Notebooks sehr häufig der Fall. Steckt die Karte in den dafür vorgesehenen Slot und schaut ob sie vom Betriebssystem erkannt wird.

Startet dann die Software Etcher. Klickt auf “Select image” und wählt im darauffolgenden Dialog die .img-Datei die ihr von raspberrypi.org heruntergeladen habt aus. Im Anschluss daran werdet ihr automatisch nach dem Laufwerk gefragt oder müsst es manuell über “Select drive” aufrufen. Schaut vorher im Windows Explorer nach welcher der korrekte Laufwerksbuchstabe ist, nicht, dass ihr euren angeschlossenen USB-Stick formatiert und mit dem Image überschreibt! Klickt auf “Flash!” und wartet. Beendet dabei nicht die Software, entfernt nicht die SD-Karte und betet, dass kein Stromausfall kommt. All diese Dinge können dazu führen, dass die Karte unbenutzbar wird!

Schritt 2: Headless Setup

Ist dieser Schritt erledigt, dann widmen wir uns einem winzigen Schritt mit großen Auswirkungen. Seit einiger Zeit ist SSH standardmäßig auf dem Pi Image deaktiviert. SSH muss aber aktiviert sein, damit wir mit einem Terminal Tool auf den Pi zugreifen können, ohne das wir Monitor, Tastatur und Maus anschließen. Es gibt aber einen kleinen Trick, wie man SSH wieder aktivieren kann. Navigiert dazu mit dem Windows Explorer auf die SD-Karte, die eigentlich mit dem Namen “boot” versehen sein sollte. Ihr benötigt eine Datei ohne Dateinamen. Dazu klickt ihr (unter Windows 10) zuerst im Explorer auf den Reiter “Ansicht” und aktiviert den Haken bei “Dateinamenerweiterungen“. Im Anschluss daran macht ihr innerhalb des Laufwerks einen Rechtsklick und sagt “Neu” → “Textdokument“. Nennt die Datei “ssh” und entfernt das “.txt” am Ende! Dies sagt dem Pi dann beim Booten, dass es SSH eben doch aktivieren soll. So können wir per Software drauf.

Schritt 3: IP herausfinden / Hostname verwenden

Nun gibt es zwei Möglichkeiten:

  1. Ihr geht auf das Webinterface eures Routers und findet die IP-Adresse vom Raspberry Pi heraus. Bei vielen Routern wird auch gleich der Name mit angezeigt.
  2. Wir verwenden direkt den Hostnamen, der standardmäßig “raspberrypi “lautet.

Schritt 4: Verbindung über Terminal Software

Ich verwende SmarTTY, Putty funktioniert aber genauso, sieht nur anders aus.

  1. Wir klicken auf “New SSH connection…
  2. Tragen im vorausgewählten Feld “Host Name” folgendes ein: “raspberrypi” (ohne Anführungszeichen!)
  3. In das Feld “User Name” tragen wir folgendes ein: “pi” (ohne Anführungszeichen!)
  4. In das Feld “Password” tragen wir folgendes ein: “raspberry” (ihr ahnt es, ohne Anführungszeichen!)
  5. Klickt auf “Connect

Schritt 5: Sicherheit geht vor, Standardpasswort ändern!

Eigentlich gehört es nicht mehr in dieses Tutorial, da es aber sicherheitsrelevant ist erwähne ich es trotzdem. Diese Benutzernamen- und Passwortkombination ist auf jedem Raspberry Pi gültig, wenn sie nicht geändert wird und Raspbian verwendet wird. Wenn ihr euch mit dem Pi verbunden habt könnt ihr über den Befehl “passwd” das Passwort ändern. Das solltet ihr auch dringend tun.

Tipp: Grafische Oberfläche und mehr!

Warum verwende ich SmarTTY? Nicht nur weil es eine mysteriöse Schreibweise hat und Spaß macht oder in .NET geschrieben wurde. Tatsächlich bietet SmarTTY einige nette Funktionen wie zum Beispiel grafische Oberflächen, eine Auflistung aller installierter Pakete, automatische Vervollständigung von Verzeichnissen und Dateien im Stile von IntelliSense, einen integrierten Datei Explorer der mit dem Terminal gekoppelt ist und sich entsprechend beim Wechseln des Verzeichnisses über das Terminal anpasst, klickbare Pfade und vieles mehr! Es ist kostenlos erhältlich und super. Aber auch hierzu gibt es Alternativen.

Über startx oder lxsession könnt ihr, sofern ihr die Desktop-Version von Raspbian OS heruntergeladen habt, euch die Oberfläche anzeigen lassen. Das geht mit putty leider nicht direkt! Auch Programme wie gparted (die nachinstalliert werden müssen) können grafische Oberflächen starten.

Eigene öffentliche IPv4 Adresse herausfinden

Wer seine öffentliche IPv4 Adresse herausfinden möchte kann zum Beispiel Seiten wie www.wieistmeineip.de besuchen. Für ein zukünftiges Projekt wollen wir nicht auf andere Dienstleister angewiesen sein und bieten daher unter folgender Domain (siehe unten) einen dauerhaften kostenlosen Service an, die IPv4 Adresse anzuzeigen. Nützlich zum Beispiel zum Auslesen für Anwendungen.

https://ipv4.snakesoft.net/

PHP – Kanntest du schon? – SQL Injections

SQL Injections ist ein Thema seit jeher. Die Gefahr ist, dass man über Eingabefelder die SQL-Abfrage so manipulieren kann, um Zugriff auf andere Daten zu erhalten. Das ist einfacher als man denkt. Folgende Beispiel PHP Datei:

Als Beispieldatenbank nehme ich die Datenbank phplogin aus dem Artikel des PHP Login Projekt welche eine Tabelle account erhält. Hier stehen sehr sensible Informationen drin und wir können uns über das simple Query alle Account-Daten aus der Tabelle ausgeben lassen. Wie? Ganz einfach:

Normalerweise würden wir in das Input-Feld nur unsere E-Mail Adresse eintragen, ein Bösewicht (auch Cracker – fälschlicherweise Hacker) genannt könnte aber statt seine E-Mail die obige Zeile eingeben. Eigentlich sollte nur jeder User seine Daten als Ausgabe erhalten, doch folgende Ausgabe erhalten wir:

Wir erhalten alle Daten aus der Tabelle und zwar nicht nur für unseren Benutzer, denn durch die Eingabe hat sich das SQL-Statement von

in folgendes geändert:

Entweder ist die Mail leer, oder 1=1. 1=1 ist eine Bedingung, man könnte sie auch true nennen, die immer zutrifft und damit die Bedingung sofort erfüllt und das Statement ausführt.

Wie verhindert man SQL Injections?

Das Stichwort, bzw. die Stichwörter hier lauten: Prepared Statements. Wie der Name schon erahnen lässt gibt man hier die Daten nicht direkt als gesamtes SQL-Statement an den Datenbank Server. Vielmehr lässt man den Datenbankserver das Statement vorbereitet. Das tun wir, indem wir ihm folgendes SQL-Statement “preparen” lassen:

Er weiß jetzt was er machen soll, nämlich einen SELECT * aus der Tabelle account und als Bedingung wird eine email kommen. Der Server kann Vorbereitungen treffen hat aber noch keine konkreten Daten zum Ausführen dieses Befehls. Erst im zweiten Schritt lässt man den Datenbankserver dieses Statement ausführen und gibt ihm zeitgleich als Parameter die Daten mit, Ausschnitt:

Weil man beim PDO-Connector besser mit Prepared Statements arbeiten kann und dieser im Gegensatz zum MySQLi-Connector Named Parameters unterstützt und auch aus weiteren Gründen, habe ich in diesem Beispiel zur Prävention von SQL-Injection vom MySQLIi-Connector zum PDO-Connector gewechselt.

Der vollständige Code hier:

Geben wir nun unsere E-Mail Adresse ein, erhalten wir nur unsere Daten. Verwenden wir wieder den Teil für die SQL-Injection (siehe unten), erhalten wir eine leere Seite (weiß), weil intern ein Fehler geworfen wird der bei mir zumindest nicht direkt angezeigt wird.

PHP – Kanntest du schon? – Function Array Dereferencing

Seit PHP Version 5.4 wird das sogenannte function array dereferencing unterstützt, was bedeutet es?

In einigen Programmiersprachen, darunter C#, ist es gang und gäbe function array dereferencing zu verwenden, viele wissen nur nicht wie es heißt.

Folgende kleine Funktion liefert uns einfach nur ein Array zum Testen zurück:

Wenn wir nun direkt auf das erste Element zugreifen wollen, können wir dies über function array dereferencing wie folgt tun:

Direkt hinter den Funktionsklammern können wir wie gewohnt über eckige Klammern auf eine beliebige Stelle des Arrays zugreifen.

PHP – Kanntest du schon? – Null Coalescing Operator

Seit PHP Version 7.0 gibt es als “syntactic sugar” wie es immer so schön heißt den null coalescing operator.

Er verkürzt folgende bisher verwendete Schreibweise:

Die neue Schreibweise mit dem null coalescing operator ist folgende:

Man kann die Prüfung auf die Existenz nun sparen.