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

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

Ռիս. 3. Տարածքային սեղան:
Ուշադիր ենք լինում տարածքային բաժնորդային սեղանին, նկատում ենք, որ սյունակների քանակը 13845 է:

Ռիս. 4 P-list (առաջին ցուցակի սխալներ, որոնք արտադող գնումներին չնայած մնացել են):
Մենք ուշադրություն ենք դարձնում Ախալթեկեի հաճախակի սխալներին և դրանց տեղակայմանը: Նայում ենք գործարանային սխալների հոգեւոր մոդուլին (60h) և հայտնաբերել, որ այն դատարկ է և չունի որևէ գրառում: Այս հիման վրա կարող ենք ենթադրել, որ ինչ-որ նախորդ սպասարկման կենտրոններում, հնարավոր է, իրականացվել են որոշ манипуляции ծառայողական գոտում, և պատահաբար կամ ակնհայտ կերպով գրանցվել է ուրիշ մոդուլի, կամ մաքրվել են սխալների ցանկը օրգանականում: Այս ենթադրությունը ստուգելու համար ստեղծում ենք խնդրանքը Data Extractor-ում, տվյալներով «քայլի կոպիա ստեղծում» և «վիրտուալ թարգմանիչ ստեղծում» ընտրանքներով:

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

Նկար 6 գլխավոր բեռնման գրառմանը և բաժինների սեղանին:
0x1BE տեղաբաշխմանը է գտնվում միակ գրառումը (16 բայթ): Բաժնի ֆայլային համակարգի տեսակ — NTFS, տեղադրման մինչև 0x3F (63) հատված, բաժնի չափը 0x011309A3 (18,024,867) հատված:
Տեսնում ենք 63 LBA հատվածում:

Նկար 7 NTFS բեռնման հատված:
NTFS բաժնի բեռնման հատվածում պարունակվող տեղեկությունների մասին կարելի է ասել հետևյալը: Հառնումի չափը, որը ընդունված է ծավալում, 512 բայթ է (0x0B տեղաբաշխման վրա մոտ 0x0200 (512) բառն է), հատվածների քանակը կլաստերներում հավասար է 8 (0x0D տեղաբաշխման վրա գրանցված է 0x08 բայթ), կլաստերի չափը հավասար է 512х8=4096 բայթ, առաջին MFT գրառումը գտնվում է 6,291,519 հատվածների տեղաբաշխման վրա (0x30 մոտ 4-համարը 0x00 00 00 00 00 0C 00 00 (786,432) առաջին կլաստերի համարի MFT-ի համար: Հետք է հաշվել հատվածի համարը. Կլաստերի թիվ * հատվածների քանակը կլաստերներում + տեղաբաշխման մինչև պատկեր 786,432* 8+63= 6,291,519):
Փոխվում ենք 6,291,519 հատված:

Նկար 8:
Բայց այս հատվածում առկա տվյալները չեն հիշեցնում MFT գրառումը: Սա, չնայած ցույց է տալիս հնարավոր շեղում զննամափողից, սակայն չի ապացուցում այս փաստը: Կարիք կա ուշադրության կենտրոնացնել disk reading 10,000 հատվածների մեջ երկու ուղղություններով 6,291,519 հատվածից: Եվ հետո կլինենք ընդհանուր արտահայտությամբ որոնում:

Նկար 9 առաջին MFT գրառումը:
6,291,551 հատվածում գտնում ենք առաջին MFT գրառումը: Իր դիրքը հաշվարկվածից տարբերվում է 32 հատվածով, և վերջնականապես հետևում է 16 գրառման (0-ից 15): Գրանցենք սեղանի չափովին 6,291,519 հատվածի դիրքը 32 հատվածով առաջ:

Նկար 10:
16-րդ գրառման դիրքը պետք է լինել 12,551,431 տեղաբաշխման վրա, բայց այնտեղ հայտնաբերում ենք զրոներ, MFT գրառման փոխարեն: Կատարենք նմանատիպ որոնում տարածքներում:

Նկար 11 MFT գրառումը 0x00000011 (17):
Գտնում ենք մեծ MFT հատված, որը սկսվում է 17-րդ գրառմանը 53,646 գրառումներով) 17 հատվածի շեղումով: 12,155,431 համարի համար կտեղադրենք +17 հատվածներ սեղանի չափերի:
Fragment MFT-ի դիրքի որոշումը մեր համար հնարավորություն է տալիս եզրակացնելու, որ սա պատահական փչացում չե'ն և MFT-ի ֆрагմենտների գրառումն անճիշտ տեղաշարժերով չէ։ Անճիշտ թարգմանիչի վարկածը կարելի է համարել հաստատված։
Հետագա տեղաբաշխման համար կսահմանենք հնարավոր ամենամեծ տեղաշարժը։ Այս նպատակով կպարզենք, թե որքանով է տեղափոխված NTFS բաժնի վերջնական նշանն (ստեղծված բեռնման հատվածի պատճենը)։ Պատկեր 7-ում 0x28 տեղաշարժը՝ քառանկածում, միավորի չափն է 0x00 00 00 00 01 13 09 A2 (18 024 866) հատվածներ։ Բաժնի սկզբունքից վերցնենք տեղաշարժը, ավելացնենք նրա երկարությանը, կստանանք NTFS-ի վերջնական նշանի տեղաշարժը 18 024 866 + 63= 18 024 929։ Հաշված տեղում անհրաժեշտ բեռնման հատվածի պատճենը չգտնվեց։ Ուղղությամբ որոնելիս այն հայտնաբերվեց ավելացող +12 հատվածներով վերջին MFT-ի ֆ ragմենտի նկատմամբ։

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

Պատկեր 13՝ Համակարգի ընթերցման վիճակը։
Մեր հաջորդ խնդիրը կլինի գնահատել տեղաշարժերի մոտավոր վայրերը (ֆայլի, որտեղ դրանք առաջացել են, ճշտությամբ)։ Հետի կմանրամասնենք բոլոր MFT գրառումները և կկառուցենք ֆայլերի (ֆիլմի ֆragմենտների) տարածման շղթաներ։

Պատկեր 14՝ Ֆայլերի տարածման շղթաները, կամ նրանց ֆрагմենտները։
Դրանից հետո, moving from file to file, we will look for the moment when instead of the expected file header there will be other data, while the desired header will be found with a certain positive shift. And as the shift points get clearer, we will fill out the table. The result of its filling will be over 99% of files without corruption.

Պատկեր 15՝ Հաճախորդի ֆայլերի ցուցակը (այս սքրինշոթի հրապարակման համար ստացել ենք հաճախորդի համաձայնությունը)։
Անձի ֆայլերում տեղային տեղաշարժերը հաստատելու համար կարող են կատարվել լրացուցիչ աշխատանքներ և, ֆայլի կառուցվածքն իմանալով, գտնել նրան չվերաբերող տվյալների ներառումներ։ Սակայն այս խնդրում դա տնտեսապես նպատակահարմար չէր։
P.S. Ես ցանկանում եմ նաև դիմել այն գործընկերներին, որոնց ձեռքում այս սկավառակը եղել է նախորդում: Խնդրում ենք ուշադիր լինել սարքերի միկրոպրограмմային աշխատանքում և գերազանցել ծառայողական տվյալները, նախքան որևէ բան փոխելը, ինչպես նաև մի թույլ տվեք դիտավորյալ չստանալ խնդիրը, եթե չեք կարողացել համաձայնության գալ հաճախորդի հետ աշխատելուն:
Ընտանիք: habr.com
