Door pijn of de lange geschiedenis van één poging tot gegevensherstel lopen

Het was 2019. Ons laboratorium ontving een QUANTUM FIREBALL Plus KA-schijf met een capaciteit van 9.1 GB, wat niet zo gebruikelijk is voor onze tijd. Volgens de eigenaar van de schijf vond de storing in 2004 plaats als gevolg van een defecte stroomvoorziening, waardoor de harde schijf en andere pc-componenten werden meegenomen. Vervolgens waren er bezoeken aan verschillende diensten met pogingen om de schijf te repareren en gegevens te herstellen, maar die waren niet succesvol. In sommige gevallen beloofden ze dat het goedkoop zou zijn, maar ze losten het probleem nooit op, in andere gevallen was het te duur en wilde de klant de gegevens niet herstellen, maar uiteindelijk ging de schijf door veel servicecentra. Hij ging verschillende keren verloren, maar dankzij het feit dat de eigenaar van tevoren zorgde voor het vastleggen van informatie van verschillende stickers op de schijf, slaagde hij erin ervoor te zorgen dat zijn harde schijf werd geretourneerd door sommige servicecentra. De wandelingen verliepen niet spoorloos, er bleven meerdere soldeersporen achter op het originele controllerbord en het ontbreken van SMD-elementen was ook visueel voelbaar (vooruitkijkend zal ik zeggen dat dit het minste van de problemen van deze schijf is).

Door pijn of de lange geschiedenis van één poging tot gegevensherstel lopen
Rijst. 1 HDD Quantum Fireball Plus KA 9,1 GB

Het eerste wat we moesten doen was in het donorarchief zoeken naar zo’n eeuwenoude tweelingbroer van deze schijf met werkend controllerbord. Toen deze zoektocht was voltooid, werd het mogelijk uitgebreide diagnostische maatregelen uit te voeren. Nadat we de motorwikkelingen hebben gecontroleerd op kortsluiting en er zeker van zijn dat er geen kortsluiting is, installeren we de printplaat van de donoraandrijving naar de patiëntaandrijving. We zetten stroom aan en horen het normale geluid van de as die draait, een kalibratietest doorstaan ​​​​met het laden van de firmware, en na een paar seconden meldt de schijf via registers dat hij klaar is om te reageren op opdrachten van de interface.

Door pijn of de lange geschiedenis van één poging tot gegevensherstel lopen
Rijst. 2 DRD DSC-indicatoren geven de bereidheid aan om opdrachten te ontvangen.

We maken een back-up van alle kopieën van firmwaremodules. We controleren de integriteit van de firmwaremodules. Er zijn geen problemen met het lezen van modules, maar uit analyse van de rapporten blijkt dat er enkele eigenaardigheden zijn.

Door pijn of de lange geschiedenis van één poging tot gegevensherstel lopen
Rijst. 3. Zonetabel.

We letten op de zonale distributietabel en merken op dat het aantal cilinders 13845 is.

Door pijn of de lange geschiedenis van één poging tot gegevensherstel lopen
Rijst. 4 P-lijst (primaire lijst – lijst met defecten die tijdens de productiecyclus zijn geïntroduceerd).

Wij vestigen de aandacht op het te kleine aantal defecten en hun locatie. We kijken naar de logboekmodule voor het verbergen van fabrieksfouten (60h) en ontdekken dat deze leeg is en geen enkele vermelding bevat. Op basis hiervan kunnen we aannemen dat in een van de vorige servicecentra mogelijk enkele manipulaties zijn uitgevoerd met het servicegebied van de schijf, en dat per ongeluk of opzettelijk een vreemde module is geschreven, of de lijst met defecten in het origineel één werd opgeruimd. Om deze veronderstelling te testen, maken we een taak in Data Extractor met de opties ‘sector-voor-sector-kopie maken’ en ‘virtuele vertaler maken’ ingeschakeld.

Door pijn of de lange geschiedenis van één poging tot gegevensherstel lopen
Rijst. 5 Taakparameters.

Nadat we de taak hebben gemaakt, kijken we naar de vermeldingen in de partitietabel in sector nul (LBA 0)

Door pijn of de lange geschiedenis van één poging tot gegevensherstel lopen
Rijst. 6 Hoofdopstartrecord en partitietabel.

Bij offset 0x1BE is er een enkele invoer (16 bytes). Het bestandssysteemtype op de partitie is NTFS, verschoven naar het begin van 0x3F (63) sectoren, partitiegrootte 0x011309A3 (18) sectoren.
Open LBA 63 in de sectoreditor.

Door pijn of de lange geschiedenis van één poging tot gegevensherstel lopen
Rijst. 7 NTFS-opstartsector

Volgens de informatie in de opstartsector van de NTFS-partitie kunnen we het volgende zeggen: de sectorgrootte die in het volume wordt geaccepteerd is 512 bytes (woord 0x0 (0) wordt geschreven op offset 0200x512B), het aantal sectoren in het cluster is 8 (byte 0x0 wordt geschreven op offset 0x08D), de clustergrootte is 512x8=4096 bytes, het eerste MFT-record bevindt zich op een offset van 6 sectoren vanaf het begin van de schijf (op een offset van 291x519 viervoudig woord 0x30 0 00 00 00 00C 00 0 (00) nummer van de eerste MFT-cluster. Het sectornummer wordt berekend met de formule: Clusternummer * aantal sectoren in de cluster + offset naar het begin van de sectie 00* 786+432= 786).
Laten we verder gaan naar sector 6.

Door pijn of de lange geschiedenis van één poging tot gegevensherstel lopen
Fig. 8

Maar de gegevens in deze sector verschillen totaal van het MFT-record. Hoewel dit duidt op een mogelijk onjuiste vertaling als gevolg van een onjuiste lijst met defecten, bewijst dit dit feit niet. Om dit verder te controleren, zullen we de schijf met 10 sectoren in beide richtingen lezen ten opzichte van 000 sectoren. En dan gaan we zoeken naar reguliere expressies in wat we lezen.

Door pijn of de lange geschiedenis van één poging tot gegevensherstel lopen
Rijst. 9 Eerste MFT-opname

In sector 6 vinden we het eerste MFT-record. De positie verschilt van de berekende één op 291 sectoren, en vervolgens volgt er continu een groep van 551 records (van 32 tot 16). Laten we de positie van sector 0 in de schuiftabel invoeren en 15 sectoren vooruit gaan.

Door pijn of de lange geschiedenis van één poging tot gegevensherstel lopen
Fig. 10

De positie van record nr. 16 zou op offset 12 moeten liggen, maar we vinden daar nullen in plaats van het MFT-record. Laten we een soortgelijke zoektocht in de omgeving uitvoeren.

Door pijn of de lange geschiedenis van één poging tot gegevensherstel lopen
Rijst. 11 MFT-invoer 0x00000011 (17)

Er wordt een groot fragment van MFT gedetecteerd, beginnend met recordnummer 17 met een lengte van 53 records) met een verschuiving van 646 sectoren. Voor positie 17 plaatst u een verschuiving van +12 sectoren in de ploegentabel.
Nu we de positie van MFT-fragmenten in de ruimte hebben bepaald, kunnen we concluderen dat dit niet lijkt op een willekeurige fout en opname van MFT-fragmenten met onjuiste offsets. Een versie met een onjuiste vertaler kan als bevestigd worden beschouwd.
Om de schakelpunten verder te lokaliseren, zullen we de maximaal mogelijke verplaatsing instellen. Om dit te doen, bepalen we hoeveel de eindmarkering van de NTFS-partitie (kopie van de opstartsector) is verschoven. In Figuur 7 is het quadwoord, bij offset 0x28, de partitiegroottewaarde van 0x00 00 00 00 01 13 09 A2 (18) sectoren. Laten we de offset van de partitie zelf vanaf het begin van de schijf optellen bij de lengte ervan, en we krijgen de offset van de NTFS-eindmarkering 024 + 866= 18. Zoals verwacht was de vereiste kopie van de opstartsector er niet. Bij het zoeken in de omgeving werd het gevonden met een toenemende verschuiving van +024 sectoren ten opzichte van het laatste MFT-fragment.

Door pijn of de lange geschiedenis van één poging tot gegevensherstel lopen
Rijst. 12 Kopie van NTFS-opstartsector

We negeren de andere kopie van de opstartsector op offset 18, omdat deze niet gerelateerd is aan onze partitie. Op basis van eerdere activiteiten werd vastgesteld dat er binnen de sectie 041 sectoren zijn opgenomen die in de uitzending “opdook”, waardoor de gegevens werden uitgebreid.
We voeren een volledige leesbewerking van de schijf uit, waardoor er 34 ongelezen sectoren overblijven. Helaas is het onmogelijk om op betrouwbare wijze te garanderen dat het allemaal defecten zijn die uit de P-lijst zijn verwijderd, maar bij verdere analyse is het raadzaam om rekening te houden met hun positie, omdat het in sommige gevallen mogelijk zal zijn om op betrouwbare wijze de verschuivingspunten te bepalen met een nauwkeurigheid van de sector, en niet van het bestand.

Door pijn of de lange geschiedenis van één poging tot gegevensherstel lopen
Rijst. 13 Schijfleesstatistieken.

Onze volgende taak zal zijn om bij benadering de locaties van de diensten vast te stellen (tot de nauwkeurigheid van het bestand waarin ze plaatsvonden). Om dit te doen, scannen we alle MFT-records en bouwen we ketens van bestandslocaties (bestandsfragmenten) op.

Door pijn of de lange geschiedenis van één poging tot gegevensherstel lopen
Rijst. 14 Locatieketens van bestanden of hun fragmenten.

Vervolgens kijken we van bestand naar bestand naar het moment waarop er andere gegevens zullen zijn in plaats van de verwachte bestandskop, en de gewenste kop zal worden gevonden met een bepaalde positieve verschuiving. En terwijl we de verschuivingspunten verfijnen, vullen we de tabel in. Het resultaat van het vullen ervan is dat meer dan 99% van de bestanden schadevrij blijft.

Door pijn of de lange geschiedenis van één poging tot gegevensherstel lopen
Rijst. 15 Lijst met gebruikersbestanden (er is toestemming ontvangen van de klant om deze schermafbeelding te publiceren)

Om puntverschuivingen in individuele bestanden vast te stellen, kunt u extra werk uitvoeren en, als u de structuur van het bestand kent, insluitsels van gegevens vinden die er geen verband mee houden. Maar in deze taak was het economisch niet haalbaar.

PS Ik wil ook graag mijn collega's aanspreken, in wier handen deze schijf eerder was. Wees voorzichtig bij het werken met apparaatfirmware en maak een back-up van servicegegevens voordat u iets wijzigt, en vererger het probleem niet opzettelijk als u het niet met de klant eens kunt worden over het werk.

Vorige publicatie: Besparen op matches of data herstellen van een knarsende HDD Seagate ST3000NC002-1DY166

Bron: www.habr.com

Voeg een reactie