Ausgangssituation: Du hast auf deiner Festplatte eine Partition, die mit LUKS (cryptsetup) verschlüsselt wurde. Außerdem hast du zusätzlich eine defekte Partitionstabelle, in der die LUKS-Partition nicht aufgelistet ist.
Ziel: Das Ziel ist die Daten, der mit LUKS verschlüsselten Partition, lesbar zu machen und auf einen externen Datenträger zu kopieren.
Hinweis: Sollte eine unverschlüsselte Partition in der Partitionstabelle nicht oder nicht korrekt angezeigt werden, dann kann das Programm TestDisk Abhilfe schaffen. Doch Vorsicht: Das Programm erkennt LUKS-verschlüsselte Partitionen nicht richtig und löscht diese aus der Partitionstabelle.
Ich habe als Live-CD eine Knoppix Version verwendet evtl. klappt das Ganze auch mit einer Ubuntu Live-CD. Es wurde in einer Anleitung angedeutet das die Funktionsweise von losetup in den beiden Live-Systemen verschieden ist, deshalb bin ich mit Knoppix auf Nummer sicher gegangen.
Im Folgenden verwende ich als Festplatte immer /dev/sda, evtl. muss Du diese Angabe anpassen in /dev/sdb oder /dev/sdc ...
Vorbereitung: Starte das Live-System (Knoppix) und führe ein
1 | sudo apt-get update |
durch, damit Du eine aktuelle Paketliste hast. Dann kannst du auch mit
1 | sudo apt-get install cryptsetup |
das Paket cryptsetup, dass wir hoffentlich brauchen werden, installieren.
Ablauf: Als Erstes kommt der wohl schwierigste/aufwendigste Teil: Wir müssen den Header der LUKS-Partition finden. Der Header beginnt immer mit der Hex-Folge "4c 55 4b 53 ba be". Dazu sind mir zwei Möglichkeiten bekannt: Zum Einen können wir den Befehl
1 | sudo hexdump -C /dev/sda | grep "4c 55 4b 53 ba be" |
nutzen. Dieser hat sich, zumindest bei mir, als sehr langsam herausgestellt, da er bei einer 80 GB Festplatte die Nacht durchlief (ca. 8 Stunden) und immer noch nicht fertig war. Zum Anderen gibt es noch
1 | sudo hexedit /dev/sda |
Es öffnet sich ein Hex-Editor in dem man manuell suchen muss. Ist jedoch wesentlich schneller. Deshalb gehe ich auf diese Methode näher ein.
Falls Du auf Nummer sicher gehen willst, kannst du mit
1 | sudo chmod 400 /dev/sda |
die Festplatte als nur lesend einstellen. Dadurch kann man mit dem Hex-Editor evtl. andere Partition nicht versehentlich auch noch zerstören. Du öffnest also mit
1 | sudo hexedit /dev/sda |
deine Festplatte und mit Strg+S kannst du den Suchstring "4c554b53babe" eingeben. Mit einem Druck auf Enter startet die Suche. Bei jedem Treffer bleibt die Suche automatisch stehen. Unten solltest Du dann den entsprechenden Offset sehen (z.B. 0x12AF73B83/0x123A73C2). Uns interessiert aber nur der erste Teil, also der vor dem Slash/Schrägstrich. Solltest Du mehrere LUKS-Partitionen haben, dann solltest Du die Suche nach den anderen Partitionen fortsetzen (Strg+S und Enter). Am Ende solltest Du einige Offsetangaben haben, wo sich deine LUKS-Header auf der Festplatte befinden (könnten).
Auf zum zweiten Teil: Die eigentliche Datenrettung.
Wir müssen unseren Offset von Hex (0x12AF73B83) in Dezimal (5015812995) umwandeln. Dafür hab ich einen entsprechenden Umwandler auf einer Internetseite genutzt (z.B. http://www.statman.info/conversions/hexadecimal.html ). Damit können wir nun
1 | sudo losetup -s 5015812995 /dev/loop5 /dev/sda |
ausführen, was uns den Beginn der LUKS-Partition auf /dev/loop5 öffnet. Jetzt können wir auch die Partition wieder mit
1 | sudo cryptsetup luksOpen /dev/loop5 crypted |
entschlüsseln. Mit
1 | sudo mkdir /media/rescue |
erstellen wir einen Mountpoint und können schließtlich mit
1 | sudo mount /dev/mapper/crypted /meda/rescue |
die Partition mounten. Jetzt sollten all die verloren geglaubten Daten unter /media/rescue zufinden sein. Das kopieren auf einen externen Datenträger sollte damit das kleinste Problem darstellen.
Ich hoffe meine Anleitung konnte dem Ein oder Anderen helfen. Bei Problemen, Fragen und Anregungen stehe ich gern zur Verfügung.
Euer Griffin