Daten aus verschlüsseltem Festplattendump auslesen

Backup

Bevor man seinen Rechner neu aufsetzt, ist es immer sinnvoll, den aktuellen Stand zu sichern. Dafür gibt es keine Ausrede, denn Speicherplatz in Form von USB-Festplatten ist spottbillig – aktuell nur noch knapp 20€ pro Terabyte.

Unter unixoiden Betriebssystemen ist das Sichern des kompletten Festplatteninhaltes recht einfach:

dd status=progress if=/dev/nvme0n1 of=/media//Backup/backup.img

Also: Kopiere den Inhalt der ersten SSD (inklusive aller dort befindlichen Partitionen) auf die unter /media/… eingehängte Backup-Festplatte. Das dauert je nach Festplattengröße und USB-Typ einige Minuten oder Stunden. Natürlich kann man als Ziel auch ein gemountetes Netzlaufwerk benutzen, auf dem entsprechend Platz ist, dann dauert es aber vermutlich nochmal etwas länger.

Restore

Danach kann man den Rechner neu aufsetzen, neu einrichten, die anderweitig per File-Backup gesicherten Dateien wieder einspielen. Und wie immer kommt dann der Punkt, wo einem einfällt – ‘Verdammt, die Datei XYZ, die hatte ich nicht gesichert, aber die brauche ich wieder!”

An der Stelle kommt das vorher gezogene Image zum Einsatz. Also: Backupplatte wieder anschließen und die entsprechende Partition aus dem Image wieder mounten. Dazu benötigt man zuerst die Aufteilung der Partitionen auf dem Image, in anderen Worten: Welche Partition beginnt wo? Dazu kann man parted verwenden:

parted /media//Backup/backup.img
(parted) unit                                                             
Einheit?  [compact]? B
(parted) print

parted wird im interaktiven Modus bedient. Zuerst schalten wir mittels unit und der Angabe B in den Byte-Modus. parted soll die Partitionsgrenzen als Bytes anzeigen, denn wir benötigen exakte Angaben um diese Partition dann später einzubinden. Mittels print kann man nun die Partitionsliste ausgeben. Bei mir sah das so aus:

 Nummer  Anfang         Ende           Größe          Dateisystem     Name                          Flags
 1      1048576B       525336575B     524288000B     fat32           EFI system partition          boot, esp
 2      525336576B     659554303B     134217728B                     Microsoft reserved partition  msftres
 3      659554304B     363553882111B  362894327808B  ext4            Home
 4      363553882112B  478152753151B  114598871040B                  Encrypted
 5      478152753152B  495193161727B  17040408576B   ext4            Root
 6      495193161728B  512109838335B  16916676608B   linux-swap(v1)  Swap

Wichtig sind die Angaben unter “Anfang”, am besten kopiert man sich die Tabelle zur Referenz in den Texteditor. parted kann man nun wieder mit quit verlassen.

Restore aus unverschlüsselter Partition

War die Partition unverschlüsselt, kann man sie direkt mounten:

sudo su
cd /media//Backup
mkdir /mnt/home
mount -o loop,ro,offset=659554304 backup.img /mnt/home

Wichtig: Das B am Ende der Größenangabe entfernen.

Damit ist die Partition anschließend als /mnt/home/ verfügbar. Ggf. möchte man anschließend noch mit chmod/chown dafür sorgen, dass man nicht nur als Root an die Dateien kommt.

Das war die leichte Übung. Aber was, wenn man Dateien aus einer verschlüsselten Partition benötigt?

Restore aus LUKS-verschlüsselter Partition

Ist die Partition verschlüsselt, dann benötigt man noch ein paar Zwischenschritte. Da ich dazu meine Infos aus mehreren Quellen zusammensuchen musste und einige Zeit rumprobiert habe gibt es jetzt diesen Blogpost. Eigentlich ist es ganz einfach, wenn man weiss, wie es geht. Deshalb folgt nun das “Restore aus einer verschlüsselten Partition in drei einfachen Schritten“.

Schritt 1: Loop-Device anlegen

Wir benötigen zuerst einmal Zugriff auf die Datei über ein Loop Device. Hier passiert nichts Spannendes, es wird nur ein Blockdevice simuliert, das Zugriffe auf das Device in die Image-Datei umlenkt. Loop Devices werden einfach durchnummeriert, also sehen wir erst mal nach, was noch frei ist:

ls /dev | grep loop

Es werden nun alle vorhandenen Loop Devices aufgelistet, wir verwenden einfach eine noch nicht vorhandene Nummer. In guter Hackertradition verwende ich als Beispiel die Nummer 23. Als Offset wird der Anfang der verschlüsselten Partition verwendet.

losetup -o 363553882112 /dev/loop23 backup.img

Schritt 2: Partition öffnen

Nun kann ich mit cryptsetup auf die Partition zugreifen und sie öffnen:

cryptsetup open --type luks /dev/loop23 enc

Enc ist hierbei ein frei gewählters Alias. Unter diesem wird die entschlüsselte Partition anschließend verfügbar sein.

cryptsetup fragt nun nach dem Passwort für die Partition:

Geben Sie die Passphrase für »/dev/loop23« ein: *******************

Das Öffnen der Partition benötigt ein paar Sekunden. Bevor ich nun die Daten auslesen kann, muss ich die Partition noch einhängen.

Schritt 3: Entschlüsselte Partition einhängen

mount /dev/mapper/enc /mnt/my-precious-files

Das Öffnen hat nun ein neues Block Device unter /dev/mapper mit dem oben gewählten Alias angelegt. Nach dem Mounten kann ich die Dateien unter /mnt/my-precious-files finden und meine verloren gegangene Datei wiederherstellen.

About the author

People Enabler at CHECK24