• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

ext4 Partition mit ecryptfs - Daten gelöscht

nadine_dd

Newbie
Hallo,

ich habe eine ext4 Partition, auf der ich aus Versehen etwas gelöscht habe. Ich habe ein Partitionsimage mit dd erstellt. Besteht eine Möglichkeit, an meine Daten wieder heranzukommen?

Ich habe bei extundelete bzw ext4magic versucht, diekt dieses Image anzugeben.
extundelete stellt zwar einige wenige (verschlüsselte) Daten wieder her, aber wenn ich den Ordner mit den gefundenen Daten einbinde (mittels mount.ecryptfs), dann sehe ich zwar meine Ordner, aber keine Dateien.
ext4magic schlug leider komplett fehl, da habe ich nicht den passenden Befehl gefunden.

Bei beiden habe ich getestet, die Option "after" anzugeben, also dass er nur die Dateien wiederherstellen soll, die nach dem "after"-Datum geändert wurden, aber bei beiden Programmen wurde diese nicht korrekt verarbeitet (selbst bei einem Datum, was jahrelang zurückliegt, findet er angeblich nichts).

Bei extundelete hat folgender Befehl zumindet einige Dateien gefunden (siehe oben):
Code:
extundelete /pfad/zum/image --restore-all
die Zeitbefehle, die kein Ergebnis brachten:
Code:
extundelete /pfad/zum/image --after 1324602000
ext4magic /pfad/zum/image -r -a 1
ext4magic /pfad/zum/image -m -a 1
Was kann man also nun machen? Muss man irgendwie das verschlüsselte Image entschlüsseln und dann darauf die Programme anwenden?

Vielen Dank im Voraus für eure Antworten.
 

RME

Advanced Hacker
Hallo,

Ich kann Dir nicht explizit helfen, aber wenn ich hier schaue:

http://extundelete.sourceforge.net/options.html

dann denke ich dass Du (für die Zeitbefehle) noch Optionen zum Befehl benötigst, z.B.

Code:
extundelete --restore-all --after 1234567890 /pfad/zum/image
Hilfe: extundelete --help

Aber wie gesagt, bin hier unwissend.

Gruss,
Roland
 
A

Anonymous

Gast
nadine_dd schrieb:
Bei beiden habe ich getestet, die Option "after" anzugeben, also dass er nur die Dateien wiederherstellen soll, die nach dem "after"-Datum geändert wurden, aber bei beiden Programmen wurde diese nicht korrekt verarbeitet (selbst bei einem Datum, was jahrelang zurückliegt, findet er angeblich nichts).

Bei extundelete hat folgender Befehl zumindet einige Dateien gefunden (siehe oben):
Code:
extundelete /pfad/zum/image --restore-all
die Zeitbefehle, die kein Ergebnis brachten:
Code:
extundelete /pfad/zum/image --after 1324602000
ext4magic /pfad/zum/image -r -a 1
ext4magic /pfad/zum/image -m -a 1
Was kann man also nun machen? Muss man irgendwie das verschlüsselte Image entschlüsseln und dann darauf die Programme anwenden?
Hinweise zum Umgang mit Verschlüsselten Filesystemen nützt nur bei dir wenig wenn das Filesystem selbst nicht verschlüsselt ist. Wenn ich das richtig sehe, verwendest du ecryptfs, da sind nur die einzelnen Dateien verschlüsselt. Habe ich selbst noch nicht ausprobiert. Nch ein paar kurzen Tests jedoch herausgefunden die Verzeichnisse selbst sind nicht verschlüsselt sondern wirklich nur jede einzelne Datendatei. Solange du das verstecktes Verzeichnis ".ecryptfs" mit wichtigen Zugangsdaten bzw dir die Keys gespeichert hast, können einzeln recoverte Dateien wieder entschlüsselt werden, solange sie nicht defekt sind. soweit zur Theorie. ;)

ext4magic nimmt nur Zeiten für -a größer 315601200 an (1980-01-01 20:00:00)
-a 1 wird also abgewiesen mit der Fehlermeldung "Invalide parameter: range AFTER <--> BEFORE"


ext4magic Version 0.3.0-pv2 oder 0.2.4 verwenden.
Wenn letzte Aktion im Filesystem das Löschen war, dann folgenden Befehl versuchen.
Code:
ext4magic /pfad/zum/image -m -d /wo/platz/für/RECOVER
Es können bei dir nur verschlüsselte Dateien wiederhergestellt werden, wie die zu entschlüsseln währen, müsste irgendwo (zB in der Ubuntu Doku von ecryptfs ) stehen.
Wenn bei obrigen Befehle überhaupt kein brauchbares Ergebnis kommt, dann folgende Befehle absetzen, die Ausgaben werden in einer Datei abgelegt und enthalten dann einen Überblick über den Zustand des Filesystems sowie des Journals oder der Meldungen die darauf schließen lassen was du falsch machst.
Code:
su -
script /tmp/logdatei.txt
ext4magic /pfad/zum/image -S
ext4magic /pfad/zum/image -Hx -a $(date -d "-5 day" +%s)
Bemerkung: die "-5" im letzem Befehl entsprechen letzte 5 Tage, wenn möglich kleiner machen wenn zB erst gestern gelöscht wurde
Code:
ext4magic /pfad/zum/image -Tx
ext4magic /pfad/zum/image -I2 -J
exit
gzip /tmp/logdatei.txt.gz
die entstandene Datei /tmp/logdatei.txt.gz an eine Mail anhängen mit einer etwas genaueren Beschreibung was du genau gemacht hast und was du wiederfinden willst. Das ganze an den Entwickler von ext4magic, der hat heute Nacht und eventuell auch morgen ausnahmsweise noch etwas Zeit sich das anzuschauen.

robi
 
OP
N

nadine_dd

Newbie
Hallo,

an alle erstmal Danke für die hilfreichen Antworten.
Der Fehler lag daran, dass ich das mit den root-Rechten übersehen hatte.

@ RME: Du hattest Recht, dass man --restore-all und --after ... zusammen verwenden muss.
@ robi: Wenn du möchtest, kannst du die folgende Zusammenfassung gern für dein Wiki verwenden.

Nachdem ihr die Festplatte nach den gelöschten Daten durchsucht und diese (verschlüsselten) Daten irgendwo gespeichert habt, müsst ihr sie noch entschlüsseln.

Dazu bracht ihr zunächst das Passphrase, eine Kombination aus 32 Zeichen und Zahlen, die im Nachfolgenden xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx heißen soll.

Ihr gebt ins Terminal ein:
Code:
ecryptfs-unwrap-passphrase /home/.ecryptfs/username/.ecryptfs/wrapped-passphrase

Dann bekommt ihr xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx als Ausgabe. Dieses Passphrase bitte merken. Zur Not auch irgendwo hinkopieren ;)

Dann müsst ihr noch einen zweiten Schlüssel aus 16 Zeichen herausfinden. Verwirrenderweise wird der auch als Passphrase bezeichnet. Zur besseren Unterscheidung soll er hier yyyyyyyyyyyyyyyy heißen.
Gebt dazu ins Terminal ein (hier braucht ihr root-Rechte):

Code:
ecryptfs-add-passphrase --fnek

Ihr müsst dann xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx eingeben und bekommt zwei 16 Zeichen lange Schlüssel ausgegeben. Verwendet im Nachfolgenden den Zweiten, also yyyyyyyyyyyyyyyy

Dann kann das Entschlüsseln losgehen. Gebt ins Terminal folgenden Befehl ein (mit root-Rechten):

Code:
mount -t ecryptfs /pfad/zu/RECOVERED_FILES/.ecryptfs/username/.Private/ /mnt/

Ihr werdet nach dem Passphrase xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx gefragt.
Im Nachfolgenden haben wir die Auswahlmöglichkeiten [aes], [16], [n] verwendet. Bei der Frage "Enable filename encryption" haben wir mit [y] Ja angegeben, weil ich Xubuntu verwende.
Dann kommt die Frage nach der Filename Encryption Key (FNEK) Signature. Dort müsst ihr yyyyyyyyyyyyyyyy eingeben.
Auf die Frage, ob wir mit dem mounten fortfahren wollen, haben wir mit "yes" geantwortet und auf die Frage, ob man diese Warnung in Zukunft vermeiden will, mit "no".

Und das war es schon. Danach kann man im Ordner /mnt/ auf die entschlüsselten Daten zugreifen.

Also nochmal danke für all eure Ratschläge!
 
A

Anonymous

Gast
nadine_dd schrieb:
@ robi: Wenn du möchtest, kannst du die folgende Zusammenfassung gern für dein Wiki verwenden.
Meine Anleitung bezieht sich nur auf das gesammte Thema der "Block Device Encryption" , das es da jedoch auch noch eine zweite prinzipielle Methode die "Stacked Filesystem Encryption" gibt, habe ich glatt unter den Tisch fallen lassen. :eek:ps:
Na ja, da merkt gleich wieder das ich Suse-lastig bin.

Ich werde das natürlich bei Gelegenheit (im Moment bin ich verhindert) ändern und selbstverständlich auch in der nächsten Version bei ext4 die Unterstützung für ecryptfs-Dateien einbauen, dann wird es unter ext4magic auch möglich sein noch die eine oder andere gelöschte Datei zu finden auch wenn keine alte Inodekopie mehr zu finden ist. Eventull gibt es auch noch ein kleines Script, das aus den namenlos revocerten Dateien auch noch die ecryptfs-Dateien herausfinden kann, wird notwendig werden wenn sich ecryptfs-verschlüsselte und unverschlüsselte Dateien gemeinsam ein einem Filesystem befinden, und die typische Methode mit "file" Dateien zu sortieren, funktioniert hier ja überhaupt nicht.

Deine Anleitung scheint sich auf aktuelle Versionen von ecryptfs zu beziehen, hier auf meiner Testmaschine (OpenSuse 11.2) sind die Optionen und das Verhalten einiger Befehle noch ein wenig anders, einige der Tools und Möglichkeiten sind auch noch gar nicht vorhanden. Prinzipell geht es aber auch hier. Bei ?buntu ist ecryptfs quasi der default Standard, dort ist man natürlich da immer moderner.

robi
 
A

Anonymous

Gast
robi schrieb:
Ich werde das natürlich bei Gelegenheit (im Moment bin ich verhindert) ändern und selbstverständlich auch in der nächsten Version bei ext4 die Unterstützung für ecryptfs-Dateien einbauen, dann wird es unter ext4magic auch möglich sein noch die eine oder andere gelöschte Datei zu finden auch wenn keine alte Inodekopie mehr zu finden ist. Eventull gibt es auch noch ein kleines Script, das aus den namenlos revocerten Dateien auch noch die ecryptfs-Dateien herausfinden kann, wird notwendig werden wenn sich ecryptfs-verschlüsselte und unverschlüsselte Dateien gemeinsam ein einem Filesystem befinden, und die typische Methode mit "file" Dateien zu sortieren, funktioniert hier ja überhaupt nicht
Siehe auch hier

Wenn jemand testen möchte, Patch für 0.3.0
in diesen 0.3.0 Paketen ist er schon ab heute schon eingebaut. Der Rest muss noch selbst kompilieren.
Das Script ist auch fertig , würde man brauchen vor allem für Dateien der mittleren Recoverstufe die zwischen anderen unbekannten Dateien im Verzeichnis
"RECOVERDIR/MAGIC-2/application/octet-stream/" ankommen.
Code:
#!/bin/bash
# Script:       is_ecryptfs.sh
#
# To find out ecrytfs files in nameless files
# usage :         is_ecryptfs.sh filename
#
# If file is a ecryptfs, print filename and return (0) ; else  return (1)
# Example: # find -type f -exec is_ecryptfs.sh {} \;
# Autor: robi@users.berlios.de (V1.0 05.04.2012)

if [ $# == 1 ]
then
   if [ ! -f "$1" ]
   then
        echo "$1 : is not a regular file" >/dev/fd/2
        exit 1
   else
        if [ ! -r "$1" ]
        then
          echo "$1 : can not read file" >/dev/fd/2
          exit 1
        else
          if [ ! -s "$1" ]
             then exit 1  # zero file
          fi
        fi
   fi
else
     echo "usage $0 filename" >/dev/fd/2
     exit 1;
fi

od -N16 -t "u1" "$1" | awk '
BEGIN {NAME = "'"$1"'"}
$1 == 0000000 {
if ((xor($10,$14)==60) && (xor($11,$15)==129) &&
     (xor($12,$16)==183) && (xor($13,$17)==245)) {
        print NAME
        exit 0 }
  else
        exit 1  }'
#----------End Script------------------------------

Spezielle Doku oder Howto wie man seine gelöschte ecryptfs Dateien wieder gewinnen kann, gibt's noch keine, Hoffe noch, dass jemand von ?ubuntu (dort ist dieses die Standard Verschlüsselung) ein bisschen mit hilft einen spezielles Howto zusammen zu basteln.

robi
 
Oben