Tai buvo 2019 m. Mūsų laboratorija gavo 9.1 GB talpos QUANTUM FIREBALL Plus KA diską, kuris mūsų laikais nėra gana įprastas. Anot disko savininko, gedimas įvyko dar 2004 metais dėl sugedusio maitinimo šaltinio, kuris kartu su savimi pasiėmė kietąjį diską ir kitus kompiuterio komponentus. Tada buvo apsilankymų įvairiose tarnybose su bandymais taisyti diską ir atkurti duomenis, kurie buvo nesėkmingi. Kai kuriais atvejais žadėjo, kad bus pigu, bet problemos taip ir neišsprendė, kitais – per brangu, o klientas nenorėjo atkurti duomenų, tačiau galiausiai diskas nukeliavo per daugybę aptarnavimo centrų. Jis buvo pamestas kelis kartus, tačiau dėl to, kad savininkas iš anksto pasirūpino informacijos įrašymu iš įvairių lipdukų ant disko, pavyko užtikrinti, kad kietasis diskas būtų grąžintas iš kai kurių servisų. Pasivaikščiojimai nepraėjo be pėdsakų, ant originalios valdiklio plokštės liko keli litavimo pėdsakai, o SMD elementų trūkumas taip pat buvo vizualiai jaučiamas (žiūrint į priekį, pasakysiu, kad tai mažiausia iš šio disko problemų).
Ryžiai. 1 HDD Quantum Fireball Plus KA 9,1 GB
Pirmas dalykas, kurį turėjome padaryti, buvo donorų archyve ieškoti tokio senovinio šio disko brolio dvynio su veikiančia valdiklio plokšte. Kai šis ieškojimas buvo baigtas, tapo įmanoma atlikti išsamias diagnostikos priemones. Patikrinę, ar variklio apvijose nėra trumpojo jungimo ir įsitikinę, kad nėra trumpojo jungimo, montuojame plokštę nuo donoro pavaros iki paciento pavaros. Prijungiame maitinimą ir girdime įprastą veleno sukimosi garsą, atliekame kalibravimo testą įkeliant programinę įrangą, o po kelių sekundžių pavara registrais praneša, kad yra pasiruošusi reaguoti į komandas iš sąsajos.
Ryžiai. 2 DRD DSC indikatoriai rodo pasirengimą priimti komandas.
Kuriame atsargines visų programinės įrangos modulių kopijų kopijas. Mes patikriname programinės įrangos modulių vientisumą. Skaitant modulius problemų nėra, tačiau ataskaitų analizė rodo, kad yra keistenybių.
Ryžiai. 3. Zonų lentelė.
Atkreipiame dėmesį į zonų paskirstymo lentelę ir pažymime, kad cilindrų skaičius yra 13845.
Ryžiai. 4 P-sąrašas (pirminis sąrašas – gamybos ciklo metu atsiradusių defektų sąrašas).
Atkreipiame dėmesį į per mažą defektų skaičių ir jų vietą. Mes žiūrime į gamyklinį defektų slėpimo žurnalo modulį (60h) ir nustatome, kad jis tuščias ir jame nėra nė vieno įrašo. Remdamiesi tuo, galime daryti prielaidą, kad viename iš ankstesnių aptarnavimo centrų kai kurios manipuliacijos galėjo būti atliktos su disko aptarnavimo zona ir netyčia ar tyčia buvo parašytas svetimas modulis arba originalo defektų sąrašas. vienas buvo išvalytas. Norėdami patikrinti šią prielaidą, duomenų ekstraktoriuje sukuriame užduotį su įjungtomis parinktimis „sukurti kiekvieno sektoriaus kopiją“ ir „kurti virtualųjį vertėją“.
Ryžiai. 5 Užduoties parametrai.
Sukūrę užduotį, žiūrime į skaidinių lentelės įrašus nuliniame sektoriuje (LBA 0)
Ryžiai. 6 Pagrindinis įkrovos įrašas ir skaidinių lentelė.
Poslinkyje 0x1BE yra vienas įrašas (16 baitų). Failų sistemos tipas skaidinyje yra NTFS, poslinkis į 0x3F (63) sektorių pradžią, skaidinio dydis 0x011309A3 (18 024 867) sektorių.
Sektorių rengyklėje atidarykite LBA 63.
Ryžiai. 7 NTFS įkrovos sektorius
Pagal informaciją NTFS skaidinio įkrovos sektoriuje galime pasakyti taip: tome priimtas sektoriaus dydis yra 512 baitų (žodis 0x0 (0) rašomas poslinkiu 0200x512B), sektorių skaičius klasteryje yra 8 (baitas 0x0 rašomas poslinkiu 0x08D), klasterio dydis yra 512x8=4096 baitai, pirmasis MFT įrašas yra 6 291 519 sektorių poslinkyje nuo disko pradžios (esant 0x30 keturgubų žodžių poslinkiui 0x00 00 00 00C 00 0 (00 00) pirmojo MFT klasterio numeris Sektorių numeris apskaičiuojamas pagal formulę: Klasterio numeris * klasteryje esančių sektorių skaičius + poslinkis į skyriaus pradžią 786 432* 786+432= 8 63 6).
Pereikime prie 6 291 519 sektoriaus.
Pav. 8
Tačiau šiame sektoriuje esantys duomenys visiškai skiriasi nuo MFT įrašo. Nors tai rodo galimą neteisingą vertimą dėl neteisingo defektų sąrašo, tai neįrodo šio fakto. Norėdami toliau patikrinti, mes nuskaitysime diską 10 000 sektorių abiem kryptimis, palyginti su 6 291 519 sektorių. Ir tada mes ieškosime reguliarių posakių tame, ką skaitome.
Ryžiai. 9 Pirmasis MFT įrašas
6 291 551 sektoriuje randame pirmąjį MFT įrašą. Jo padėtis skiriasi nuo apskaičiuotos 32 sektoriais, o tada nuolat seka 16 įrašų grupė (nuo 0 iki 15). Įveskime 6 291 519 sektoriaus padėtį į pamainų lentelę ir judėkime į priekį 32 sektoriais.
Pav. 10
Įrašo Nr. 16 padėtis turėtų būti 12 551 431 poslinkyje, tačiau vietoje MFT įrašo randame nulius. Atlikime panašią paiešką apylinkėse.
Ryžiai. 11 MFT įrašas 0x00000011 (17)
Aptinkamas didelis MFT fragmentas, pradedant nuo 17 įrašo, kurio ilgis yra 53 646 įrašai) su 17 sektorių poslinkiu. 12 155 431 pozicijoje perkelkite +17 sektorių pamainų lentelėje.
Nustačius MFT fragmentų padėtį erdvėje, galime daryti išvadą, kad tai neatrodo kaip atsitiktinis gedimas ir MFT fragmentų įrašymas esant neteisingam poslinkiui. Versija su neteisingu vertėju gali būti laikoma patvirtinta.
Norėdami toliau lokalizuoti poslinkio taškus, nustatysime didžiausią galimą poslinkį. Norėdami tai padaryti, nustatome, kiek pasislenka NTFS skaidinio pabaigos žymeklis (įkrovos sektoriaus kopija). 7 paveiksle, esant poslinkiui 0x28, keturvardis yra 0x00 00 00 00 01 13 09 A2 (18 024 866) sektorių skaidinio dydžio reikšmė. Prie jo ilgio pridėkime paties skaidinio poslinkį nuo disko pradžios ir gausime pabaigos NTFS žymeklio poslinkį 18 024 866 + 63= 18 024 929. Kaip ir tikėtasi, reikiamos įkrovos sektoriaus kopijos nebuvo. Ieškant apylinkių, jis buvo rastas su didėjančiu +12 sektorių poslinkiu, palyginti su paskutiniu MFT fragmentu.
Ryžiai. 12 NTFS įkrovos sektoriaus kopija
Mes nepaisome kitos įkrovos sektoriaus kopijos, esančios poslinkyje 18 041 006, nes ji nesusijusi su mūsų skaidiniu. Remiantis ankstesne veikla, nustatyta, kad skiltyje yra transliacijoje „iššokęs“ 61 sektorius, kuris praplėtė duomenis.
Atliekame visą disko nuskaitymą, paliekant 34 neskaitytus sektorius. Deja, neįmanoma patikimai garantuoti, kad visi jie yra defektai, pašalinti iš P sąrašo, tačiau tolimesnėje analizėje patartina atsižvelgti į jų padėtį, nes kai kuriais atvejais bus galima patikimai nustatyti pamainos taškus su sektoriaus tikslumas, o ne failas.
Ryžiai. 13 Disko skaitymo statistika.
Kita mūsų užduotis bus nustatyti apytiksles pamainų vietas (pagal failo, kuriame jie įvyko, tikslumą). Norėdami tai padaryti, nuskaitysime visus MFT įrašus ir sukursime failų vietų (failų fragmentų) grandines.
Ryžiai. 14 Failų ar jų fragmentų buvimo vietos grandinės.
Toliau, judėdami iš failo į failą, ieškome momento, kada vietoje laukiamos failo antraštės bus kiti duomenys, o norima antraštė bus rasta su tam tikru teigiamu poslinkiu. O kai tobuliname pamainų taškus, pildome lentelę. Užpildžius daugiau nei 99% failų bus nepažeista.
Ryžiai. 15 Vartotojo failų sąrašas (gautas kliento sutikimas publikuoti šią ekrano kopiją)
Norėdami nustatyti taškų poslinkius atskiruose failuose, galite atlikti papildomą darbą ir, jei žinote failo struktūrą, rasti su juo nesusijusių duomenų įtraukimus. Tačiau ši užduotis nebuvo ekonomiškai pagrįsta.
PS Taip pat norėčiau kreiptis į savo kolegas, kurių rankose šis diskas buvo anksčiau. Būkite atsargūs dirbdami su įrenginio programine įranga ir prieš ką nors keisdami sukurkite atsargines priežiūros duomenų kopijas ir sąmoningai nedidinkite problemos, jei nepavyko susitarti su klientu dėl darbo.
Šaltinis: www.habr.com