background image

bezpieczeństwo

32

styczeń 2005

Odzyskiwanie danych 

– sposoby i przegląd 

narzędzi

Michał Niwicki

N

a pewno każdy z Was sta-
nął lub stanie przed proble-
mem  odzyskania  danych. 
Zazwyczaj  w  momencie, 

w którym uświadamiamy sobie, że stra-
ciliśmy istotne pliki, nie widzimy szansy 
na  ich  odratowanie  i  nie  podejmuje-
my  żadnych  działań.  Spotykamy  się 
z  dwiema  sytuacjami.  Pierwsza  wiąże 
się  z  fizycznym  uszkodzeniem  nośni-
ka  danych  (twardego  dysku,  dyskiet-
ki,  płyty  CD/DVD),  co  uniemożliwia 
nam  prawidłowe  odczytanie  zawarto-
ści całego pliku. Druga to taka, w której 
umyślnie lub nieumyślnie skasowaliśmy 
z dysku potrzebny nam plik i chcemy go 
odzyskać.  W  obu  przypadkach  istnieją 
sposoby i narzędzia pozwalające na cał-
kowite  lub  częściowe  odzyskanie  utra-
conych danych.

W  niniejszym  artykule  dokonamy 

przeglądu  kilku  popularnych  aplika-
cji  służących  do  odzyskiwania  danych 
–  uszkodzonych  bądź  usuniętych 
z naszego komputera.

Fizyczne uszkodzenie 

nośnika

Zanim przejdziemy do omówienia spo-
sobu  odzyskania  utraconych  danych 
z  uszkodzonego  nośnika,  wytłumaczy-
my najpierw, jak dochodzi do uszkodze-
nia nośnika i jaki ma to wpływ znajdu-
jące się na nim dane.

Tradycyjnie,  wszystkie  magnetycz-

ne  nośniki  danych  –  dyskietki,  twarde 
dyski,  taśmy  –  mogą  ulec  częściowe-
mu  rozmagnesowaniu  na  skutek  kon-
taktu  z  różnymi  urządzeniami  wytwa-
rzającymi  duże  pole  elektromagnetycz-
ne  (magnesy,  bramki  kontrolne  na  lot-
nisku,  telefony  komórkowe).  W  przy-
padku  płyt  CD/DVD  najczęściej  spo-

tykamy  się  z  fizycznym  uszkodzeniem 
jednej  z  optycznych  warstw  na  skutek 
zarysowania.

W obu sytuacjach, gdy dochodzi do 

utraty  części  (kilku  lub  kilkudziesię-
ciu  bajtów)  pliku  lub  systemu  plików, 
system  komunikuje  nam,  że  odczyt 
z  urządzenia  jest  niemożliwy  i  zaprze-
staje dalszych prób dostępu do danych.

Spróbujmy  zilustrować  przykładem 

zaistniały  problem.  Posiadamy  płytę, 
na której znajduje się dwugodzinny film 
w  pliku  o  łącznej  objętości  690  mega-
bajtów. Na skutek fizycznego uszkodze-
nia  (przypadkowe  zarysowanie  płyty) 
nie jest możliwy odczyt kilku ostatnich 
bajtów pliku, w efekcie czego program 
odtwarzający przerywa działanie przed 
najciekawszym fragmentem filmu.

Wiemy lub domyślamy się, że uszko-

dzeniu uległo jedynie kilka sekund cen-
nego  nagrania,  natomiast  kilkanaście 
pozostałych minut nadal znajduje się na 
płycie.  Stajemy  przed  problemem,  jak 
zmusić  program  do  odtworzenia  tego, 
co  znajduje  się  za  uszkodzonym  obsza-
rem.  Innymi  słowy,  chcemy,  aby  pro-
gram nie przerywał działania w przypad-
ku, w którym nie może odczytać zapisa-
nych danych.

DD_rescue

Gdy próba przekopiowania uszkodzone-
go pliku standardową metodą nie skutku-
je (tak dzieje się, gdy używamy standar-
dowej komendy 

cp

), z pomocą przycho-

dzi nam program DD_rescue.

Jego  zasada  działania  jest  prosta 

–  próbuje  odzyskać  uszkodzone  bajty 
pliku, a w przypadku, gdy nie może ich 
odczytać, nie przerywa swego działania, 
nie ucina uszkodzonego pliku i kontynu-
uje proces kopiowania.

Na płycie CD/DVD

Na płycie CD/DVD znajduje się 

oprogramowanie omawiane 

w artykule.

background image

33

bezpieczeństwo

narzędzia data recovery

www.lpmagazine.org

W efekcie otrzymujemy lekko uszko-

dzony,  ale  już  możliwy  do  odczytania 
plik,  który  nie  różni  się  rozmiarem  od 
oryginału, ale zawiera błędy w miejscu, 
w którym doszło do uszkodzenia nośni-
ka, z którego kopiowaliśmy.

Praca z dd_rescue

Kopiowanie  za  pomocą  dd_rescue  jest 
proste.  Wywołanie  programu  przybiera 
postać: 

dd_rescue  [opcje]  <plik_źró-

dłowy> <plik_docelowy>.

Jeśli  w  wyniku  działania  komen-

dy 

dd_rescue  plik_a  plik_b

  program 

skopiuje  pliki  bez  napotkania  na  błędy, 
powinien  wyświetlić  się  komunikat 
podobny do poniższego:

dd_rescue: (info): plik_a (0.8k): EOF
Summary for plik_a -> plik_b:
dd_rescue: (info): ipos: 0.8k,

S

             opos: 0.8k, xferd: 0.8k 
errs:0, errxfer: 0.0k, succxfer: 0.8k
+curr.rate: 15kB/s, avg.rate: 15kB/s,

S

             avg.load:  0.0%

Jeśli podczas procesu kopiowania przytra-
fią się błędy odczytu, pojawi się dodatko-
wa informacja dotycząca ilości uszkodzo-
nych bajtów i miejsca ich występowania.

Dodatkowe  przydatne  opcje  progra-

mu  to  kopiowanie  piku  od  określonej 
pozycji (w bajtach), kopiowanie zbioru 
danych od końca do początku, wyświe-
tlanie  pełnej  informacji  o  procesie 
odczytywania  i  zapisywania  przetwa-
rzanych danych oraz określenie górnej 
granicy  ilości  błędów,  po  osiągnięciu 
której praca programu jest przerywana.

Pewnym ułatwieniem w korzystaniu 

z programu DD_rescue jest skrypt napi-
sany z BASH-u – DD_rhelp. Jego działa-
nie opiera się na programie DD_rescue

ale  od  użytkownika  nie  jest  wymaga-
ne  podawanie  żadnych  dodatkowych 
opcji  –  wystarczy,  że  w  linii  poleceń 
wpiszemy: 

dd_rhelp  <plik_źródłowy> 

<plik_docelowy>

,  a  skrypt  domyślnie 

odzyska (jeśli tylko mu się uda) wszel-
kie utracone dane.

Skasowane pliki – jak 

sobie z nimi radzić

Zdarza  się,  że  na  skutek  pomyłki  lub 
celowego  działania  osób  trzecich  w 
wyniku operacji kasowania (plików lub 
partycji) straciliśmy część lub wszystkie 
nasze  dane.  Mogłoby  się  wydawać,  że 
wszystko stracone, ale i na takie przy-
padki  jest  rada.  W  najlepszym  razie 
może  okazać  się,  że  dane  są  w  100% 
odzyskiwalne, ale najczęściej spotkamy 
się z sytuacją, w której odzyskamy jedy-
nie  mniejszy  lub  większy  procent  ska-
sowanych zbiorów. Paradoksalnie, to co 
wygląda  bardzo  groźnie,  może  okazać 
się  łatwe  w  naprawie.  Najczęstszym 
omawianym  wyżej  przypadkiem  jest 
zamazanie  tablicy  partycji  dysku  twar-
dego  (tracimy  wszystko)  lub  skasowa-
nie  pliku/plików  komendą  rm

.

  Narzę-

dzia,  jakich  można  użyć  w  obu  przy-
padkach, przedstawię poniżej.

Namierzanie partycji programem 

Gpart

Jeśli z pewnych powodów zamazaliśmy 
tablicę  partycji  dysku  twardego  (dzieje 
się  tak  przykładowo  podczas  nieuważ-
nego dzielenia dysku na partycje), mimo 
że dysk wygląda tak, jakby nic na nim się 
nie znajdowało, nasze dane wciąż na nim 
są. Proces przywracania struktury dysku 
do pierwotnej postaci wymaga od użyt-
kownika  wiedzy  na  temat  tego,  jakiej 
wielkości i jakiego typu partycje znajdo-

wały się na nim przed zamazaniem tabli-
cy  partycji.  Problem  w  tym,  że  takimi 
informacjami  większość  użytkowników 
nie  dysponuje.  Tu  z  pomocą  przycho-
dzi Gpart – narzędzie, którego działanie 
wydaje się być proste: program analizu-
je  dane  zapisane  na  dysku  (jeszcze  nie 
skasowane)  i  na  ich  podstawie  próbuje 
odbudować tablicę partycji dysku.

Praca z narzędziem Gpart

Ponieważ  po  skasowaniu  partycji  nie 
mamy dostępu do żadnych danych, które 
się  na  dysku  znajdują,  nie  możemy  rów-
nież  uruchomić  Gparta.  W  takiej  sytu-
acji  powinniśmy  skorzystać  z  ratunko-
wej  dystrybucji  Linuksa  –  RIP.  Po  wło-
żeniu  do  napędu  CD/DVD  bootowalnej 
płyty  i  ponownym  uruchomieniu  kom-
putera, naszym oczom ukaże się ascetycz-
nie wyglądające okno terminala. Po zalo-
gowaniu się na konto administratora sys-
temu (root) mamy do dyspozycji kilkadzie-
siąt programów służących do odzyskiwa-

R

E

K

L

A

M

A

Wybrane parametry 

DD_rescue:

•  

-w

 – przerywa kopiowanie jeśli 

napotka na błędy

•  

-r

 – kopiowanie wsteczne 

(od końca pliku do początku)

•  

-v

 – wyświetla pełną informację 

o procesie kopiowania

•  

-q

 – nie wyświetla żadnych 

komunikatów

•  

-e x

 – przerywa działanie po 

osiągnięciu x błędów

•  

-s s

 – rozpoczyna kopiowanie pliku 

od s bajta

•  

-m m

 – kopiuje jedynie m bajtów

•  

-d

 – wykorzystuje bezpośredni 

dostęp do urządzenia blokowego 
(z pominięciem pamięci cache)

background image

34

bezpieczeństwo

styczeń 2005

nia i ratowania różnych systemów opera-
cyjnych. Nas interesuje Gpart.

Wydajemy  polecenie 

gpart  [opcje] 

urządzenie

 i czekamy na to, aż program 

przeanalizuje  nasz  nośnik  danych  pod 
względem  struktury  zapisanych  na  nim 
danych. Przykładowo:

# gpart /dev/hda

spowoduje, że narzędzie będzie analizo-
wało dysk /dev/hda.

Po  pewnym  czasie  (może  trwać  to 

nawet  kilkanaście  minut  –  w  zależności 
od tego jakiej wielkości posiadamy dysk) 
naszym oczom powinna ukazać się infor-
macja podobna do tej z Listingu 1.

Wynika  z  niej,  że  pierwsza  party-

cja jest typu ext2 i ma rozmiary 101 MB, 
podczas gdy druga partycja jest najpraw-
dopodobniej partycją wymiany (swap) o 
rozmiarach sięgających ponad 1 GB. 

Jeśli  przedstawione  informacje  uwa-

żamy  za  prawdziwe,  możemy  zapisać 
na  dysku  nową  tablicę  partycji  wydając 
polecenie:

# gpart -W /dev/hda /dev/hda

Parametr  /dev/hda  podajemy  dwa  razy, 
gdyż pierwszy mówi nam, jaka jest struk-
tura badanego dysku, a drugi zapisuje na 
wskazanym dysku tablicę partycji.

Po ponownym uruchomieniu kompu-

tera możemy od nowa cieszyć się zawar-
tością naszego dysku.

Więcej o Gpart

Jak  zobaczyliśmy,  w  niektórych  sytu-
acjach  potrafi  naprawić  strukturę  dysku, 
na  którym  po  zamazaniu  tablicy  party-
cji utworzono nowe partycje (jeszcze nie-
formatowane).  Dzieje  się  tak  dlatego,  że 
narzędzie to nie próbuje odzyskać zamaza-
nej tablicy partycji, lecz na podstawie roz-
kładu  danych  na  dysku  (analizuje  sektor 
po sektorze) stara się stworzyć tablicę par-
tycji na nowo. W efekcie, wydawać by się 

mogło, tragiczna w skutkach próba zmiany 
typu partycji z ext3 na swap zostanie pra-
widłowo  zdiagnozowana  przez  Gparta 
i naprawiona.

Mimo  swojej  niepozorności,  Gpart 

jest  potężnym  narzędziem,  które  potra-
fi  o  wiele  więcej  niż  opisaliśmy  powy-
żej. Obsługuje większość znanych typów 
partycji  –  począwszy  od  ext2,  ext3,  xfs
fat, poprzez stosowane w systemie Win-
dows
 ntfs i vfat, a skończywszy na party-
cjach LVM czy hpfs.

Gpart  jest  wyposażony  również 

w  szereg  dodatkowych  użytecznych 
opcji,  służących  przykładowo  do  spo-
rządzania kopii zapasowych sektora roz-
ruchowego,  a  także  do  odzyskiwania 
danych  z  formatowanych  partycji  (tylko 
w niektórych okolicznościach)

Praca z programem unrm

Radziliśmy,  jak  uporać  sobie  z  uszko-
dzonymi  fizycznie  nośnikami  danych, 
z zamazanymi systemami plików, a teraz 
przyszła kolej na odzyskiwanie skasowa-
nych plików. 

Pomocną  aplikacją  w  takich  sytu-

acjach  jest  unrm,  przypominający  nieco 
swoim działaniem program undelete, pra-
cujący w systemie DOS.

Jest to skrypt powłoki BASH, który na 

podstawie analizy i-węzłów potrafi przy-
wrócić skasowane pliki.

Jego działanie jest proste – wystarczy 

w wierszu poleceń wpisać z uprawnienia-
mi administratora systemu komendę 

unrm 

/dev/hda

, aby na ekranie pojawiła się lista 

plików możliwych do odzyskania.

Aplikacją posiada wiele dodatkowych 

parametrów ułatwiających wyszukiwanie 
utraconych  zbiorów.  Możliwe  jest  odzy-
skiwanie danych należących do jakiegoś 
użytkownika  (opcja  -u),  a  także  plików 
zawierających określony tekst (opcja -s). 

Podstawowym  problemem,  który 

pojawia  się  w  przypadku  skuteczne-
go  odzyskania  pliku,  jest  jego  zapis. 
Program  unrm  nie  przywraca  plików 

w  miejsce,  z  którego  zostały  usunięte 
(nie mylmy go zatem z katalogiem Śmiet-
nik
 w niektórych popularnych menedże-
rach  okien),  lecz  tworzy  plik  o  nazwie 

unrm.recovered/unrm.inode#

,  w  którym 

przy  odrobinie  szczęścia  znajdziemy 
nasze skasowane dane.

Profilaktyka

Większości problemów opisanych w arty-
kule  można  uniknąć.  Dobrym  nawy-
kiem  jest  sporządzenie  kopii  zapasowej 
MBR (512 bajtów – mieści się na każdej 
dyskietce).  Wystarczy  w  linii  poleceń 
z uprawnieniami administratora systemu 
wydać komendę:

# dd if=/dev/hda of=mbr bs=512 count=1

W efekcie otrzymamy plik o nazwie mbr 
zawierający kopię naszego sektora rozru-
chowego.

Powinniśmy  także  przyzwyczaić  się 

do  systematycznego  okresowego  sporzą-
dzania  kopii  zapasowej  najważniejszych 
plików  systemowych  (

tar  -cjvf  archi-

wum.tar.bz2  /etc

)  i  katalogu  użytkowni-

ków systemu (

tar -cjvf archiwum.tar.bz2 

/home

).

Wskazane jest również używanie sys-

temu plików z księgowaniem (zastąpmy 
tradycyjny  ext2  nowocześniejszym  roz-
wiązaniem  –  ext3),  aby  w  przypadku 
nagłego spadku napięcia nie trzeba było 
odzyskiwać bajta po bajcie.

Podsumowanie

Utrata  danych  jest  sytuacją,  która  może 
przytrafić  się  każdemu.  Istnieje  szereg 
narzędzi,  za  pomocą  których  możliwe 
jest  odzyskanie  skasowanych  zbiorów. 
Należy również pamiętać, że i te narzę-
dzia  mogą  zawieść  i  wtedy  niezbędna 
stanie  się  kosztowna  wizyta  w  specjali-
stycznym laboratorium.

Najlepszym rozwiązaniem wydaje się 

zachowanie szczególnej ostrożności pod-
czas kasowania plików i pracami związa-
nymi ze zmianami w tablicy partycji. 

W Internecie:

●   Strona domowa DD_rescue:

http://freshmeat.net/projects/
dd_rescue/

●   Strona projektu programu Gpart:
   http://www.stud.uni-hannover.de/

user/76201/gpart/

Listing 1: 

Wynik działania

 

programu Gpart:

Primary partition(1)
   type: 131(0x83)(Linux ext2 filesystem)
   size: 101mb 

#s(208776) s(63-208838)

   chs:  (0/1/1)-(207/2/57)d (0/1/1)-(207/2/57)r

Primary partition(2)
   type: 130(0x82)(Linux swap or Solaris/x86)
   size: 1019mb 

#s(2088448) s(208845-2297292)

   chs:  (207/3/1)-(1023/15/63)d (207/3/1)-(2279/0/61)r