I 2019 stod der en usædvanlig harddisk modtaget i vores laboratorium: QUANTUM FIREBALL Plus KA med en kapacitet på 9,1 GB. Ifølge ejerens oplysninger opstod der problemer med harddisken tilbage i 2004 på grund af en defekt strømforsyning, som også påvirkede harddisken og andre komponenter i PC'en. Herefter blev diskene sendt til forskellige services for at forsøge at reparere dem og genoprette data, men uden held. Nogle steder lovede de billig hjælp, men løste ikke problemet, andre steder var det for dyrt, og kunden ønskede ikke at genoprette data. I sidste ende gennemgik disken mange servicecentre. Den blev ofte væk, men takket være ejerens omhyggelige notering af information fra forskellige mærkater på harddisken lykkedes det ham at få netop sin harddisk tilbage fra nogle af servicecentrene. Disse eskapader gik ikke ubemærket hen; på det originale controllerkort var der synlige tegn på omsætning, og der manglede synligt SMD-komponenter (jeg vil springe frem og sige, at det er den mindste af dette dykers problemer).

Fig. 1 HDD Quantum Fireball Plus KA 9,1 GB
Først måtte vi finde en donor fra arkivet med en arbejdende controller til denne gamle tvilling af harddisken. Da denne opgave var løst, kunne vi udføre omfattende diagnostiske test. Efter at have kontrolleret motorviklingerne for kortslutning og bekræftet, at der ikke var nogen, installerede vi donorens controllerkort på patientens harddisk. Vi tilslutter strømmen og hører den normale lyd af akslen, gennemgår kalibreringstesten med opstart af firmware, og efter et par sekunder rapporterer harddisken, at den er klar til at modtage kommandoer fra grænsefladen.
Fig. 2 DRD DSC-indikatorerne angiver klarhed til at modtage kommandoer.
Vi reserverer alle kopier af firmwaremodulerne. Vi udfører en integritetskontrol af firmwaremodulerne. Der er ingen problemer med at læse modulene, men en analyse af rapporterne viser, at der er nogle mærkelige ting.

Fig. 3. Zonekort.
Vi bemærker zonefordelingstabelen og ser, at antallet af cylindere er 13845.

Fig. 4 P-list (primær liste – liste over defekter indført i produktionscyklussen).
Vi bemærker det alt for lave antal defekter og deres lokalisering. Vi gennemgår modulet for skjult log af fabriksdefekter (60h) og finder ud af, at det er tomt og ikke indeholder nogen poster. På baggrund af dette kan vi antage, at der muligvis er blevet foretaget nogle manipulationer med serviceområdet for lagermodulerne i et af de tidligere servicecentre, og enten ved en fejl eller med vilje er der blevet skrevet et fremmed modul, eller defektlisten i den originale er blevet renset. For at bekræfte denne antagelse opretter vi en opgave i Data Extractor med de aktiverede indstillinger 'oprettelse af sektor-copy' og 'oprettelse af virtuel oversætter'.

Fig. 5 Opgaveparametre.
Når opgaven er oprettet, gennemgår vi posterne i partitionstabelen i sektor 0 (LBA 0)

Fig. 6 Primær opstartsoptegnelse og partitionstabel.
På offset 0x1BE findes der en eneste post (16 byte). Fil-systemtypen for partitionen er NTFS, offset til begyndelsen er 0x3F (63) sekunder, størrelsen på partitionen er 0x011309A3 (18 024 867) sekunder.
I sektor-editoren åbner vi LBA 63.

Fig. 7 Opstartssektor NTFS
Ifølge oplysningerne i opstartssektoren for NTFS-partitionen kan man sige følgende: den accepterede sektorstørrelse i volumen er 512 byte (på offset 0x0B er ordet 0x0200 (512) skrevet), antallet af sektioner i clusteret er 8 (på offset 0x0D er byte 0x08 gemt), størrelsen på clusteret er 512x8=4096 byte, den første MFT-post ligger på offset 6 291 519 sektioner fra diskens begyndelse (på offset 0x30 er det firdobbelte ord 0x00 00 00 00 00 0C 00 00 (786 432) nummeret på den første cluster MFT. Sektornummeret beregnes ved hjælp af formlen: Cluster nummer * antal sektioner i cluster + offset til begyndelsen af partitionen 786 432* 8+63= 6 291 519).
Vi går videre til sektor 6 291 519.

Fig. 8
Men dataene i denne sektor ligner overhovedet ikke en MFT-post. Selvom dette indikerer en mulig forkert oversættelse på grund af en ukorrekt defekt-liste, beviser det ikke dette faktum. Til yderligere kontrol vil vi læse disken i 10 000 sektioner i begge retninger i forhold til sektor 6 291 519. Og derefter vil vi udføre et søgning med regulære udtryk i det læste.

Fig. 9 Første MFT-post
I sektor 6 291 551 finder vi den første MFT-post. Dens position afviger fra den beregnede med 32 sektorer, og der følger derefter en kontinuerlig gruppe af 16 poster (fra 0 til 15). Vi indskriver i forskydningstabellen positionen for sektor 6 291 519, som skal flyttes fremad med 32 sektorer.

Fig. 10
Positionen for post nr. 16 skal være med en forskydning på 12 551 431, men der finder vi nuller i stedet for en MFT-post. Vi udfører en lignende søgning i nærheden.

Fig. 11 MFT-post 0x00000011 (17)
Der opdages et stort fragment af MFT, der begynder med posten nummer 17 med en længde på 53 646 poster) med en forskydning på 17 sektorer. For positionen 12 155 431 sætter vi forskydningen +17 sektorer i forskydningstabellen.
Ved at bestemme placeringen af MFT-fragmenterne i rummet kan vi konkludere, at dette ikke ligner en tilfældig fejl, og at registreringen af MFT-fragmenter ved forkerte forskydninger er verificeret. Versionen med den forkerte oversætter kan betragtes som bekræftet.
For videre lokalisering af forskydningspunkterne vil vi etablere den maksimalt mulige forskydning. For dette formål bestemmer vi, hvor meget slutelementet for NTFS-partitionen (kopien af boot-sektoren) er forskudt. På billede 7 ved forskydning 0x28 er det fjerde ord værdien for partitionens størrelse 0x00 00 00 00 01 13 09 A2 (18 024 866) sektorer. Vi lægger forskydningen af selve partitionen fra diskens begyndelse til dens længde og får forskydningen af slutelementet for NTFS 18 024 866 + 63= 18 024 929. Som forventet, der fandtes ikke den nødvendige kopi af boot-sektoren der. Under søgningen i nærheden blev den fundet med en stigende forskydning på +12 sektorer i forhold til det sidste MFT-fragment.

Fig. 12 Kopi af boot-sektoren NTFS
Den anden kopi af boot-sektoren med forskydning 18 041 006 ignoreres, da den ikke vedrører vores partition. Baseret på tidligere aktiviteter er det konstateret, at der i partitionen er indskud af 'fremtrædende' i 61 sektorer, som har skubbet dataene.
Vi udfører en fuld læsning af lagermediet, hvor resultatet er 34 ulæste sektorer. Desværre kan vi ikke med sikkerhed garantere, at alle de er defekter, der er fjernet fra P-listen, men ved yderligere analyse er det ønskeligt at tage højde for deres placering, da man i nogle tilfælde med sikkerhed kan bestemme forskydningspunkterne med præcision til sektoren i stedet for til filen.

Fig. 13 Statistisk læsning af disken.
Vores næste opgave vil være at fastlægge de omtrentlige forskydningspunkter (ned til den fil, hvor de opstod). For at gøre dette vil vi scanne alle MFT-poster og opbygge kæder af filplaceringer (filfragmenter).

Fig. 14 Kæder af filplaceringer eller deres fragmenter.
Derefter, bevægende os fra fil til fil, leder vi efter, hvornår der i stedet for den forventede filoverskrift vil være andre data, og at den nødvendige overskrift vil blive opdaget med en vis positiv forskydning. Og efterhånden som vi afklarer forskydningspunkterne, fylder vi tabellen ud. Resultatet af denne udfyldning vil være over 99% filer uden skader.

Fig. 15 Liste over brugerfiler (klienten har givet samtykke til offentliggørelse af dette skud)
For at fastslå punktsforskydninger i enkelte filer kan der udføres yderligere arbejde, og ved at kende filstrukturen kan man finde indlæg af data, der ikke tilhører den. Men i dette tilfælde var det ikke økonomisk rentabelt.
P.S. Jeg vil også gerne henvende mig til kolleger, der tidligere har haft denne disk. Vær venlig at være opmærksom ved arbejde med enhedens firmware og sikkerhedskopier de serviceoplysninger, inden du ændrer noget, og undgå også bevidst at forværre problemet, hvis du ikke har kunnet indgå en aftale med klienten om udførelsen af arbejdet.
Kilde: habr.com
