File kosong secara misterius. Opsi untuk dipulihkan?

9

Saya telah melihat beberapa posting tentang memulihkan file yang dihapus, tetapi situasi ini berbeda. Istri saya memiliki file bernama Journal.odt di mana dia menyimpan banyak informasi pribadi yang penting seperti kenangan khusus tentang anak-anak kita. Suatu hari ketika dia mencoba membukanya di OpenOffice itu mengeluh tentang formatnya. Saya meminta dia untuk membatalkan dan mundur. Ketika saya catfile itu benar-benar kosong. lsmengatakan file tersebut 0 byte.

Seandainya dia tidak sengaja memilih semua teks dalam file, tekan backspace dan menyimpannya masih akan ada informasi meta OpenOffice dalam file.

Saya segera mematikan laptopnya untuk mencegah perubahan pada disk sampai saya dapat memikirkan sesuatu untuk dilakukan.

Saya telah melakukan beberapa hal rumit di masa lalu seperti menggunakan dduntuk memulihkan teks mentah dari disk tetapi saya tidak tahu apa yang harus dilakukan di sini. Karena file odt bukan teks datar saya tidak bisa hanya mem-pipe keseluruhan disk melalui grep.

Setiap saran akan sangat dihargai.

Juga jika ada yang memiliki wawasan tentang apa yang mungkin salah, saya akan senang mendengarnya.

Terima kasih

jcbwlkr
sumber
1
Akan berbeda jika file itu sengaja dihapus atau sesuatu, tetapi ketika di editor teks, dll menyimpan file sering menulis "di tempat" secara efektif menghapus apa pun yang bisa dipulihkan dengan pemulihan kekuatan forensik. Akan lebih baik jika Anda tidak mematikan sistem dengan segera, saya yakin beberapa penekanan kontrol + z (dibangun pada fungsi "undo" di Open Office) akan memperbaiki masalah ini.
Tim
@Tim Saya mengerti maksud Anda, tetapi sayangnya file tersebut sudah dikosongkan beberapa hari sebelumnya. Waktu modifikasi terakhir pada file adalah beberapa hari sebelumnya. Dalam uraian saya ketika dia membukanya di OO itu sudah kosong. Terimakasih Meskipun.
jcbwlkr
2
Tidak mencoba untuk mengalahkan kuda mati, atau menendang seorang pria ketika dia turun, tapi saya curiga pengalaman ini akan membuat Anda mencari solusi cadangan. Lihatlah "Areca Backup" untuk aplikasi cadangan sederhana yang kompatibel dengan Linux.
Tim
Disk penuh mungkin? Periksa dengandf -h
jippie
@Tim Jika file tersebut 0 byte, ini bukan dokumen OO; Ctrl+Zakan melakukan apa-apa, karena file tersebut tidak disimpan seperti oleh OO. @ Jacobwalker0814 File ODT adalah file zip, jadi alat pemulihan seperti testdisk memiliki peluang untuk menemukannya; tetapi tidak ada jaminan, dan bahkan jika data masih ada Anda mungkin harus mengarungi banyak file zip lainnya. Dan untuk masa depan, lakukan back up!
Gilles 'SANGAT berhenti menjadi jahat'

Jawaban:

3

Jika Anda menggunakan sistem file ext3 coba ikuti Carlo Wood's HOWTO

Dalam beberapa kata,

  • Gunakan ext3grep $ IMAGE --ls --inode 2 | grep your_file untuk menemukan file yang Anda cari (di mana $ IMAGE adalah partisi Anda misalnya / dev / sda2)
  • Temukan blok sistem file yang berisi jurnal ruang yang tidak terisi.
  • Temukan semua referensi jurnal blok referensi yang ditemukan sebelumnya.
  • Salin blok dengan dd.
  • Edit file untuk menghapus nol yang tertinggal.
  • cat file dimanapun kamu inginkan

Dari sumber:

"Contoh bab Pemulihan manual

Dalam contoh berikut ini, kami akan memulihkan file kecil secara manual. Hanya sebagian output yang diberikan untuk menghemat ruang dan membuat contoh lebih mudah dibaca.

Menggunakan ext3grep $ IMAGE --ls --inode kami menemukan nama file yang ingin kami pulihkan:

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

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

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

Jelas, inode 309631 terhapus dan kami tidak memiliki nomor blok untuk file ini:

$ ext3grep $ IMAGE --print --inode 309631 [...] Inode adalah Unallocated Grup: 19 Id Generasi: 2771183319 uid / gid: mode 1000/1000: rrwxr-xr-x ukuran: 0 jumlah tautan: 0 sektor: 0 (-> 0 blok tidak langsung).

Waktu Inode: Diakses: 1202350961 = Kamis 7 Februari 03:22:41 2008 File Dimodifikasi: 1202351093 = Kamis 7 Februari 03:24:53 2008 Inode Dimodifikasi: 1202351093 = Kamis 7 Februari 03:24:53 2008 Waktu penghapusan: 1202351093 = Kamis 7 Februari 03:24:53 2008

Blok Langsung:

Karenanya, kami akan mencoba mencari salinannya yang lebih lama di jurnal. Pertama, kami menemukan blok sistem file yang berisi inode ini:

$ ext3grep $ IMAGE --inode-to-block 309631 | grep berada Inode 309631 berada di blok 622598 pada offset 0xf00.

Kemudian kami menemukan semua penjelas referensi jurnal blok 622598:

$ ext3grep $ IMAGE --journal --block 622598 [...] Penjelas deskriptor jurnal referensi 622598: 4381294 26582 4381311 28693 4381313 28809 4381314 29308 4381321 29308 4381348 30986 4381349 30986 438308487487307 4382137 6672 4382138 7536 4382139 7984 4382140 8931

Ini berarti bahwa transaksi dengan nomor urut 4381294 memiliki salinan blok 622598 di blok 26582, dan seterusnya. Nomor urutan terbesar, di bagian bawah, harus menjadi data terakhir yang ditulis ke disk dan dengan demikian blok 8931 harus sama dengan blok saat ini 622598. Untuk menemukan salinan yang tidak terhapus yang terakhir, seseorang harus mulai dari bawah dan bekerja ke atas.

Jika Anda mencoba untuk mencetak blok seperti itu, ext3grep mengakui bahwa itu adalah blok dari tabel inode dan akan mencetak konten dari semua 32 inode di dalamnya. Kami hanya ingin melihat inode 309631; jadi kami menggunakan smart grep:

$ ext3grep $ IMAGE --print --block 8931 | grep -A15 'Inode 309631' -------------- Inode 309631 ----------------------- ID Generasi: 2771183319 uid / gid: mode 1000/1000: rrwxr-xr-x ukuran: 0 num tautan: 0 sektor: 0 (-> 0 blok tidak langsung).

Waktu Inode: Diakses: 1202350961 = Kamis 7 Februari 03:22:41 2008 File Dimodifikasi: 1202351093 = Kamis 7 Februari 03:24:53 2008 Inode Dimodifikasi: 1202351093 = Kamis 7 Februari 03:24:53 2008 Waktu penghapusan: 1202351093 = Kamis 7 Februari 03:24:53 2008

Blok Langsung:

Ini memang sama dengan yang kita lihat di blok 622598. Selanjutnya kita melihat nomor urut yang lebih kecil sampai kita menemukan satu dengan waktu penghapusan 0. Yang pertama kami temukan (dari bawah ke atas) adalah blok 6073:

$ ext3grep $ IMAGE --print --block 6073 | grep -A15 'Inode 309631' -------------- Inode 309631 ----------------------- ID Generasi: 2771183319 uid / gid: mode 1000/1000: rrwxr-xr-x ukuran: 40 num tautan: 1 sektor: 8 (-> 0 blok tidak langsung).

Waktu Inode: Diakses: 1202350961 = Kamis 7 Februari 03:22:41 2008 File Dimodifikasi: 1189688692 = Kamis 13 September 15:04:52 2007 Inode Dimodifikasi: 1189688692 = Kamis 13 September 15:04:52 2007 Waktu penghapusan: 0

Blok Langsung: 645627

Di atas adalah otomatis dan dapat dilakukan jauh lebih cepat dengan opsi baris perintah --show-journal-inodes. Opsi ini akan menemukan blok yang dimiliki oleh inode, kemudian menemukan semua salinan dari blok itu di jurnal, dan kemudian hanya mencetak inode yang diminta dari masing-masing blok ini (masing-masing berisi 32 inode, seperti yang Anda tahu), menghilangkan duplikat :

$ ext3grep $ IMAGE --show-journal-inodes 309631 Jumlah grup: 75 Minimum / maksimum blok jurnal: 1115/35026 Memuat deskriptor jurnal ... selesai Transaksi jurnal 4381435 dibungkus, beberapa blok data mungkin hilang dari transaksi ini. Jumlah deskriptor dalam jurnal: 30258; nomor urutan min / maks: 4379495/4382264 Salinan inode 309631 ditemukan dalam jurnal:

-------------- Inode 309631 ----------------------- ID Generasi: 2771183319 uid / gid: 1000/1000 mode: rrwxr-xr-x ukuran: 0 num tautan: 0 sektor: 0 (-> 0 blok tidak langsung).

Waktu Inode: Diakses: 1202350961 = Kamis 7 Februari 03:22:41 2008 File Dimodifikasi: 1202351093 = Kamis 7 Februari 03:24:53 2008 Inode Dimodifikasi: 1202351093 = Kamis 7 Februari 03:24:53 2008 Waktu penghapusan: 1202351093 = Kamis 7 Februari 03:24:53 2008

Blok Langsung:

-------------- Inode 309631 ----------------------- ID Generasi: 2771183319 uid / gid: 1000/1000 mode: rrwxr-xr-x ukuran: 40 num tautan: 1 sektor: 8 (-> 0 blok tidak langsung).

Waktu Inode: Diakses: 1202350961 = Kamis 7 Februari 03:22:41 2008 File Dimodifikasi: 1189688692 = Kamis 13 September 15:04:52 2007 Inode Dimodifikasi: 1189688692 = Kamis 13 September 15:04:52 2007 Waktu penghapusan: 0

Blok Langsung: 645627

File ini memang kecil: hanya satu blok. Kami menyalin blok ini dengan dd seperti yang ditunjukkan sebelumnya:

$ dd if = $ IMAGE bs = 4096 count = 1 skip = 645627 dari = block.645627 1 + 0 mencatat dalam 1 + 0 mencatat 4096 byte (4,1 kB) disalin, 0,0166104 detik, 247 kB / s

dan kemudian edit file untuk menghapus nol trailing, atau salin 40 byte pertama (ukuran file yang diberikan):

$ dd if = block.645627 bs = 1 count = 40 dari = start_azureus 40 + 0 catatan dalam 40 + 0 catatan dari 40 byte (40 B) disalin, 0,000105397 detik, 380 kB / s

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

Dipulihkan! "

java_xof
sumber
Saya ingin sekali melihatnya, tetapi tautannya tampaknya sudah mati.
jcbwlkr
3
Sepertinya tidak mati bagiku.
Tn. Lister
ya, saya bisa mengaksesnya juga.
java_xof
Sekarang berfungsi dengan baik. Jelas bukan sebelumnya. Siapa tahu? Terima kasih, java. Saya akan melihatnya.
jcbwlkr
Tidak masalah, harap ini membantu Anda, jangan tersinggung tapi saya tahu sesuatu tentang interaksi istri <-> komputer;)
java_xof
2

Coba testdisk dan photorec , tetapi cara saya memahami tulisan Anda mungkin adalah cara yang sulit untuk mempelajari nilai cadangan reguler. Anda juga mungkin ingin mem-boot dari CD untuk mencegah perubahan harddisk lebih jauh. Saya pribadi suka System Rescue Disk untuk ini, tetapi sebagian besar berbasis perintah.

jippie
sumber
1

Gunakan Caine distribusi linux khusus untuk forensik digital. Banyak alat untuk pemulihan file dan hard disk.

PsyStyle
sumber
Terima kasih. Saya akan melihat ke distro itu dan melihat apakah ada sesuatu. Apakah Anda memiliki rekomendasi tentang alat khusus atau cara untuk mendekati masalah ini? Masalahnya di sini adalah bahwa file tersebut tidak dihapus yang tampaknya ditangani oleh banyak alat; itu baru saja kehilangan isinya.
jcbwlkr
1
Open Office terkadang membuat file tersembunyi yang berisi dokumen tersimpan sebelumnya. Jika Anda beruntung, Anda dapat mencoba memulihkannya menggunakan misalnya "extundelete" atau " testdisk
PsyStyle
Lihat di ~ / .openoffice.org / 3 / user / backup / atau ~ / .libreoffice.org / 3 / user / backup / Saya menulis sebuah skrip untuk menghapus direktori ini sehingga hal-hal sensitif yang saya hapus tidak ada di sana.
Joe