Die Datei ist auf mysteriöse Weise leer. Optionen zur Wiederherstellung?


9

Ich habe mehrere Beiträge zum Wiederherstellen gelöschter Dateien gesehen, aber diese Situation ist anders. Meine Frau hatte eine Datei namens Journal.odt, in der sie viele wichtige persönliche Informationen wie besondere Erinnerungen an unsere Kinder aufbewahrte. Als sie neulich versuchte, es in OpenOffice zu öffnen, beschwerte sie sich über das Format. Ich ließ sie abbrechen und wieder raus. Wenn ich catdie Datei habe, ist sie komplett leer. lssagt, dass die Datei 0 Bytes ist.

Hätte sie versehentlich den gesamten Text in der Datei ausgewählt, die Rücktaste gedrückt und ihn gespeichert, wären immer noch die OpenOffice-Metainformationen in der Datei.

Ich habe ihren Laptop sofort heruntergefahren, um weitere Änderungen an der Festplatte zu verhindern, bis mir etwas einfällt.

Ich habe in der Vergangenheit einige komplizierte Dinge getan, z. B. dddas Wiederherstellen von Rohtext von der Festplatte, aber ich habe keine Ahnung, was ich hier tun soll. Da Odt-Dateien kein flacher Text sind, kann ich nicht einfach die gesamte Festplatte durch grep leiten.

Anregungen wäre sehr dankbar.

Auch wenn jemand einen Einblick hat, was schief gelaufen sein könnte, würde ich es gerne hören.

Vielen Dank


1
Es wäre anders, wenn die Datei versehentlich gelöscht würde oder so, aber wenn sie in einem Texteditor usw. gespeichert wird, schreibt das Speichern der Datei häufig "an Ort und Stelle" und löscht effektiv alles, was mit der Wiederherstellung der forensischen Stärke hätte wiederhergestellt werden können. Es wäre besser gewesen, wenn Sie das System nicht sofort heruntergefahren hätten. Ich wette, ein paar Tastendrücke + z (integrierte Funktion "Rückgängig" in Open Office) hätten das Problem behoben.
Tim

@ Tim Ich verstehe Ihren Standpunkt, aber leider wurde die Datei Tage zuvor geleert. Die letzte Änderungszeit in der Datei war einige Tage zuvor. In meiner Beschreibung war es bereits leer, als sie es in OO öffnete. Trotzdem danke.
jcbwlkr

2
Sie versuchen nicht, ein totes Pferd zu schlagen oder einen Mann zu treten, wenn er unten ist, aber ich vermute, dass Sie aufgrund dieser Erfahrung nach einer Backup-Lösung suchen. Schauen Sie sich "Areca Backup" für eine einfache, Linux-kompatible Backup-Anwendung an.
Tim

Festplatte vielleicht voll? Überprüfen Sie mitdf -h
Jippie

@Tim Wenn die Datei 0 Byte groß ist, handelt es sich nicht um ein OO-Dokument. Ctrl+Zhätte nichts getan, da die Datei nicht wie von OO gespeichert wurde. @ Jacobwalker0814 ODT-Dateien sind Zip-Dateien, sodass Wiederherstellungstools wie testdisk die Möglichkeit haben, sie zu finden. Es gibt jedoch keine Garantie, und selbst wenn die Daten noch vorhanden sind, müssen Sie möglicherweise viele andere Zip-Dateien durchsuchen. Und für die Zukunft sichern Sie sich!
Gilles 'SO - hör auf böse zu sein'

Antworten:


3

Wenn Sie das ext3-Dateisystem verwenden, befolgen Sie das HOWTO von Carlo Wood

In wenigen Worten,

  • Verwenden Sie ext3grep $ IMAGE --ls --inode 2 | grep your_file, um die gesuchte Datei zu finden (wobei $ IMAGE Ihre Partition ist, zum Beispiel / dev / sda2)
  • Suchen Sie den Dateisystemblock, der das Journal des nicht zugewiesenen Speicherplatzes enthält.
  • Suchen Sie alle Journal-Deskriptoren, die auf den zuvor gefundenen Block verweisen.
  • Kopieren Sie den Block mit dd.
  • Bearbeiten Sie die Datei, um die nachfolgenden Nullen zu löschen.
  • Katze die Datei, wo immer du willst

Aus der Quelle:

"Das Kapitel Manuelle Wiederherstellung Beispiel

Im folgenden Beispiel wird eine kleine Datei manuell wiederhergestellt. Es wird nur eine Teilausgabe gegeben, um Platz zu sparen und das Beispiel besser lesbar zu machen.

Mit ext3grep $ IMAGE --ls --inode finden wir den Namen der Datei, die wir wiederherstellen möchten:

$ ext3grep $ IMAGE --ls --inode 2 | grep carlo 3 end d 195457 D 1202352103 Do 7 Feb 03:41:43 2008 drwxr-xr-x carlo

$ ext3grep $ IMAGE --ls --inode 195457 | grep 'bin $' | head -n 1 34 35 d 309540 D 1202352104 Do 7. Februar 03:41:44 2008 drwxr-xr-x bin

$ ext3grep $ IMAGE --ls --inode 309540 | grep start_azureus 9 10 r 309631 D 1202351093 Do 7. Februar 03:24:53 2008 rrwxr-xr-x start_azureus

Offensichtlich wird Inode 309631 gelöscht und wir haben keine Blocknummern für diese Datei:

$ ext3grep $ IMAGE --print --inode 309631 [...] Inode ist nicht zugeordnet Gruppe: 19 Generierungs-ID: 2771183319 UID / GID: 1000/1000 Modus: rrwxr-xr-x Größe: 0 Anzahl der Links: 0 Sektoren: 0 (-> 0 indirekte Blöcke).

Inode-Zeiten: Zugriff: 1202350961 = Do 7. Februar 03:22:41 2008 Datei geändert: 1202351093 = Do 7. Februar 03:24:53 2008 Inode geändert: 1202351093 = Do 7. Februar 03:24:53 2008 Löschzeit: 1202351093 = Do. 7. Februar 03:24:53 2008

Direkte Blöcke:

Daher werden wir versuchen, im Journal nach einer älteren Kopie davon zu suchen. Zuerst finden wir den Dateisystemblock, der diesen Inode enthält:

$ ext3grep $ IMAGE --inode-to-block 309631 | grep befindet sich Inode 309631 befindet sich in Block 622598 mit dem Offset 0xf00.

Dann finden wir alle Journaldeskriptoren, die auf Block 622598 verweisen:

$ ext3grep $ IMAGE --journal --block 622598 [...] Journaldeskriptoren, die auf Block 622598 verweisen: 4381294 26582 4381311 28693 4381313 28809 4381314 28814 4381321 29308 4381348 30676 4381349 30986 4381350 31299 4381374 32718 438178 438178 3188 4382137 6672 4382138 7536 4382139 7984 4382140 8931

Dies bedeutet, dass die Transaktion mit der Sequenznummer 4381294 eine Kopie von Block 622598 in Block 26582 usw. enthält. Die größte Sequenznummer unten sollte die letzten auf die Festplatte geschriebenen Daten sein, und daher sollte Block 8931 mit dem aktuellen Block 622598 identisch sein. Um die letzte nicht gelöschte Kopie zu finden, sollte man unten beginnen und arbeiten nach oben.

Wenn Sie versuchen, einen solchen Block zu drucken, erkennt ext3grep, dass es sich um einen Block aus einer Inode-Tabelle handelt, und druckt den Inhalt aller 32 darin enthaltenen Inodes. Wir möchten jedoch nur inode 309631 sehen; Also verwenden wir einen intelligenten Grep:

$ ext3grep $ IMAGE --print --block 8931 | grep -A15 'Inode 309631' -------------- Inode 309631 ----------------------- Generierungs-ID: 2771183319 uid / gid: 1000/1000 Modus: rrwxr-xr-x Größe: 0 Anzahl der Links: 0 Sektoren: 0 (-> 0 indirekte Blöcke).

Inode-Zeiten: Zugriff: 1202350961 = Do 7. Februar 03:22:41 2008 Datei geändert: 1202351093 = Do 7. Februar 03:24:53 2008 Inode geändert: 1202351093 = Do 7. Februar 03:24:53 2008 Löschzeit: 1202351093 = Do. 7. Februar 03:24:53 2008

Direkte Blöcke:

Dies ist in der Tat das gleiche wie in Block 622598. Als nächstes betrachten wir kleinere Sequenznummern, bis wir eine mit einer Löschzeit von 0 finden. Der erste, den wir finden (von unten nach oben), ist Block 6073:

$ ext3grep $ IMAGE --print --block 6073 | grep -A15 'Inode 309631' -------------- Inode 309631 ----------------------- Generierungs-ID: 2771183319 uid / gid: 1000/1000 Modus: rrwxr-xr-x Größe: 40 Anzahl der Links: 1 Sektoren: 8 (-> 0 indirekte Blöcke).

Inode-Zeiten: Zugriff: 1202350961 = Do 7. Februar 03:22:41 2008 Datei geändert: 1189688692 = Do 13. September 15:04:52 2007 Inode geändert: 1189688692 = Do 13. September 15:04:52 2007 Löschzeit: 0

Direkte Blöcke: 645627

Das oben Genannte ist automatisiert und kann mit der Befehlszeilenoption --show-journal-inodes viel schneller ausgeführt werden. Diese Option findet den Block, zu dem der Inode gehört, findet dann alle Kopien dieses Blocks im Journal und druckt anschließend nur den angeforderten Inode aus jedem dieser Blöcke (von denen jeder bekanntlich 32 Inodes enthält), wodurch Duplikate entfernt werden ::

$ ext3grep $ IMAGE --show-journal-inodes 309631 Anzahl der Gruppen: 75 Minimaler / maximaler Journalblock: 1115/35026 Laden von Journaldeskriptoren ... erledigt Die Journaltransaktion 4381435 wird umbrochen. Einige Datenblöcke dieser Transaktion sind möglicherweise verloren gegangen. Anzahl der Deskriptoren im Journal: 30258; Min / Max-Sequenznummern: 4379495/4382264 Kopien von Inode 309631 im Journal gefunden:

-------------- Inode 309631 ----------------------- Generierungs-ID: 2771183319 uid / gid: 1000/1000 Modus: rrwxr-xr-x Größe: 0 Anzahl der Links: 0 Sektoren: 0 (-> 0 indirekte Blöcke).

Inode-Zeiten: Zugriff: 1202350961 = Do 7. Februar 03:22:41 2008 Datei geändert: 1202351093 = Do 7. Februar 03:24:53 2008 Inode geändert: 1202351093 = Do 7. Februar 03:24:53 2008 Löschzeit: 1202351093 = Do. 7. Februar 03:24:53 2008

Direkte Blöcke:

-------------- Inode 309631 ----------------------- Generierungs-ID: 2771183319 uid / gid: 1000/1000 Modus: rrwxr-xr-x Größe: 40 Anzahl der Links: 1 Sektoren: 8 (-> 0 indirekte Blöcke).

Inode-Zeiten: Zugriff: 1202350961 = Do 7. Februar 03:22:41 2008 Datei geändert: 1189688692 = Do 13. September 15:04:52 2007 Inode geändert: 1189688692 = Do 13. September 15:04:52 2007 Löschzeit: 0

Direkte Blöcke: 645627

Die Datei ist in der Tat klein: nur ein Block. Wir kopieren diesen Block mit dd wie zuvor gezeigt:

$ dd if = $ IMAGE bs = 4096 count = 1 skip = 645627 of = block.645627 1 + 0 Datensätze in 1 + 0 Datensätze aus 4096 Bytes (4,1 kB) kopiert, 0,0166104 Sekunden, 247 kB / s

und bearbeiten Sie dann die Datei, um die nachfolgenden Nullen zu löschen, oder kopieren Sie die ersten 40 Bytes (die angegebene Größe der Datei):

$ dd if = block.645627 bs = 1 count = 40 of = start_azureus 40 + 0 Datensätze in 40 + 0 Datensätze aus 40 Bytes (40 B) kopiert, 0,000105397 Sekunden, 380 kB / s

$ cat start_azureus cd / usr / src / azureus / azureus ./azureus &

Genesen! "


Ich würde mir das gerne ansehen, aber der Link scheint tot zu sein.
jcbwlkr

3
Scheint mir nicht tot zu sein.
Herr Lister

Ja, ich kann auch darauf zugreifen.
Java_xof

Es funktioniert jetzt gut. Es war definitiv nicht früher. Wer weiß? Danke, Java. Ich werde es mir ansehen.
jcbwlkr

Kein Problem, hoffe das hilft dir, nichts für ungut, aber ich weiß etwas über Interaktion Frau <-> Computer;)
java_xof

2

Versuchen Sie es mit testdisk und photorec , aber die Art und Weise, wie ich Ihr Schreiben verstehe, ist wahrscheinlich der schwierige Weg, den Wert regelmäßiger Sicherungen zu ermitteln. Möglicherweise möchten Sie auch von CD booten, um zu verhindern, dass die Festplatte noch weiter geändert wird. Ich persönlich mag System Rescue Disk dafür, aber es basiert größtenteils auf der Befehlszeile.


1

Verwenden Sie Caine, eine spezielle Linux-Distribution für die digitale Forensik. Es gibt viele Tools für die Wiederherstellung von Dateien und Festplatten.


Vielen Dank. Ich werde in diese Distribution schauen und sehen, ob sie etwas hat. Haben Sie Empfehlungen zu bestimmten Tools oder Möglichkeiten, um das Problem anzugehen? Das Problem hierbei ist, dass die Datei nicht gelöscht wurde, was viele Tools zu beheben scheinen. es hat nur seinen Inhalt verloren.
jcbwlkr

1
Open Office erstellt manchmal eine versteckte Datei, die das zuvor gespeicherte Dokument enthält. Wenn Sie Glück haben, können Sie versuchen, es mit beispielsweise "extundelete" oder "testdisk" wiederherzustellen. Cgsecurity.org/wiki/TestDisk
PsyStyle

Schauen Sie in ~ / .openoffice.org / 3 / user / backup / oder ~ / .libreoffice.org / 3 / user / backup / nach. Ich habe ein Skript geschrieben, um diese Verzeichnisse zu löschen, damit vertrauliche Dinge, die ich gelöscht habe, nicht mehr vorhanden waren.
Joe
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.