Ishte viti 2019. Në laboratorin tonë arriti një disk QUANTUM FIREBALL Plus KA me kapacitet 9.1GB, që nuk ishte krejtësisht normal për kohën tonë. Sipas fjalëve të pronarit, disku dështoi në vitin 2004 për shkak të një ndarje të dështuar të energjisë që e preku disku dhe komponente të tjera të PC-së. Më pas, filluan përpjekjet për ta riparuar dhe rikuperuar të dhënat e humbura në qendra të ndryshme shërbimi, por pa sukses. Diku premtonin një çmim të ulët, por asgjë nuk u zgjidh, diku ishte shumë i shtrenjtë dhe klienti nuk dëshiroi të rikuperonte të dhënat, e në fund disku kaloi përmes shumë qendrave shërbimi. Ka humbur disa herë, por falë faktit që pronari parashikoi dhe e regjistroi informacionin nga etiketat e ndryshme të diskut, ai arriti të rikthejë disku nga disa qendra shërbimi. Këto shtegtime nuk kaluan pa lënë gjurmë, në pllakën origjinale të kontrollit mbetën shumë shenja saldimi, si dhe ndjehej vizualisht një mungesë e elementëve SMD (për të parashikuar, kjo është më e vogla nga problemet e këtij disku).

Fig. 1 HDD Quantum Fireball Plus KA 9,1GB
Së pari, duhej të angazhoheshim në kërkimin e një disku donator, një vëlla binjak aq të lashtë me pllakë kontrolli funksionale. Kur ky mision u përfundua, u bënë të mundura aktivitete diagnostike të hollësishme. Pas kontrollimit të bobinave të motorit për shkurtim dhe duke u siguruar në mosnjohjen e tij, vendosim pllakën nga disku donator në diskun pacient. Aktivizojmë energjinë dhe dëgjojmë zërin normal të rrotullimit, kalimin e testit të kalibrimit me ngarkimin e mikroprogramit, dhe pas disa sekondash disku raporton përgatitjen për të reaguar ndaj porosive nga ndërfaqja.
Fig. 2 Të dhënat DRD DSC tregojnë gatishmërinë për të pranuar porosi.
Rezervojmë të gjitha kopjet e moduleve të mikroprogramit. Kryejmë kontrollin e integritetit të moduleve të mikroprogramit. Nuk ka probleme me leximin e moduleve, por analiza e raporteve tregon se ka disa çuditshmëri.

Fig. 3. Tabela e zonave.
Vëmendja jonë përqendrohet në tabelën e shpërndarjes zonale dhe vërejmë se numri i cilindrave është 13845.

Fig. 4 P-list (lista primare â lista e defekteve tĂ« regjistruara gjatĂ« ciklit tĂ« prodhimit).
Vëmendja jonë përqendrohet në numrin shumë të vogël të defekteve dhe lokalizimin e tyre. Shikojmë modulin e logarit të fshehjes së defekteve fabrike (60h) dhe zbulojmë se ai është bosh dhe nuk përmban asnjë regjistrim. Në bazë të kësaj, mund të supozojmë se në ndonjë nga qendrat e mëparshme të shërbimit, ndoshta janë bërë disa manipulime me zonën shërbyese të diskut dhe aksidentalisht ose me qëllim është regjistruar një modul tjetër, ose është pastruar lista e defekteve në origjinal. Për të verifikuar këtë supozim, krijojmë një detyrë në Data Extractor me opsionet e përfshira 'krijimi i një kopjeje sektoriale' dhe 'krijimi i një translator virtual'.

Fig. 5 Parametrat e detyrës.
Pas krijimit të detyrës, shqyrtojmë regjistrimet në tabelën e seksioneve në sektorin zero (LBA 0)

Fig. 6 Regjistri i ngarkesës dhe tabela e seksioneve.
Në offsetin 0x1BE ndodhet regjistrimi i vetëm (16 byte). Lloji i sistemit të skedarëve në seksion është NTFS, offseti deri në fillim është 0x3F (63) sektorë, madhësia e seksionit është 0x011309A3 (18 024 867) sektorë.
Në redaktorin e sektorëve hapim LBA 63.

Fig. 7 Sektori i ngarkesës NTFS
Nga informacioni në sektorin e ngarkesës NTFS të seksionit mund të themi se: madhësia e sektorit, e pranuar në volum, është 512 byte (në offsetin 0x0B është shkruar fjala 0x0200 (512)), numri i sektorëve në klaster është 8 (në offsetin 0x0D është shkruar byte 0x08), madhësia e klasterit është 512x8=4096 byte, regjistrimi i parë MFT ndodhet në offsetin 6 291 519 sektorë nga fillimi i diskut (në offsetin 0x30 është e katërfishuar fjala 0x00 00 00 00 00 0C 00 00 (786 432) numri i klasterit të parë MFT. Numri i sektorit llogaritet sipas formulës: Numri i klasterit * numri i sektorëve në klaster + offseti deri në fillim të seksionit 786 432* 8+63= 6 291 519).
Kalojmë në sektorin 6 291 519.

Fig. 8
Por të dhënat që ndodhen në këtë sektor nuk i ngjajnë fare regjistrimit MFT. Edhe pse tregon për një mundësi të keqe të trashëgimisë për shkak të një liste të defekteve të papërshtatshme, kjo nuk e dëmton këtë fakt. Për verifikimin e mëtejshëm, do të kryejmë leximin e diskut për 10,000 sektorë në të dy drejtimet në lidhje me sektorin 6 291 519. Dhe pastaj do të bëjmë një kërkim me shprehje të rregullta në leximet e bëra.

Fig. 9 Regjistrimi i parë MFT
Në sektorin 6 291 551 zbulojmë regjistrimin e parë MFT. Pozita e tij ndryshon nga e llogaritur 32 sektorë më herët, dhe më pas vjen një grup i vazhdueshëm prej 16 regjistrimesh (nga 0 deri në 15). Do të shkruajmë në tabelën e zhvendosjeve pozitat e sektorit 6 291 519 duke e zhvendosur përpara me 32 sektorë.

Fig. 10
Pozita e regjistrimit â16 duhet tĂ« jetĂ« sipas zhvendosjes 12 551 431, por atje gjejmĂ« zeros, nĂ« vend tĂ« regjistrimit MFT. Do tĂ« bĂ«jmĂ« njĂ« kĂ«rkim tĂ« ngjashĂ«m nĂ« pĂ«rreth.

Fig. 11 Regjistrimi MFT 0x00000011 (17)
Zbulon një fragment të madh MFT, që fillon me regjistrimin numër 17 me gjatësi 53 646 regjistrimesh) dhe zhvendosje prej 17 sektorësh. Për poziten 12 155 431 do të vendosim zhvendosjen +17 sektorë në tabelën e zhvendosjeve.
Duke përcaktuar pozitat e fragmenteve MFT në hapësirë, mund të nxjerrim përfundimin se kjo nuk duket si një dështim rastësor dhe regjistrimi i fragmenteve MFT në zhvendosje të gabuara. Versioni me një translator të gabuar mund të konsiderohet i konfirmuar.
Për lokalizimin e mëtejshëm të pikave të zhvendosjes, do të vendosim zhvendosjen maksimale të mundshme. Për këtë do të përcaktojmë se sa është zhvendosur markeri përfundimtar NTFS i pjesës (kopia e sektorit të ngarkesës). Në figurën 7 në zhvendosjen 0x28, fjala katërsh është vlera e madhësisë së pjesës 0x00 00 00 00 01 13 09 A2 (18 024 866) sektorë. Duke i shtuar zhvendosjen e pjesës nga fillimi i diskut me gjatësinë e tij, nxjerrim zhvendosjen e markers NTFS përfundimtar 18 024 866 + 63 = 18 024 929. Pritet që nuk kishte kopinë e nevojshme të sektorit të ngarkesës. Duke kërkuar në përreth, ai u zbulua me një rritje të zhvendosjes prej +12 sektorësh në lidhje me fragmentin e fundit MFT.

Fig. 12 Kopjia e sektorit të ngarkesës NTFS
Një kopje tjetër e sektorit të ngarkesës në zhvendosjen 18 041 006 e injorojmë, pasi nuk ka të bëjë me pjesën tonë. Në bazë të aktiviteteve të mëparshme, është e provuar se brenda pjesës ka përzierje nga "daljet" në translacion prej 61 sektorësh, të cilat kanë zhvendosur të dhënat.
Kryejmë një lexim të plotë të disku, rezultat i të cilit mbetet 34 sektorë të pap lexuar. Fatkeqësisht, nuk është e mundur të garantohet me siguri se të gjitha ato janë defekte, të hequra nga liste P, por në analizat e mëtejshme do të ishte e dëshirueshme të merret parasysh pozita e tyre, pasi në disa raste mund të përcaktohen me saktësi pikat e zhvendosjes me saktësi deri në sektor, e jo deri në skedar.

Fig. 13 Statistika e leximit të diskut.
Detyra jonë e ardhshme do të jetë përcaktimi i vendeve orientuese të zhvendosjeve (me saktësi deri në skedarin, në të cilin ato ndodhën). Për këtë do të kryejmë një skanim të të gjitha regjistrimeve MFT dhe do të ndërtomë zinxhirët e pozicionit të skedarëve (fragmenteve të skedarëve).

Fig. 14 Zinxhirët e pozicionit të skedarëve, ose të fragmenteve të tyre.
Më pas, duke kaluar nga skedari në skedar, kërkojmë se nga çasti i cili, ndërsa ndodhet një titull i pritur skedari, do të ketë të dhëna të tjera, ndërsa titulli i nevojshëm do të zbulohet me një zhvendosje pozitive. Ndërsa saktësojmë pikat e zhvendosjeve, mbushim tabelën. Rezultati i mbushjes së saj do të jetë mbi 99% e skedarëve pa dëmtime.

Fig. 15 Lista e skedarëve për përdoruesit (nga klienti u mor miratimi për publikimin e këtij screenshot-i)
Për përcaktimin e zhvendosjeve të pikave në skedarët e veçantë, mund të kryhen punë të tjera dhe duke ditur strukturën e skedarit, të gjejmë përzierje të të dhënave, të cilat nuk kanë të bëjnë me të. Por në këtë rast, kjo nuk ishte ekonomikisht e arsyeshme.
P.S. Do të doja gjithashtu t'u drejtohem kolegëve, të cilët kanë pasur diskun në dorë më parë. Ju lutemi, jini të kujdesshëm gjatë punës me mikroprogramin e pajisjeve dhe rezervoni të dhënat shërbyese para se të bëni ndonjë ndryshim, si dhe mos lejoni përkeqësimin e qëllimshëm të problemit, nëse nuk jeni dakorduar me klientin për të kryer punë.
Burimi: habr.com
