Festplatten unter macOS sicher überschreiben

Grundsätzlich sollten Daten auf Festplatten und verschlüsselt gespeichert werden. Natürlich kann es trotzdem nicht schaden diese sicher zu überschreiben, wenn sie z.B. verkauft werden sollen. Unter macOS kann hierfür das Festplattendienstprogramm genutzt werden.

Über die Sicherheitsoptionen kann die sichere Löschung der Festplatte konfiguriert werden

Wenn dort die Optionen zum Löschen der Festplatte ausgewählt wird, so erhält der Nutzer eine Auswahl des Dateisystems und der neuen Bezeichnung. Daneben befindet sich dort der Button mit der Beschriftung Sicherheitsoptionen. Wird dieser gedrückt, öffnet sich ein Dialog, in welchem die Löschung der Festplatte konfiguriert werden kann. Dort kann anschließend die zweite Option aktiviert werden. Diese beschreibt die Festplatte mit zufälligen Daten und überschreibt sie anschließend mit Nullen, was bei heutigen Festplatten mehr als ausreichend ist um sicherzustellen das keine bestehenden Daten mehr auf dieser gefunden werden können.

Bei SSDs sollte berücksichtigt werden, das hier durch das Wear-Leveling bestimmte Bereiche nicht erreichbar sind, da diese vom Controller der SSD verwaltet werden. Hier ist es unter Umständen hilfreich eine höhere Sicherheitsstufe beim Löschen zu benutzen, da somit die SSD öfter überschrieben wird und somit unter Umständen auch solche Bereiche überschrieben werden, welche beim ersten Mal nicht erreicht werden konnten.

Automatisches Entsperren eines Macs mit der Apple Watch

Seit macOS High Sierra ist es möglich den eigenen Mac mit der Apple Watch zu entsperren, wenn einige Systemvoraussetzungen erfüllt sind. Ist dies gegeben kann die Entsperrung über die Apple Watch in den Einstellungen von macOS aktiviert werden.

Dazu muss die Seite Sicherheit und dort die Unterseite Allgemein aufgerufen werden. Dort findet sich der Punkt Mit deiner Apple Watch Apps und deinen Mac entsperren. Ist dieser aktiviert, so entsperrt sich das System automatisch, wenn der Nutzer mit der entsprechenden Apple Watch vor dem Gerät sitzt.

In den Sicherheitseinstellungen kann die Entsperrung über die Apple Watch aktiviert werden

Dabei muss die Apple Watch sich nah am Gerät befinden. Außerdem muss sie entsperrt sein und darf sich nicht im Schlafmodus befinden. In solchen Fällen muss das Passwort normal eingeben werden. Auch beim Hochfahren und dem ersten Login muss das Passwort eingegeben werden. Nicht nur macOS lässt sich dann entsperren, sondern auch entsprechende Apps oder die Freischaltung von Administrator-Rechten. In einem solchen Fall muss die Freigabe auf der Apple Watch über die Seitentaste genehmigt werden. Auch beim automatischen entsperren, erhält der Nutzer eine Benachrichtigung auf seiner Apple Watch.

Erste Schritte mit Rust

Vor ein paar Tagen wollte ich die Programmiersprache Rust ausprobieren. Bei Rust handelt es sich um eine Sprache, welche syntaktisch stark an C angelehnt ist und besonderes Augenmerk auf Sicherheit legt. Die erste Frage, die sich mir stellte, ist, ob es für Rust, eine vernünftige IDE-Unterstützung existiert. Fündig geworden bin ich bei IntelliJ IDEA, welches nach Installation des Rust-Plugins zur Programmierung in der Sprache genutzt werden kann. Debugging von Rust-Programmen wird aus technischen Gründen nur in der JetBrains IDE CLion unterstützt, sodass hier einige Abstriche gemacht werden müssen. Neben der Rust-Integration für IntelliJ IDEA gibt es ebenfalls ein Plugin für Visual Studio Code, welches hier allerdings nicht weiter behandelt werden soll.

Mit dem passenden Plugin beherrscht IntelliJ IDEA Rust.

Neben der eigentlichen IDE wird Rust benötigt. Dieses kann über die offizielle Seite der Sprache bezogen werden. Nach der Installation kann in der IDE ein erstes Projekt angelegt werden. Anschließend findet sich in einem Ordner mit dem Namen src eine Datei mit dem Namen main.rs:

fn main() {
    println!("Hello, world!");
}

In dieser Datei findet sich ein minimales Hello world-Programm. Das Ausrufezeichen hinter dem println zeigt unter Rust an, das es sich um ein Makro handelt. Damit können Methoden und Makros einfach auseinander gehalten werden. Da ich Hello world-Programme immer etwas sinnfrei finde was das Lernen einer neuen Programmiersprache angeht, wollte ich für den ersten Versuch das Spiel Zahlenraten programmieren. Ziel des Spieles ist es eine Zahl zwischen 0 und 1000 zu erraten, welche der Rechner sich ausgedacht hat. Dazu muss im ersten Schritt eine Variable definiert werden, in welcher die zufällige Zahl gespeichert wird. Grundsätzlich sieht eine Variablendefinition und Deklaration unter Rust wie folgt aus:

let name: Typ = Wert;

Variablen in Rust sind immer Konstanten, wenn sie nicht explizit als veränderlich angegeben werden. Möglich ist dies mit dem Schlüsselwort mut:

let mut name: Typ = Wert;

Die Benennung von Variablen und anderen Elementen folgt in Rust einem bestimmten Schema. So werden Variablen snake_case benannt. Neben der Definition der Variable muss eine zufällige Zahl zwischen 0 und 1000 generiert werden. Dazu dient ein Zufallsgenerator, welcher über ein use eingebunden werden muss:

use rand::Rng;

Anschließend kann die Variable definiert und deklariert werden:

let number: u32 = rand::thread_rng().gen_range(0, 1000);

In diesem Fall wird ein vorzeichenloser Integer mit 32 Bit Breite als Datentyp definiert. Wird nun versucht das Rust-Programm zu kompilieren, so wird die Fehlermeldung:

error[E0432]: unresolved import `rand`
 --> src\main.rs:1:5
  |
1 | use rand::Rng;
  |     ^^^^ use of undeclared type or module `rand`

error[E0433]: failed to resolve: use of undeclared type or module `rand`
 --> src\main.rs:4:23
  |
4 |     let number: u32 = rand::thread_rng().gen_range(0, 1000);
  |                       ^^^^ use of undeclared type or module `rand`

error: aborting due to 2 previous errors

auftauchen. Grund hierfür ist, dass das genutzte Paket über den Paketmanager von Rust bezogen werden muss. Pakete werden über den Paketmanager Cargo bezogen. Die entsprechenden Pakete des offiziellen Repositorys sind unter crates.io zu finden. In der Datei Cargo.toml müssen die entsprechenden Abhängigkeiten eingebunden werden:

[dependencies]
rand = "0.7.3"
text_io = "0.1.8"

Neben dem Pseudozufallszahlengenerator, wurde gleich noch das Paket text_io eingebunden, welches später für die Eingabe von Text benötigt wird. Dieses Paket stellt hierbei das Makro read zur Verfügung, mit dessen Hilfe eine Eingabe realisiert werden kann:

let user_number: u32 = read!();

Damit sind die Grundlagen für das Spiel Zahlenraten gelegt und der Rest des Quellcodes ergibt praktisch sich von selbst:

use rand::Rng;
use text_io::read;

fn main() {

    let number: u32 = rand::thread_rng().gen_range(0, 1000);

    let mut running = true;

    println!("Ich habe mir eine Zahl zwischen 0 und 1000 ausgedacht.");

    while running {

        println!("Dein Vorschlag: ");
        let user_number: u32 = read!();

        if number > user_number {
            println!("Meine Zahl ist größer.");
        } else if number < user_number {
            println!("Meine Zahl ist kleiner.");
        } else {
            running = false;
        }
    }

    println!("Du hast die Zahl erraten. Es war die {}.", number);
}

Hervorzuheben ist, das unter Rust in if-Statements und Schleifen keine Klammern benötigt werden. Werden diese trotzdem genutzt, so warnt der Compiler entsprechend und bittet die überflüssigen Klammern zu entfernen.

Neben der entsprechenden Dokumentation auf der offiziellen Seite empfiehlt sich das Rust Cookbook als Quelle für die ersten Schritte unter Rust. Wer Rust einfach mal im Browser ausprobieren möchte, kann hierfür den Rust Playground nutzen.

Safe-Mode für MikroTik-Router nutzen

Bei der Konfiguration eines MikroTik-Routers kann es immer mal wieder passieren, dass der Nutzer eine falsche Konfiguration hinterlegt und sich im schlimmsten Fall aus dem Gerät aussperrt oder die Konnektivität des Gerätes verloren geht. Das wird durch den Umstand erschwert, dass die Konfiguration immer sofort umgesetzt wird. Allerdings gibt es für diesen Fall eine Lösung, den sogenannten Safe-Mode. Nach eine Verbindung per SSH hergestellt wurde:

ssh admin@192.168.1.1

kann der Safe-Mode mittels der Tastenkombination Ctrl + X aktiviert werden. Der Prompt im Terminal ändert sich daraufhin:

[admin@192.168.1.1] <SAFE>

Alle Befehle, welche nun eingegeben werden, sind sofort wirksam, allerdings kann jederzeit zum Stand zurückgekehrt werden, als der Safe-Mode aktiviert wurde. Sollen die Änderungen, welche im Safe-Mode getätigt wurden, übernommen werden, so muss erneut Ctrl + X gedrückt werden. Damit wird der Safe-Mode deaktiviert und die Änderungen werden übernommen.

Sollen die Änderungen hingegen nicht aktiviert werden, so sollte das Terminal mittels Ctrl + D verlassen werden. Nach der Beendigung der Verbindung und dem entsprechenden Timeout (bei TCP in etwa neun Minuten) werden die im Safe-Mode gemachten Änderungen rückgängig gemacht.

Mikrofone unter Windows 10 deaktivieren

Während eine Kamera in einem Laptop problemlos abgeklebt werden kann, sieht dies bei Mikrofonen etwas anders aus. Allerdings können Mikrofone unter Windows relativ einfach deaktiviert werden. Dazu muss die Systemsteuerung geöffnet werden.

Unter Audiogeräte verwalten können die Mikrofone deaktiviert werden

Dort sollte nach dem Begriff Audio gesucht werden. Anschließend sollte dem Nutzer in der Kategorie Sound der Punkt Audiogeräte verwalten angezeigt werden. Wurde der Punkt ausgewählt, so kann im sich öffnenden Dialog der Tab Aufnahme ausgewählt werden. Mit einem Rechtsklick auf die entsprechenden Mikrofone können diese nun deaktiviert werden.