GNU/Linux >> Belajar Linux >  >> Linux

Temukan file yang hilang dengan Pisau Bedah

Sebagai administrator sistem, bagian dari tanggung jawab Anda adalah membantu pengguna mengelola data mereka. Salah satu aspek penting untuk melakukannya adalah memastikan organisasi Anda memiliki rencana pencadangan yang baik, dan bahwa pengguna Anda membuat pencadangan mereka secara teratur, atau tidak perlu melakukannya karena Anda telah mengotomatiskan prosesnya.

Namun, terkadang yang terburuk terjadi. File terhapus secara tidak sengaja, sistem file rusak, atau partisi hilang, dan untuk alasan apa pun, cadangan tidak berisi apa yang Anda butuhkan.

Seperti yang telah kita bahas di Cara mencegah dan memulihkan dari penghapusan file yang tidak disengaja di Linux, sebelum mencoba memulihkan data yang hilang, Anda harus mencari tahu mengapa data tersebut hilang. Mungkin saja pengguna salah menempatkan file, atau ada cadangan yang tidak diketahui pengguna. Tetapi jika pengguna memang telah menghapus file tanpa cadangan, maka Anda tahu bahwa Anda perlu memulihkan file yang dihapus. Namun, jika tabel partisi telah diacak, file tersebut tidak benar-benar hilang sama sekali, dan Anda mungkin ingin mempertimbangkan untuk menggunakan TestDisk untuk memulihkan tabel partisi, atau partisi itu sendiri.

Apa yang terjadi jika pemulihan file atau partisi Anda tidak berhasil, atau hanya sebagian? Maka saatnya untuk Pisau Bedah. Pisau bedah melakukan operasi pengukiran file berdasarkan pola yang menjelaskan jenis file unik. Ia mencari pola ini berdasarkan string biner dan ekspresi reguler, lalu mengekstrak file yang sesuai.

Alat ini saat ini tidak dipertahankan, tetapi selalu dapat diandalkan, dikompilasi, dan berjalan persis seperti yang diharapkan. Jika Anda menjalankan Red Hat Enterprise Linux (RHEL) 7, RHEL 8, atau Fedora, Anda dapat mendownload installer RPM Scalpel, beserta ketergantungannya, libtre , dari klaatu.fedorapeople.org.

Memulai dengan Pisau Bedah

Scalpel hadir dibundel dengan daftar lengkap jenis file dan fitur pengidentifikasinya yang paling unik. Terkadang, sebuah file dapat diidentifikasi dengan teks yang dapat diprediksi di bagian kepala dan ekornya:

htm    n    50000   <html         </html>

Sementara di lain waktu, kode hex yang tampak samar diperlukan:

jpg     y     200000000     \xff\xd8\xff\xe0\x00\x10     \xff\xd9

Scalpel mengharapkan Anda untuk menduplikasi /etc/scalpel.conf edit salinan Anda untuk menyertakan jenis file yang ingin Anda pulihkan, dan untuk mengecualikan jenis file yang Anda tahu tidak Anda perlukan. Misalnya, jika Anda tahu bahwa Anda tidak memiliki atau tidak peduli dengan .fws file, lalu komentari baris itu dari file. Melakukan hal ini dapat mempercepat proses pemulihan dan mengurangi positif palsu.

Dalam file konfigurasi, format definisi file, dari kiri ke kanan:

  • Ekstensi file.
  • Apakah header dan footer peka huruf besar/kecil (y atau n ).
  • Ukuran file minimum dan maksimum yang Anda inginkan untuk ditemukan oleh Scalpel.
  • Header standar yang mengidentifikasi awal file.
  • Footer standar yang mengidentifikasi akhir file.

footer lapangan adalah opsional. Jika tidak ada footer yang disediakan, maka Scalpel akan mengekstrak jumlah byte yang Anda tetapkan sebagai nilai maksimum jenis file.

Anda mungkin menemukan bahwa upaya pemulihan hanya menyelamatkan sebagian file, seperti JPG yang sebagian besar dipulihkan ini:

Hasil ini berarti Anda mungkin perlu meningkatkan nilai maksimum batas file, lalu memindai ulang, sehingga bagian akhir file juga dapat dipulihkan:

Mendefinisikan jenis file baru

Pertama, buat salinan file konfigurasi Scalpel. Jika semua pengguna Anda menghasilkan data yang serupa, Anda mungkin hanya memerlukan satu file konfigurasi untuk seluruh organisasi Anda. Atau, Anda mungkin merasa lebih baik memiliki satu file konfigurasi per departemen.

Untuk menambahkan jenis file Anda sendiri ke konfigurasi Scalpel, mulailah dengan beberapa forensik investigasi.

Untuk file teks, Anda idealnya memiliki beberapa struktur yang dapat diprediksi yang dapat Anda antisipasi. Misalnya, file XML mungkin dimulai dengan <xml dan diakhiri dengan </xml . File biner juga dapat diprediksi. Menggunakan hexdump perintah, Anda dapat melihat header khas dari jenis file yang ingin Anda tentukan. Inilah hasil untuk XCF, file grafik berlapis default dari GIMP:

$ head --bytes 8 example.xcf | hexdump --canonical
00000000  67 69 6d 70 20 78 63 66         |gimp xcf|
00000008

Keluaran ini dari sistem Red Hat Enterprise Linux 8. Pada sistem yang lebih lama, sintaks yang lebih lama mungkin diperlukan:

$ head --bytes 8 example.xcf | hexdump -C
00000000  67 69 6d 70 20 78 63 66         |gimp xcf|
00000008

Keluaran kanonik dari hexdump menampilkan alamat di kolom paling kiri, dan nilai yang diterjemahkan di paling kanan. Di kolom tengah adalah byte heksadesimal dari 8 byte pertama baris pertama file XCF.

Sebagian besar file biner di /etc/scalpel.conf terlihat sangat mirip dengan output itu, kecuali bahwa nilai-nilai ini diawali dengan \x escape sequence untuk menunjukkan bahwa angka-angka tersebut sebenarnya adalah digit heksadesimal. Misalnya, file JPG terlihat seperti ini di file konfigurasi:

jpg     y     200000000     \xff\xd8\xff\xe0\x00\x10     \xff\xd9

Bandingkan nilai tersebut dengan hexdump uji dari 6 byte pertama (karena itulah berapa banyak byte scalpel.conf berisi dalam definisi JPG-nya) dari file JPG apa pun di sistem Anda:

$ head --bytes 6 example.jpg | | hexdump --canonical
00000000  ff d8 ff e0 00 10                    |......|
00000006

Bandingkan footer dengan 2 byte terakhir agar sesuai dengan apa yang ditampilkan file konfigurasi:

$ tail --bytes -2 example.jpg | hexdump --canonical
00000000  ff d9                        |..|
00000002

Nilai-nilai ini cocok, sehingga Anda dapat yakin bahwa file JPG yang valid mungkin semuanya dimulai dan diakhiri dengan urutan yang dapat diprediksi.

Catatan: Entri Ogg di scalpel.conf file menyesatkan, karena tidak memiliki \x urutan pelarian. Jika Anda perlu memulihkan file Ogg, perbaiki ini, atau ganti definisinya.

Mulai bekerja

Sekarang, untuk mendapatkan tingkat kepercayaan yang sama untuk semua file yang perlu Anda pulihkan (seperti XCF, pada contoh sebelumnya). Untuk mengulangi, ini adalah alur kerja Anda untuk menentukan jenis file biner yang umum untuk drive korban: 

  1. Dapatkan nilai heksadesimal dari beberapa byte pertama dari jenis file menggunakan head --bytes n perintah.
  2. Dapatkan beberapa byte terakhir menggunakan tail --bytes -n perintah.
  3. Ulangi proses ini pada beberapa file berbeda dengan jenis yang sama untuk mengonfirmasi konsistensi pola ini, dengan menyesuaikan panjang pola header dan footer sesuai kebutuhan.
  4. Masukkan nilai header dan footer ke dalam konfigurasi Scalpel kustom Anda, menggunakan \x notasi untuk mengidentifikasi setiap byte sebagai karakter heksadesimal.

Ikuti urutan ini untuk setiap jenis file biner penting yang perlu Anda pulihkan.

Jika file berupa teks biasa, berikan header dan footer yang sama, seperti #!/bin/sh untuk skrip shell, # (spasi setelah # penting) untuk file penurunan harga dengan judul level h1, <xml untuk file XML, dan seterusnya.

Saat Anda siap menjalankan Scalpel, buat direktori di mana ia dapat menempatkan file Anda yang telah diselamatkan:

$ mkdir /run/media/seth/rescuer/scalped

Catatan: Jangan membuat direktori ini pada volume yang sama yang berisi data yang hilang.

Jika drive korban belum terpasang, pasang, lalu jalankan Scalpel:

$ scalpel -c my-scalpel.conf \
  -o /run/media/seth/rescuer/scalped \
  /run/media/seth/victim

Anda juga dapat menjalankan Scalpel pada disk image:

$ scalpel -c my-scalpel.conf \
  -o ~/scalped ~/victim.img

Setelah Scalpel selesai, tinjau file di direktori penyelamatan yang Anda tentukan.

Secara keseluruhan, yang terbaik adalah membuat cadangan sehingga Anda dapat menghindari pemulihan file sama sekali. Tapi, jika yang terburuk terjadi, cobalah Pisau Bedah dan ukir dengan hati-hati.


Linux
  1. Cara Menemukan File dengan Perintah fd di Linux

  2. Temukan file dan tar (dengan spasi)

  3. Temukan semua file dengan nama yang mengandung string

  1. Menemukan file yang dapat dibaca manusia di unix

  2. temukan file dengan set ACL

  3. Bagaimana cara mendaftar file dengan path lengkap di Linux?

  1. Temukan file dan direktori di Linux dengan perintah find

  2. Bagaimana Cara Menemukan File Dengan Subpath Tertentu?

  3. Cara Menemukan Semua File dengan Ukuran File Nol (0) Bytes di Direktori Secara Rekursif