Iku 2019. Laboratorium kita nampa drive QUANTUM FIREBALL Plus KA kanthi kapasitas 9.1GB, sing ora umum kanggo jaman saiki. Miturut pemilik drive, Gagal kedaden maneh ing 2004 amarga sumber daya gagal, kang njupuk hard drive lan komponen PC liyane. Banjur ana kunjungan menyang macem-macem layanan kanthi nyoba ndandani drive lan mulihake data, sing ora kasil. Ing sawetara kasus, dheweke janji bakal murah, nanging ora nate ngrampungake masalah kasebut, ing liyane larang banget lan klien ora pengin mulihake data kasebut, nanging pungkasane disk kasebut ngliwati akeh pusat layanan. Iku ilang kaping pirang-pirang, nanging thanks kanggo kasunyatan sing pemilik njupuk care saka informasi saka macem-macem stiker ing drive ing advance, kang ngatur kanggo mesthekake yen hard drive wis bali saka sawetara pusat layanan. Mlaku-mlaku ora liwati, sawetara tilak soldering tetep ing Papan controller asli, lan lack saka unsur SMD uga visual felt (looking ahead, Aku bakal ngomong sing iki paling saka masalah drive iki).
Gabah. 1 HDD Quantum Fireball Plus KA 9,1GB
Wangsulan: Bab ingkang sapisanan kita kudu nindakake iku nelusuri ing arsip donor kanggo kuwi sadulur kembar kuna drive iki karo Papan controller digunakake. Nalika nggoleki iki rampung, dadi bisa kanggo nindakake langkah-langkah diagnostik ekstensif. Sawise mriksa windings motor kanggo short circuit lan priksa manawa ora ana short circuit, kita nginstal Papan saka drive donor kanggo drive sabar. We aplikasi daya lan krungu swara normal saka batang Spinning munggah, maringaken test kalibrasi karo loading perangkat kukuh, lan sawise sawetara detik drive laporan dening ndhaftar sing wis siyap kanggo nanggepi printah saka antarmuka.
Gabah. 2 Indikator DRD DSC nuduhake kesiapan kanggo nampa printah.
Kita nggawe serep kabeh salinan modul perangkat kukuh. Kita mriksa integritas modul perangkat kukuh. Ora ana masalah karo modul maca, nanging analisis laporan nuduhake yen ana sawetara oddities.
Gabah. 3. Tabel Zona.
We mbayar manungsa waΓ© kanggo Tabel distribusi zonal lan Wigati sing nomer silinder punika 13845.
Gabah. 4 P-list (dhaptar utami - dhaptar cacat sing ditepungake sajrone siklus produksi).
We tarik manungsa waΓ© kanggo nomer cilik banget saka cacat lan lokasi. We katon ing cacat pabrik modul ndhelikake log (60h) lan golek sing kosong lan ora ngemot entri siji. Adhedhasar iki, kita bisa nganggep manawa ing salah sawijining pusat layanan sadurunge, sawetara manipulasi bisa ditindakake ing area layanan drive, lan kanthi ora sengaja utawa sengaja ditulis modul asing, utawa dhaptar cacat ing asline. siji diresiki. Kanggo nguji asumsi iki, kita nggawe tugas ing Data Extractor kanthi opsi "gawe salinan sektor-by-sektor" lan "gawe penerjemah virtual".
Gabah. 5 Parameter tugas.
Sawise nggawe tugas, kita ndeleng entri ing tabel partisi ing sektor nol (LBA 0)
Gabah. 6 Rekam boot master lan tabel partisi.
Ing offset 0x1BE ana entri siji (16 bita). Jinis sistem file ing partisi yaiku NTFS, ngimbangi wiwitan sektor 0x3F (63), ukuran partisi 0x011309A3 (18) sektor.
Ing editor sektor, bukak LBA 63.
Gabah. 7 sektor boot NTFS
Miturut informasi ing sektor boot saka partisi NTFS, kita bisa ngomong ing ngisor iki: ukuran sektor sing ditampa ing volume yaiku 512 bita (tembung 0x0 (0) ditulis ing offset 0200x512B), jumlah sektor ing kluster yaiku 8 (byte 0x0 ditulis ing offset 0x08D), ukuran cluster 512x8=4096 byte, rekaman MFT pisanan dumunung ing offset 6 sektor saka wiwitan disk (ing offset 291x519 quadruple word 0x30 0 00 00 00 00C 00 0 (00) nomer kluster MFT pisanan. Nomer sektor diitung kanthi rumus: Nomer Kluster * nomer sektor ing kluster + ngimbangi wiwitan bagean 00 * 786 + 432 = 786).
Ayo pindhah menyang sektor 6.
Gambar. Xnumx
Nanging data sing ana ing sektor iki beda banget karo rekaman MFT. Sanajan iki nuduhake kemungkinan terjemahan sing salah amarga dhaptar cacat sing salah, nanging iki ora mbuktekake kasunyatan kasebut. Kanggo mriksa luwih, kita bakal maca disk dening 10 sektor ing loro arah relatif kanggo 000 sektor. Banjur kita bakal nggoleki ekspresi reguler ing apa sing diwaca.
Gabah. 9 Rekaman MFT pisanan
Ing sektor 6 kita nemokake rekor MFT pisanan. Posisi kasebut beda karo sing diwilang kanthi 291 sektor, lan banjur ana klompok 551 cathetan (saka 32 nganti 16) terus-terusan. Ayo mlebu posisi sektor 0 menyang tabel shift lan maju kanthi 15 sektor.
Gambar. Xnumx
Posisi rekaman No. Ayo padha nindakake telusuran sing padha ing wilayah sekitar.
Gabah. 11 MFT entri 0x00000011 (17)
SebagΓ©an gedhΓ© MFT dideteksi, diwiwiti kanthi rekor nomer 17 kanthi dawa 53 cathetan) kanthi owah-owahan 646 sektor. Kanggo posisi 17, sijine shift +12 sektor ing tabel shift.
Sawise nemtokake posisi fragmen MFT ing papan, kita bisa nyimpulake yen iki ora katon kaya kegagalan acak lan ngrekam fragmen MFT ing offset sing salah. Versi karo penerjemah sing salah bisa dianggep dikonfirmasi.
Kanggo luwih lokalisasi titik shift, kita bakal nyetel pamindahan maksimal. Kanggo nindakake iki, kita nemtokake pinten panandha pungkasan partisi NTFS (salinan sektor boot) dipindhah. Ing Gambar 7, ing offset 0x28, quadword minangka nilai ukuran partisi 0x00 00 00 00 01 13 09 A2 (18) sektor. Ayo dadi nambah offset saka pemisahan dhewe saka awal disk kanggo dawa, lan kita njaluk offset pungkasan NTFS panandha 024 + 866 = 18. Kaya samesthine, salinan dibutuhake saka sektor boot ora ana. Nalika nggoleki wilayah sekitar, ditemokake kanthi owah-owahan sektor +024 sing luwih dhuwur tinimbang fragmen MFT pungkasan.
Gabah. 12 Salinan sektor boot NTFS
Kita nglirwakake salinan liyane saka sektor boot ing offset 18, amarga ora ana hubungane karo partisi kita. Adhedhasar aktivitas sadurunge, ditetepake manawa ing bagean kasebut ana 041 sektor sing "muncul" ing siaran, sing nambah data.
Kita nindakake maca lengkap drive, sing ninggalake 34 sektor sing durung diwaca. Sayange, iku mokal kanggo andal njamin sing kabeh iku cacat dibusak saka P-dhaftar, nanging ing analisis luwih iku saranake kanggo njupuk menyang akun posisi, amarga ing sawetara kasus bisa andal nemtokake titik shift karo. akurasi sektor, lan ora file.
Gabah. 13 Statistik maca disk.
Tugas sabanjure yaiku netepake lokasi kira-kira owah-owahan (kanggo akurasi file sing kedadeyan). Kanggo nindakake iki, kita bakal mindhai kabeh rekaman MFT lan mbangun rantai lokasi file (fragmen file).
Gabah. 14 Rantai lokasi file utawa pecahan.
Sabanjure, pindhah saka file menyang file, kita nggoleki wayahe sing bakal ana data liyane tinimbang header file sing dikarepake, lan header sing dikarepake bakal ditemokake kanthi owah-owahan positif tartamtu. Lan nalika kita nyaring TCTerms shift, kita isi metu meja. Asil ngisi bakal luwih saka 99% file tanpa karusakan.
Gabah. 15 Dhaptar file pangguna (idin ditampa saka klien kanggo nerbitake gambar iki)
Kanggo netepake owah-owahan titik ing file individu, sampeyan bisa nindakake karya tambahan lan, yen sampeyan ngerti struktur file, golek inklusi data sing ora ana gandhengane. Nanging ing tugas iki ora bisa ditindakake kanthi ekonomi.
PS Aku uga kaya kanggo alamat kolega, ing tangan kang disk iki sadurunge. Ati-ati nalika nggarap perangkat kukuh piranti lan gawe serep data layanan sadurunge ngganti apa wae, lan aja kanthi sengaja nambah masalah yen sampeyan ora bisa setuju karo klien ing karya kasebut.
Source: www.habr.com