Bol rok 2019. Naše laboratórium dostalo disk QUANTUM FIREBALL Plus KA s kapacitou 9.1GB, čo nie je na našu dobu úplne bežné. Podľa majiteľa disku k poruche došlo ešte v roku 2004 kvôli zlyhaniu zdroja, ktorý so sebou zobral pevný disk a ďalšie komponenty PC. Potom to boli návštevy rôznych služieb s pokusmi o opravu disku a obnovu dát, ktoré boli neúspešné. V niektorých prípadoch sľubovali, že to bude lacné, ale problém nikdy nevyriešili, v iných to bolo príliš drahé a klient nechcel dáta obnoviť, no disk nakoniec prešiel mnohými servisnými strediskami. Niekoľkokrát sa stratil, no vďaka tomu, že sa majiteľ vopred postaral o zaznamenávanie informácií z rôznych nálepiek na disk, podarilo sa mu zabezpečiť vrátenie pevného disku z niektorých servisných stredísk. Pochôdzky sa nezaobišli bez stopy, na pôvodnej doske radiča zostali viaceré stopy po spájkovaní a nedostatok SMD prvkov bolo cítiť aj vizuálne (pri pohľade dopredu poviem, že toto je najmenší problém tohto disku).
Ryža. 1 HDD Quantum Fireball Plus KA 9,1 GB
Prvá vec, ktorú sme museli urobiť, bolo vyhľadať v archíve darcov také starodávne dvojča tohto disku s funkčnou riadiacou doskou. Po dokončení tohto hľadania bolo možné vykonať rozsiahle diagnostické opatrenia. Po skontrolovaní skratu vinutia motora a uistení sa, že nedošlo ku skratu, nainštalujeme dosku z pohonu darcu na pohon pacienta. Zapojíme napájanie a počujeme normálny zvuk otáčania hriadeľa, absolvovanie kalibračného testu s načítaním firmvéru a po niekoľkých sekundách pohon hlási registrami, že je pripravený reagovať na príkazy z rozhrania.
Ryža. 2 DRD DSC indikátory indikujú pripravenosť prijímať príkazy.
Zálohujeme všetky kópie modulov firmvéru. Skontrolujeme integritu modulov firmvéru. S čítacími modulmi nie sú žiadne problémy, ale analýza správ ukazuje, že existujú určité zvláštnosti.
Ryža. 3. Tabuľka zón.
Venujeme pozornosť tabuľke zónového rozdelenia a všimneme si, že počet valcov je 13845.
Ryža. 4 P-list (primárny zoznam – zoznam chýb zavedených počas výrobného cyklu).
Upozorňujeme na príliš malý počet defektov a ich lokalizáciu. Pozrieme sa na modul denníka skrývajúceho chyby z výroby (60h) a zistíme, že je prázdny a neobsahuje ani jeden záznam. Na základe toho môžeme predpokladať, že v jednom z predchádzajúcich servisných stredísk mohli byť vykonané nejaké manipulácie so servisnou oblasťou disku a náhodne alebo úmyselne bol napísaný cudzí modul alebo zoznam chýb v origináli. jeden bol vyčistený. Aby sme otestovali tento predpoklad, vytvoríme úlohu v Data Extractor s povolenými možnosťami „vytvoriť kópiu sektora po sektore“ a „vytvoriť virtuálneho prekladateľa“.
Ryža. 5 Parametre úlohy.
Po vytvorení úlohy sa pozrieme na položky v tabuľke oddielov v sektore nula (LBA 0)
Ryža. 6 Hlavný zavádzací záznam a tabuľka oblastí.
Pri posune 0x1BE je jeden záznam (16 bajtov). Typ súborového systému na oddiele je NTFS, posunutý na začiatok 0x3F (63) sektorov, veľkosť oddielu 0x011309A3 (18 024 867) sektorov.
V sektorovom editore otvorte LBA 63.
Ryža. 7 Zavádzací sektor NTFS
Podľa informácií v zavádzacom sektore oddielu NTFS môžeme povedať nasledovné: akceptovaná veľkosť sektora vo zväzku je 512 bajtov (slovo 0x0 (0) je zapísané s posunom 0200x512B), počet sektorov v klastri je 8 (bajt 0x0 je zapísaný s posunom 0x08D), veľkosť klastra je 512x8=4096 bajtov, prvý záznam MFT sa nachádza v posune 6 291 519 sektorov od začiatku disku (pri posune 0x30 štvornásobné slovo 0x00 00 00 00 00C 0 00 (00) číslo prvého klastra MFT Číslo sektora sa vypočíta podľa vzorca: Číslo klastra * počet sektorov v klastri + posun na začiatok sekcie 786* 432+786= 432).
Prejdime k sektoru 6.
Obr. 8
Údaje obsiahnuté v tomto sektore sú však úplne odlišné od záznamu MFT. To síce naznačuje možný nesprávny preklad z dôvodu nesprávneho zoznamu chýb, ale nedokazuje to túto skutočnosť. Pre ďalšiu kontrolu prečítame disk o 10 000 sektorov v oboch smeroch vzhľadom na 6 291 519 sektorov. A potom budeme hľadať regulárne výrazy v tom, čo čítame.
Ryža. 9 Prvá nahrávka MFT
V sektore 6 291 551 nájdeme prvý záznam MFT. Jeho pozícia sa od vypočítanej líši o 32 sektorov a potom priebežne nasleduje skupina 16 záznamov (od 0 do 15). Do tabuľky posunov zadáme pozíciu sektora 6 291 519 a posunieme sa o 32 sektorov dopredu.
Obr. 10
Pozícia rekordu č.16 by mala byť na offsete 12 551 431, no namiesto MFT záznamu tam nájdeme nuly. Urobme podobné pátranie v okolí.
Ryža. 11 záznam MFT 0x00000011 (17)
Je detekovaný veľký fragment MFT, počnúc záznamom číslo 17 s dĺžkou 53 646 záznamov) s posunom o 17 sektorov. Pre pozíciu 12 155 431 vložte do tabuľky posunu posun o +17 sektorov.
Po určení polohy fragmentov MFT v priestore môžeme konštatovať, že to nevyzerá ako náhodné zlyhanie a zaznamenávanie fragmentov MFT pri nesprávnych posunoch. Verzia s nesprávnym prekladačom sa môže považovať za potvrdenú.
Pre ďalšiu lokalizáciu bodov posunu nastavíme maximálne možné posunutie. Aby sme to dosiahli, určíme, o koľko sa posunie koncová značka oddielu NTFS (kópia zavádzacieho sektora). Na obrázku 7, pri posune 0x28, je štvorslovo hodnotou veľkosti oddielu 0x00 00 00 00 01 13 09 A2 (18 024 866) sektorov. K jej dĺžke pripočítajme offset samotnej partície od začiatku disku a dostaneme offset koncovej značky NTFS 18 024 866 + 63= 18 024 929. Ako sa dalo očakávať, požadovaná kópia zavádzacieho sektora tam nebola. Pri prehľadávaní okolia bol nájdený s rastúcim posunom o +12 sektorov oproti poslednému fragmentu MFT.
Ryža. 12 Kópia zavádzacieho sektora NTFS
Ignorujeme druhú kópiu zavádzacieho sektora s ofsetom 18 041 006, pretože nesúvisí s naším oddielom. Na základe doterajších aktivít sa zistilo, že v rámci sekcie je zaradených 61 sektorov, ktoré „vyskočili“ do vysielania, čím sa údaje rozšírili.
Vykonávame úplné čítanie disku, čo ponecháva 34 neprečítaných sektorov. Bohužiaľ nie je možné spoľahlivo zaručiť, že všetky z nich sú chyby odstránené zo zoznamu P, ale pri ďalšej analýze je vhodné vziať do úvahy ich polohu, pretože v niektorých prípadoch bude možné spoľahlivo určiť body posunu pomocou presnosť sektora, nie súboru.
Ryža. 13 Štatistika čítania disku.
Našou ďalšou úlohou bude zistiť približné miesta posunov (s presnosťou súboru, v ktorom k nim došlo). Za týmto účelom naskenujeme všetky záznamy MFT a vytvoríme reťazce umiestnení súborov (fragmenty súborov).
Ryža. 14 Reťazce umiestnenia súborov alebo ich fragmentov.
Ďalej pri prechode zo súboru do súboru hľadáme moment, v ktorom budú namiesto očakávanej hlavičky súboru iné údaje a požadovaná hlavička sa nájde s určitým pozitívnym posunom. A keď spresňujeme body posunu, vypĺňame tabuľku. Výsledkom naplnenia bude viac ako 99% súborov bez poškodenia.
Ryža. 15 Zoznam súborov používateľov (od klienta bol prijatý súhlas na zverejnenie tejto snímky obrazovky)
Na stanovenie bodových posunov v jednotlivých súboroch môžete vykonať dodatočnú prácu a ak poznáte štruktúru súboru, nájsť inklúzie údajov, ktoré s ním nesúvisia. Ale v tejto úlohe to nebolo ekonomicky realizovateľné.
PS Rád by som oslovil aj mojich kolegov, v ktorých rukách bol tento disk predtým. Buďte opatrní pri práci s firmvérom zariadenia a zálohujte si servisné dáta pred tým, ako čokoľvek zmeníte, a zámerne problém nezhoršujte, ak sa vám nepodarilo dohodnúť s klientom na práci.
Zdroj: hab.com