2019 թվականն էր։ Մեր լաբորատորիան ստացավ 9.1 ԳԲ ծավալով QUANTUM FIREBALL Plus KA սկավառակ, որը մեր ժամանակների համար այդքան էլ բնորոշ չէ։ Սկավառակի սեփականատիրոջ խոսքով՝ խափանումը տեղի է ունեցել դեռևս 2004 թվականին՝ սնուցման աղբյուրի խափանման պատճառով, որը իր հետ տարել է կոշտ սկավառակը և համակարգչի այլ բաղադրիչները։ Այնուհետև եղել են այցելություններ տարբեր ծառայություններ՝ սկավառակը վերանորոգելու և տվյալները վերականգնելու փորձերով, որոնք անհաջող են եղել։ Ինչ-որ տեղ խոստացել են էժան, բայց երբեք չեն լուծել խնդիրը, ինչ-որ տեղ՝ չափազանց թանկ, և հաճախորդը չի ցանկացել վերականգնել տվյալները, բայց վերջում սկավառակն անցել է բազմաթիվ սպասարկման կենտրոններով։ Այն մի քանի անգամ կորել է, բայց շնորհիվ այն բանի, որ սեփականատերը նախապես հոգացել է սկավառակի վրա տարբեր պիտակներից տեղեկատվությունը գրանցելու մասին, նրան հաջողվել է որոշ սպասարկման կենտրոններից վերադարձնել իր կոշտ սկավառակը։ Զբոսանքները անհետ չեն անցել, սկզբնական կառավարիչի տախտակի վրա եղել են բազմաթիվ զոդման հետքեր, ինչպես նաև նկատելի է SMD տարրերի տեսողական բացակայություն (առաջ նայելով՝ կասեմ, որ սա այս սկավառակի խնդիրների ամենափոքր մասն է)։

Ռայս։ 1 կոշտ սկավառակ Quantum Fireball Plus KA 9,1GB
Առաջին բանը, որ մենք պետք է անեինք, դոնոր արխիվում որոնելն էր այս սկավառակի այդքան հին երկվորյակ եղբոր՝ աշխատող կառավարիչ տախտակով։ Երբ այս որոնումն ավարտվեց, հնարավոր դարձավ մանրամասն ախտորոշիչ միջոցառումներ անցկացնել։ Ստուգելով շարժիչի փաթույթներում կարճ միացման առկայությունը և համոզվելով, որ այն չկա, մենք դոնոր սկավառակից տախտակը տեղադրում ենք հիվանդի սկավառակի վրա։ Մենք միացնում ենք հոսանքը և լսում լիսեռի պտտման սովորական ձայնը, ստուգում ենք ներկառուցված ծրագիրը բեռնելով, և մի քանի վայրկյան անց սկավառակը գրանցիչների միջոցով հայտնում է, որ պատրաստ է արձագանքել ինտերֆեյսից եկող հրամաններին։
Նկ. 2 DRD DSC ցուցիչները ցույց են տալիս հրամաններ ընդունելու պատրաստակամությունը:
Մենք պահուստավորում ենք firmware մոդուլների բոլոր պատճենները: Մենք ստուգում ենք firmware մոդուլների ամբողջականությունը: Մոդուլները կարդալու հետ կապված խնդիրներ չկան, բայց հաշվետվությունների վերլուծությունը ցույց է տալիս, որ կան որոշ տարօրինակություններ:

Նկ. 3. Գոտիների աղյուսակ։
Մենք ուշադրություն ենք դարձնում գոտիների բաշխման աղյուսակին և նկատում ենք, որ գլանների քանակը 13845 է։

Նկ. 4 P-ցուցակ (հիմնական ցանկ՝ արտադրական ցիկլի ընթացքում առաջացած թերությունների ցանկ):
Մենք ուշադրություն ենք դարձնում թերությունների փոքր թվին և դրանց տեղայնացմանը: Մենք զննում ենք գործարանային թերությունների թաքցման մոդուլի գրանցամատյանը (60ժ) և պարզում, որ այն դատարկ է և չի պարունակում ոչ մի գրառում: Դրա հիման վրա կարող ենք ենթադրել, որ սկավառակի սպասարկման տարածքի հետ կապված որոշ մանիպուլյացիաներ, հավանաբար, կատարվել են նախորդ սպասարկման կենտրոններից մեկում, և ուրիշի մոդուլը պատահաբար կամ դիտավորյալ է գրվել, կամ բնօրինակում եղած թերությունների ցանկը մաքրվել է: Այս ենթադրությունը ստուգելու համար մենք Data Extractor-ում ստեղծում ենք առաջադրանք՝ միացված «ստեղծել ոլորտ առ ոլորտ պատճեն» և «ստեղծել վիրտուալ թարգմանիչ» տարբերակներով:

Նկ. 5 Առաջադրանքի պարամետրեր։
Առաջադրանքը ստեղծելուց հետո մենք դիտում ենք բաժանման աղյուսակի գրառումները զրոյական հատվածում (LBA 0):

Նկ. 6. Հիմնական բեռնման գրառում և բաժանման աղյուսակ։
0x1BE offset-ում կա մեկ գրառում (16 բայթ): Բաժնի ֆայլային համակարգի տեսակը NTFS է, սկզբի offset-ը 0x3F (63) սեկտոր է, բաժնի չափը՝ 0x011309A3 (18) սեկտոր:
Սեկտորի խմբագրիչում բացեք LBA 63-ը։

Նկ. 7 NTFS բեռնման հատված
NTFS բաժնի բեռնման հատվածում առկա տեղեկատվության համաձայն՝ կարելի է ասել հետևյալը. հատորում ընդունված հատվածի չափը 512 բայթ է (0x0 (0) բառը գրված է 0200x512B offset-ում), կլաստերի հատվածների քանակը՝ 8 (0x0 բայթը գրված է 0x08D offset-ում), կլաստերի չափը՝ 512x8=4096 բայթ, առաջին MFT գրառումը գտնվում է սկավառակի սկզբից 6 հատվածի offset-ում (291x519 offset-ում քառակի բառը՝ 0x30 0 00 00 00 00C 00 0 (00)-ը առաջին MFT կլաստերի համարն է։ Սեկտորի համարը հաշվարկվում է հետևյալ բանաձևով՝ կլաստերի համար * կլաստերի հատվածների քանակը + բաժնի սկզբի offset-ը՝ 00* 786+432= 786):
Անցնենք 6 291 519 հատվածին։

Բրինձ. 8
Սակայն այս հատվածում պարունակվող տվյալները բոլորովին տարբերվում են MFT գրառման տվյալներից։ Չնայած սա ցույց է տալիս սխալ թարգմանության հնարավոր սխալ լինելը՝ սխալ թերությունների ցանկի պատճառով, այն չի ապացուցում այս փաստը։ Հետագա ստուգման համար մենք կկարդանք սկավառակը 10 հատվածներով՝ երկու ուղղություններով՝ 000 հատվածի նկատմամբ։ Եվ այնուհետև մենք կփնտրենք կանոնավոր արտահայտություններ կարդացածի մեջ։

Նկ. 9 Առաջին MFT գրառումը
6 291 551 սեկտորում մենք գտնում ենք առաջին MFT գրառումը։ Դրա դիրքը տարբերվում է հաշվարկվածից 32 սեկտորով, որից հետո անընդհատ հաջորդում է 16 գրառումներից բաղկացած խումբ (0-ից մինչև 15): Մենք գրում ենք 6 291 519 սեկտորի դիրքը տեղաշարժման աղյուսակում և այն տեղաշարժում ենք առաջ 32 սեկտորով։

Բրինձ. 10
#16 գրառման դիրքը պետք է լինի 12 օֆսեթում, բայց մենք այնտեղ գտնում ենք զրոներ՝ MFT գրառման փոխարեն։ Եկեք նմանատիպ որոնում կատարենք շրջակա տարածքում։

Նկ. 11 MFT մուտքագրում 0x00000011 (17)
Գտնվել է մեծ MFT բեկոր, որը սկսվում է 17 համարի գրառմամբ (53 գրառման երկարությամբ)՝ 646 սեկտորի շեղումով։ 17 դիրքի համար մենք շեղումների աղյուսակում տեղադրում ենք +12 սեկտորի շեղում։
MFT բեկորների տարածության մեջ դիրքը որոշելով՝ կարող ենք եզրակացնել, որ սա պատահական ձախողման տեսք չունի և MFT բեկորների սխալ տեղաշարժերով գրանցում է։ Սխալ թարգմանիչով տարբերակը կարելի է համարել հաստատված։
Տեղաշարժի կետերի հետագա տեղայնացման համար մենք կսահմանենք հնարավոր առավելագույն շեղումը: Դրա համար մենք կորոշենք, թե որքանով է տեղաշարժված NTFS բաժանման վերջի նշիչը (boot sector copy): Նկար 7-ում, 0x28 շեղման դեպքում, քառաբառը բաժանման չափի արժեքն է՝ 0x00 00 00 00 01 13 09 A2 (18 024 866) սեկտորներ: Մենք կավելացնենք բաժանման շեղումը սկավառակի սկզբից դրա երկարությանը, որպեսզի ստանանք NTFS վերջի նշիչի շեղումը՝ 18 024 866 + 63 = 18 024 929: Ինչպես և սպասվում էր, անհրաժեշտ boot sector copy-ը այնտեղ չէր: Մոտակայքում որոնելիս այն գտնվեց +12 սեկտորների աճող շեղումով՝ վերջին MFT հատվածի նկատմամբ:

Նկ. 12 NTFS բեռնման հատվածի պատճենը
Մենք անտեսում ենք 18 041 006 offset-ում գտնվող boot սեկտորի մեկ այլ պատճենը, քանի որ այն կապ չունի մեր բաժնի հետ։ Նախորդ գործողությունների հիման վրա պարզվել է, որ բաժնի ներսում կան ներառվածություններ թարգմանության մեջ «հայտնված» 61 սեկտորներից, որոնք տեղափոխել են տվյալները։
Մենք կատարում ենք սկավառակի լրիվ ընթերցում, որի արդյունքում մնում են 34 չկարդացված հատվածներ։ Ցավոք, անհնար է հուսալիորեն երաշխավորել, որ դրանք բոլորը P-ցուցակից հեռացված թերություններ են, բայց հետագա վերլուծության ընթացքում խորհուրդ է տրվում հաշվի առնել դրանց դիրքը, քանի որ որոշ դեպքերում հնարավոր կլինի հուսալիորեն որոշել տեղաշարժի կետերը մինչև մեկ հատվածի ճշգրտությամբ, այլ ոչ թե մինչև մեկ ֆայլի։

Նկ. 13 Սկավառակի ընթերցման վիճակագրություն։
Մեր հաջորդ խնդիրը կլինի տեղաշարժերի մոտավոր տեղակայումները որոշելը (ճշգրտությամբ մինչև այն ֆայլը, որտեղ դրանք տեղի են ունեցել): Դրա համար մենք կսկանավորենք բոլոր MFT գրառումները և կկառուցենք ֆայլերի տեղակայման շղթաներ (ֆայլերի բեկորներ):

Նկ. 14. Ֆայլերի տեղակայման շղթաներ կամ դրանց բեկորներ:
Հաջորդը, ֆայլից ֆայլ անցնելիս, մենք փնտրում ենք այն պահը, երբ սպասվող ֆայլի վերնագրի փոխարեն կլինեն այլ տվյալներ, և անհրաժեշտ վերնագիրը կգտնվի որոշակի դրական տեղաշարժով։ Եվ քանի որ նշում ենք տեղաշարժի կետերը, լրացնում ենք աղյուսակը։ Այն լրացնելու արդյունքը կլինի ֆայլերի ավելի քան 99%-ը՝ առանց վնասների։

Նկ. 15 Օգտատիրոջ ֆայլերի ցանկ (հաճախորդը համաձայնություն է տվել այս էկրանի նկարը հրապարակելու համար)
Առանձին ֆայլերում կետերի տեղաշարժերը որոշելու համար կարելի է լրացուցիչ աշխատանք կատարել, և հաշվի առնելով ֆայլի կառուցվածքը, կարելի է գտնել դրան չառնչվող տվյալների ներառումներ: Սակայն այս առաջադրանքի դեպքում դա տնտեսապես նպատակահարմար չէր:
Հ.Գ. Ես նաև կցանկանայի դիմել այն գործընկերներին, ովքեր նախկինում աշխատել են այս սկավառակի հետ: Խնդրում եմ զգույշ լինել սարքերի ներկառուցված ծրագրային ապահովման հետ աշխատելիս և որևէ բան փոխելուց առաջ պահուստավորել ծառայության տվյալները, և թույլ չտալ, որ խնդիրը դիտավորյալ սրվի, եթե չեք համաձայնեցրել հաճախորդի հետ կատարվելիք աշխատանքը:
Source: www.habr.com
