Hlavné menuUser loginSearch |
Reply to comment
Wednesday, 18.08.2010 0:29
Tento příspěvek je volným pokračováním série popisující mé příhody při provádění zdánlivě rutinních operací ve Windows a při práci s diskovými oddíly. Jak jste si možná všimli, předchozí díly byly často inspirovány katastrofami různého rozsahu, které jsem svojí činností způsobil. Dnešní článek není v ničem odlišný. Opět došlo, tentokrát pouze k relativně malé, katastrofě a opět jsem ji bez ztráty kytičky překonal. Někdy si už začínám připadat jako mistr úniků. Zajímavé určitě bude, až se dostanu do situace, kdy žádné záchranné práce nepomohou. PozadíPřed pár měsíci jsem se rozhodl pořídit si svůj první externí disk. Místa není nikdy dost, zejména když často pro svou práci používáte programy pro tvorbu virtuálních počítačů, jako je VMWare či Virtualbox. Vývojové nástroje, ISO obrazy instalačních médií k různým verzím Windows a zejména soubory virtuálních disků dokáží celkem spolehlivě zaplnit i interní disk notebooku o kapacitě 320 GB. Externí disk se též vyplatí pro účely zálohování. Na nový externí disk jsem přesunul velké množství dat včetně většiny obrazů instalačních médií a též jsem provedl zálohu velmi důležitého obsahu. Protože toto zařízení disponovalo kapacitou 640 GB, rozhodl jsem se je formátovat souborovým systémem NTFS, který díky své vnitřní struktuře nabízí teoreticky vyšší rychlost přístupu. Drobná nevýhoda může spočívat v přístupových právech, pokud médium přenášíte mezi více počítači. NTFS pro svoji činnost hojně využívá softwarových vyrovnávacích pamětí, což jednak zvyšuje jeho rychlost, ale na druhou stranu je nebezpečné takové zařízení odebírat jinak než přes ikonu „Bezpečně odebrat hardware“, která se nachází v pravém dolním rohu v blízkosti hodin. V opačném případě totiž nemusí dojít k zápisu všech potřebných dat, což může zavdat ke vzniku celkem velkého problému. ProblémPřesně nevím, jak ke zmizení adresáře ISO, ve kterém se nacházela instalační média k různým verzím Windows, z externího disku došlo. Příčinou pravděpodobně byla snaha systému o automatickou opravu struktury systému souborů na externím disku. K problému pravděpodobně došlo nechtěným odebráním zařízení bez použití ikony „Bezpečně odebrat hardware.“ Alespoň se tak domnívám z upozornění v prohlížeči událostí, které praví, že systém souborů na externím disku byl úspěšně opraven. Tato oprava spočívala v odstranění složky ISO z kořenového adresáře, protože buď její MFT záznam, nebo vlastní struktura kořenového adresáře byly poškozeny. Toto chování NTFS je vcelku běžné – chybné záznamy a části datových struktur odstraňuje. Nejdůležitější datovou strukturou souborového systému NTFS je Master File Table (MFT). Jedná se o tabulku (přesněji pole), ve které jsou uloženy informace o každém souboru a adresáři. Každá takovou entitu reprezentuje nejméně jeden MFT záznam. Ukázku této tabulky vidíte na obrázku 1. Záznam s číslem 35 popisuje adresář system32, který obsahuje například podadresář drivers (záznam číslo 36) či soubory kernel32.dll (38), ntoskrnl.exe (40) a win32k.sys (41).
Z obrázku je patrné, že pokud chceme zjistit, jaké položky obsahuje adresář system32, stačí nám přečíst informace uložené v jeho MFT záznamu a datech k němu přidružených. A přesně tak postupuje ovladač souborového systému, když jej aplikace požádá o tento druh služby – načte MFT záznam příslušné složky, přečte jeho data, zpracuje výsledek do podoby seznamu souborů a adresářů a vrátí jej entitě, která o něj požádala. Protože složku ISO nebyla v kořenovém adresáři externího disku vidět, zdálo se, že oprava NTFS spočívala buď v jejím smazání, nebo pouhém odstranění z dat MFT záznamu kořenového adresáře. Obecný postup při řešení problémů tohoto druhu Pokud se něco porouchá v souborovém systému, nejlepší postup pravděpodobně spočívá v diagnostice pomocí speciálních nástrojů, které dokáží chyby odhalit a získat data ze ztracených a poškozených souborů. A tak jsem se přesně rozhodl postupovat. Tyto speciální programy obvykle dokáží pracovat ve dvou režimech:
Pokud si tedy nechtěně smažete nějaká data a chcete je obnovit, pravděpodobně vystačíte s použitím speciálního programu v prvním režimu. Je velmi vhodné ukládat obnovené soubory na jiné médium, než to, jehož obsah zachraňujete, protože by v opačném případě molo dojít k přepsání dat, která ještě zachráněna nebyla. Hloubková analýza nastupuje až v případě, že hledání smazaných souborů nepřineslo očekávaný výsledek, nebo jsou interní struktury souborového systému tak poškozeny, že jej nelze provést. Tímto způsobem nelze zachránit soubory, jejichž formát speciální program nezná, protože nemůže rozpoznat jejich signaturu. Pokud ani hloubková analýza nepomůže, pravděpodobně vám nezbude než se se svými ztracenými daty rozloučit nadobro, nechcete-li zkusit štěstí se specializovanou firmou. DiagnostikaPři řešení mého problému jsem se držel výše popsaného obecného postupu. Mezi mé oblíbené programy v této oblasti patří Recuva. Stáhl jsem nejnovější verzi, nainstaloval a spustil. Nechal jsem provést pouze hledání smazaných souborů, hloubková analýza nepřipadala v úvahu, protože pohřešované soubory měly formát obrazu médií CD/DVD, který program nepodporuje (alespoň se tak na první pohled tváří jeho uživatelské rozhraní). Kontrola externího disku proběhla relativně rychle a odhalila mnoho smazaných souborů. Obrazy médií z adresáře ISO se však mezi nimi nenacházely. Ani samotnou složku vidět nebylo. I přesto program poskytl velmi slibné vodítko. U každého nalezeného smazaného souboru udává, zda jeho data nebyla přepsána souborem jiným. A několik smazaných souborů bylo přepsáno obrazy CD/DVD právě z adresáře ISO. Z výsledků hledání tedy vyplývalo, že adresář ISO ve skutečnosti smazán není. V opačném případě by jej program Recuva bez problémů našel. Data tedy nebyla smazána, ale ani viditelná, ačkoliv by měla. Situace trochu připomínala pohádku O chytré horákyni. Možnost, že můj systém je infikován rootkitem, který se snaží příslušné soubory před mýma očima skrýt, jsem velmi rychle vyloučil. Skrývat obrazy CD/DVD nemá příliš valný smysl, zejména pokud se jedná o instalační média. A protože můj stroj běží na 64bitové verzi Windows 7, nutnost digitálního podepisování ovladačů bude pro útočníka velkou překážkou, ne však nepřekonatelnou, jak ukázaly nedávné události. Po vyloučení rootkitu zbývala jediná možnost – souborový systém na externím disku je v nekonzistentním stavu. Návrháři souborových systémů hledí spíše na rychlost výsledného řešení, než na množství metadat, která je třeba o každém souboru či adresáři ukládat. Některé údaje jsou tedy uloženy několikrát, pokaždé v jiné formě. Na obrázku 1 jste viděli, že každý adresář si ve svém MFT záznamu a k němu přidružených strukturách uchovává seznam položek, které obsahuje. Každý MFT záznam si však navíc pamatuje svého rodiče – složku, do které patří. Adresářový strom lze tedy zrekonstruovat dvěma způsoby:
Z této redundance mimo jiné vyplývá, že šipky na obrázku 1 by měly vést oběma směry a nikoli ukazovat pouze z MFT záznamu adresáře na jeho položky. Znalost této redundance však dává rozumné vysvětlení chování programu Recuva. Složka ISO byla v důsledku opravy vyňata z kořenového adresáře, ale její MFT záznam a ani záznamy jejích položek nebyly označeny za smazané. Z toho vyplývá, že program Recuva je schopen z konkrétního záznamu zjistit jeho plné jméno (včetně cesty), ale nedokáže vybudovat adresářový strom od kořene. Celou domněnku zbývalo pouze ověřit. OvěřeníNáhoda tomu chtěla, že jsem se přes rok věnoval programu FileDetector, jehož účelem je nacházet skryté a jinak podezřelé soubory na disku. Jedná se v podstatě o parser (rozpoznávač) struktur souborových systémů FAT a NTFS. Program podporuje dva algoritmy budování adresářového stromu:
Pokud byla domněnka o nekonzistenci souborového systému správná, trojfázový algoritmus by měl označ položky ze složky ISO jako skryté. Jak ukazuje obrázek 2, skutečně se tak stalo.
Konečné řešeníV tomto bodě bylo zřejmé, že hledané soubory se na externím disku opravdu nacházejí, a protože jsem na něj od doby „opravy“ nic nezapisoval, existovala velká pravděpodobnost na jejich záchranu v plném rozsahu. Podle rčení „proč to dělat jednoduše, když to jde i složitě“ jsem se rozhodl při obnovování nespoléhat na cizí programy (v této fázi jsem ani nevěděl, že bych s nimi vystačil), a provést jej pouze za využití programu FileDetector. Nejprve byl program upraven tak, aby u skrytých souborů ukazoval čísla jejich MFT záznamů. Výsledek ukazuje obrázek 3. Dále bylo zapotřebí vylepšit schopnost aplikace kopírovat soubory na základě čísla záznamu. Program zatím uměl pouze kopírovat a přepisovat obsah na základě celé cesty. Pro podporu nových vlastností jsem do nástroje Zkopírovat objekt přidal podporu následující syntaxe:
kde X je písmeno diskového oddílu a za znakem # se nachází číslo MFT záznamu souboru, která má být zkopírován. Jakmile byl FileDetector vybaven novými funkcemi, dal se ihned do práce a za několik hodin byla všechna data obnovena a uložena na bezpečnější místo, na jiný externí disk.
ZávěrPo dokončení obnovovacího procesu jsem prohlédl externí disk s poškozeným souborovým systémem ještě několika nástroji na hledání smazaných či jinak poškozených souborů a zjistil jsem, že si s oním poškozením vědí rady. Například u programu Recuva (verze 1.38.504) bylo třeba v nastavení zaškrtnout hledání nesmazaných souborů (viz obrázek 4). Uspěly i programy Active File Recovery 7.5.3 či Recover My Files v4.6.6(845). V případě druhé aplikace však bylo zapotřebí provést zotavení celého diskového oddílu (volba Recover Drive). Poučení plynoucí z tohoto článku jsou velmi jednoduchá. I když nepatříte mezi malou skupinu lidí, co znají interní strukturu různých souborových systémů, nemusíte při ztrátě dat věšet hlavu. Specializované programy si dokáží poradit ve většině případů, pokud je správně nastavíte. Nejúčinnější pomocí je samozřejmě prevence spočívající v častém zálohování. Poslední poučení říká, abyste brali moje postupy s rezervou. Řešení lze dosáhnout většinou mnohem přímočařejšími a jednoduššími cestami, po kterých můžete jít bez potřeby speciálních (a většinou zbytečných) znalostí.
Užitečné odkazyReply |
LinksOdkazy |