Você está na página 1de 93

UNIVERSIDADE TIRADENTES

CENTRO DE CINCIAS FORMAIS E TECNOLGICAS



CURSO DE TECNOLOGIA EM PROCESSAMENTO DE DADOS








UMA ABORDAGEM SOBRE RECUPERAO DE
DADOS EM DISCO RGIDO



EDMILSON PORTO SANTOS

ORIENTADOR
MARCO ANTONIO COSTA SIMES






Aracaju
Dezembro de 2002

UNIVERSIDADE TIRADENTES

CENTRO DE CINCIAS FORMAIS E TECNOLGICAS

CURSO DE TECNOLOGIA EM PROCESSAMENTO DE DADOS








UMA ABORDAGEM SOBRE RECUPERAO DE
DADOS EM DISCO RGIDO


Monografia apresentada ao Centro
de Cincias Formais e Tecnolgicas
como um dos pr-requisitos para
obteno do grau de Tecnlogo em
Processamento de Dados.


EDMILSON PORTO SANTOS

ORIENTADOR
MARCO ANTONIO COSTA SIMES



Aracaju
Dezembro de 2002
ii
UMA ABORDAGEM SOBRE RECUPERAO DE DADOS EM
DISCO RGIDO
EDMILSON PORTO SANTOS





DATA _____/______/_____




BANCA



(1 Examinador)__________________________________
Marco Antonio Costa Simes


(2 Examinador)__________________________________
Othon Marcelo Nunes Batista


(3 Examinador)__________________________________
Eduardo Oliveira Freire

iii




































Dedico este trabalho aos meus
pais que tanto esperaram por
este momento, a minha famlia
que muito me apoiou na
realizao deste sonho, aos
professores e amigos que direta
ou indiretamente tambm
participaram desta jornada.

iv
AGRADECIMENTOS



A realizao deste trabalho s foi possvel graas:


A minha famlia, pela pacincia, pelos momentos ausentes e pela compreenso sem
os quais tornariam este sonho muito difcil de realizar.


Aos Professores, que se dedicaram em transmitir seus conhecimentos, disseminando
assim o conhecer e o saber, em especial ao meu orientador, prof Marco Simes.


Aos meus amigos, pelo incentivo e pela compreenso nos momentos ausentes.


A todos os colegas acadmicos, que percorreram junto este longo caminho,
especialmente aos colegas Clalson e Alrcio.


A UNIT e a seus funcionrios, que direta ou indiretamente geraram as condies
necessrias realizao deste trabalho.
v
SUMRIO



LISTAS DE FIGURAS.....................................................................................vii
LISTA DE TABELAS.......................................................................................ix
RESUMO...........................................................................................................x
INTRODUO................................................................................................01
1 DISCOS RGIDOS........................................................................................03
1.1 Especificaes.......................................................................................................... 04
1.2 Capacidade de Armazenamento dos Discos .............................................................. 06
1.3 Registro de Inicializao (MBR Master Boot Record) ........................................... 08
1.4 Sistemas de Arquivos ............................................................................................... 09
1.4.1 Conceito de Arquivo........................................................................................ 09
1.4.2 Nomes de Arquivo........................................................................................... 10
1.4.3 Tipos de Arquivo............................................................................................. 10
1.4.4 Atributos.......................................................................................................... 11
1.4.5 Operaes com Arquivos................................................................................. 11
1.4.6 Diretrios ........................................................................................................ 12
1.4.7 Mtodos de Alocao....................................................................................... 14
1.5 Parties................................................................................................................... 15
1.5.1 Estrutura lgica do registro de uma partio DOS............................................ 17
1.6 Formatao Fsica .................................................................................................... 19
1.7 Formatao Lgica ................................................................................................... 19
1.7.1 Setor de BOOT................................................................................................ 20
1.7.2 Tabela de Alocao de Arquivos (TAA) .......................................................... 21
1.7.3 Estrutura de Diretrio no MS_DOS ................................................................. 23
1.7.4 rea de Dados ................................................................................................. 24
vi
1.8 Acesso Direto a Disco .............................................................................................. 26
1.8.1 INT 13h (Interrupo da BIOS) ....................................................................... 26
1.8.2 INT 13h Estendida........................................................................................... 26
2 AVALIAO DOS SOFTWARES...............................................................29
2.1 Ambiente Inicial Para os Experimentos .................................................................... 31
2.2 Laboratrio I - Eliminao Indevida de Arquivos ..................................................... 33
2.2.1 Avaliao do Laboratrio I Recuperao de Arquivos Apagados .................. 33
2.2.2 Anlise da tcnica utilizada.............................................................................. 35
2.2.3 Outras situaes de arquivos eliminados .......................................................... 35
2.3 Laboratrio II - MBR Danificada ............................................................................. 37
2.3.1 Avaliao do Laboratrio II ............................................................................. 38
2.4 Laboratrio III Recuperao da Partio Depois de Formatada .............................. 39
2.4.1 Avaliao do Laboratrio III............................................................................ 40
2.5 Laboratrio IV - Recuperao de disco com danos diversos ..................................... 41
2.5.1 Avaliao do Laboratrio IV............................................................................ 42
3 PROTTIPO.................................................................................................44
3.1 Ambiente de desenvolvimento.................................................................................. 44
3.2 Prottipo I Disp_Set.Asm...................................................................................... 45
3.3 Prottipo II Disp_Part.Asm................................................................................... 45
3.4 Prottipo III Disp_Bot.Asm................................................................................... 46
3.5 Prottipo IV Salva/Recupera MBR........................................................................ 46
3.6 Dificuldades Encontradas ......................................................................................... 48
CONCLUSO..................................................................................................50
ANEXOS OU APNDICES.............................................................................53
GLOSSRIO....................................................................................................79
REFERNCIAS BIBLIOGRFICAS ..............................................................81

vii
LISTA DE FIGURAS



Figura 01 - Aparncia interna de um disco rgido ................................................................... 3
Figura 02 - Estrutura interna de um disco rgido..................................................................... 4
Figura 03 - Visualizao das trilhas e setores ......................................................................... 5
Figura 04 - Visualizao da formao dos cilindros................................................................ 5
Figura 05 - Estrutura lgica do MBR ..................................................................................... 8
Figura 06 Parte do registro de inicializao ...................................................................... 16
Figura 07 Cdigo em assembly Faz a leitura do primeiro setor do disco ........................ 17
Figura 08 Estrutura lgica do registro de uma partio ..................................................... 17
Figura 09 Decodificao da word que contm os endereos dos setores/cilindros ............. 18
Figura 10 Sistema de Arquivos FAT ................................................................................ 20
Figura 11 Estrutura do Setor de BOOT FAT16 .............................................................. 21
Figura 12 Estrutura de Entradas no Diretrio .................................................................... 23
Figura 13 MBR do disco de teste ...................................................................................... 32
Figura 14 Fragmento da TAA do disco de teste ................................................................ 32
Figura 15 Fragmento da rea de Diretrio ........................................................................ 32
Figura 16 Fragmento da TAA com a criao do primeiro arquivo .................................... 33
Figura 17 Fragmento do Diretrio aps a criao do primeiro arquivo .............................. 33
Figura 18 Lista de arquivos a serem recuperados pelo EasyRecovery ............................... 34
Figura 19 Recuperao de arquivos eliminados/fragmentados .......................................... 36
Figura 20 Falha na recuperao pelo EasyRecovery .......................................................... 42

viii
Figura 21 Mensagem de erro - Acesso direto ao hardware pelo Windows 9x. .................... 48

ix
LISTA DE TABELAS



Tabela 01 - Evoluo da capacidade dos discos rgidos .......................................................... 7
Tabela 02 - Tipos de partio .............................................................................................. 18
Tabela 03 Situao do Cluster na FAT ............................................................................. 22
Tabela 04 Limites de endereamento do sistema de arquivos FAT .................................... 23
Tabela 05 Tamanho do Cluster no sistema de arquivos FAT16 ........................................ 25
x
RESUMO



Este trabalho tem como pretenso despertar nos leitores a vontade de conhecer com maior
profundidade como so realmente armazenados os dados nos meios magnticos, ou memrias
secundrias, e recuper-los quando ocorrer uma catstrofe nos discos rgidos, objeto de nosso
estudo. Partindo de uma reviso a respeito destes dispositivos de armazenamento, englobando
sua estrutura fsica; formatao (fsica e lgica) e organizao dos dados. Sero apresentados
os resultados de alguns testes sobre recuperao de dados, aps a ocorrncia de catstrofes
utilizando ferramentas de recuperao j conhecidas no mercado; e para finalizar foram
elaborados alguns prottipos para demonstrar algumas das tcnicas estudadas.





INTRODUO



A divulgao dos conhecimentos da estrutura fsica e lgica dos discos rgidos
veio a contribuir de forma substancial na recuperao de dados em discos, pois de posse
destas informaes torna-se possvel o entendimento e a recuperao dos dados que, de
alguma forma, foram perdidos aps um desastre ocorrido neste meio de armazenamento.


Um dos principais fatores motivadores para a realizao deste trabalho foi a
experincia vivida com o este tipo de problema pelo autor. Quantas vezes no j ouvimos a
seguinte frase: meu disco pifou, e nesse momento que lembramos de no ter feito nossas
cpias de segurana e vemos que est aparentemente tudo perdido. Este trabalho apresenta
algumas idias que modificam este quadro, detalhando algumas possveis solues para
desastres desta natureza.


Tambm objetivo deste trabalho divulgar algumas tcnicas de recuperao de
dados em disco rgido, bem como a forma com que estes dados esto armazenados e que
cuidados se devem adotar para minimizar perdas, caso uma catstrofe venha a ocorrer.


A metodologia a ser utilizada tomar por base um estudo sobre a estrutura fsica e
lgica dos discos rgidos, e observaes sobre o funcionamento de softwares de recuperao
2

de dados. Para as experincias sero usados dois softwares j bastante difundidos no mercado
e com base em observaes, tentar descobrir quais tcnicas foram utilizadas em cada etapa de
testes.


Desastres em discos rgidos podem surgir de diversas formas, desde a ocorrncia
de um pequeno pico de energia, provocando alteraes nos dados a serem gravados, at um
dano fsico causado por um choque mecnico, que possa assim arranhar as faces dos discos.
Os mais danosos so os que afetam o disco fisicamente, impossibilitando permanentemente a
leitura dos dados neles gravados.


Finalizamos o trabalho apresentando um prottipo de recuperao de dados, de
forma que possa exemplificar os conhecimentos aqui adquiridos.
3

1. DISCOS RGIDOS



Uma das formas mais comuns de armazenar dados atravs de dispositivos
chamados discos rgidos, HD (hard disk), ou winchester, encontrados maciamente nos
microcomputadores domsticos ou de uso profissional. No mercado poderemos encontrar uma
variedade muito grande destes equipamentos, principalmente na sua capacidade de
armazenamento. Esta capacidade pode variar desde poucos megas (j obsoletos) at 80 Gb,
sendo os mais comuns em torno de 10 a 40 Gb. A figura 01 nos d uma idia sobre a
aparncia interna de um disco rgido.




Figura 01 Aparncia interna de um disco rgido
4

1.1 - Especificaes


Um disco rgido formado por discos empilhados numa haste ou eixo,
confeccionados geralmente por um material metlico, ao qual aplica-se uma camada de um
composto magnetizvel. Esta forma de empilhar os discos foi que deu surgimento ao nome
winchester, utilizado pela IBM em fins dos anos 50. Na poca, foi criado o primeiro
winchester o qual possua 50 discos de 24 polegadas cada (MORIMOTO, 2001).


Existe uma grande variao na estrutura fsica de um disco rgido, quer seja na
quantidade de discos empilhados, quer seja na quantidade de cabeas de leitura/gravao,
estas so influenciadas diretamente pela quantidade da primeira (Figura 02).




Figura 02 Estrutura interna de um disco rgido.
5

Na superfcie de cada disco so gravadas informaes que comporo as trilhas e
setores do disco (Figura 03). As trilhas so formadas por crculos concntricos sendo a mais
externa identificada como trilha zero e sua quantidade pode variar de disco para disco (Figura
03). Por sua vez estas trilhas so divididas em setores, que a menor parte enderevel do
disco, sendo seu tamanho padro de 512 bytes. A sobreposio das trilhas formam uma outra
unidade que so denominados de cilindros (Figura 04).



Figura 03 Visualizao das trilhas e setores



Figura 04 Visualizao da formao dos cilindros
6

Como pode ser observado na figura 04, na verdade, um disco rgido formado por
vrios discos sobrepostos, com certo espaamento entre eles, fixados pelo centro a um eixo
vertical que rodam em alta velocidade e o acesso a sua superfcie feito atravs de cabeas
magnticas de leitura/gravao que se movimentam para dentro e para fora na superfcie dos
discos. Um motor gira estes discos em velocidade constante, chegando at a 10.000 rpm
(rotaes por minuto). Atualmente podem ser encontrados discos com rotao prxima a
5.400 rpm, j estando tambm disponvel discos com velocidades em torno de 7.200 rpm. Um
fato tambm a observar que quanto maior a velocidade de rotao, maior a velocidade na
transferncia de dados. Em relao s cabeas de leitura/gravao, estas so fixadas em uma
haste que, atravs de outro motor, so movimentadas sobre a superfcie dos discos,
posicionando as cabeas nas trilhas a serem lidas (MEFANO, 2000).


1.2 Capacidade de Armazenamento dos Discos


Para se determinar a capacidade de armazenamento de um disco rgido, devemos
ter em mos, basicamente quatro informaes: a quantidade de Cilindros, Cabeas, Setores
(CHS) e o tamanho do setor em bytes. Aplicando a frmula (C * H * S * 512), obtm-se a
capacidade de armazenamento de um disco rgido, exemplo:

Cilindros = 1024
Cabeas = 16
Setores = 63 (os setores so numerados a partir de 01)
Capacidade = 1024 * 16* 63 * 512 = 528.482.304 (504 Mb)
7

Aqui fica estabelecida a primeira barreira enfrentada pelo Sistema Operacional
DOS no que diz respeito limitao de endereamento do disco, j que a INT 13, uma
interrupo da BIOS, usa esse formato (CHS) para acesso aos dispositivos de armazenamento.
O DOS utiliza esta rotina da BIOS para acesso aos discos.


Uma das primeiras alternativas para solucionar o problema da limitao de
endereamento dos discos foi em aumentar a quantidade mxima de cabeas do disco de 16
para 256. Dessa forma pode ser endereado at (1024 * 256 * 63 * 512 = 8.455.716.864) ou
seja, aproximadamente 8 Gb. Uma outra forma de endereamento de um disco rgido a
utilizao do formato LBA (Logical Block Address), que permite extrapolar o endereamento
acima dos 8 GB, quebrando mais uma barreira no que diz respeito forma de endereamento
da interrupo 13 da BIOS.


Ao longo dos anos estes dispositivos vem sendo cada vez mais aperfeioados,
aumentando assim a sua confiabilidade como tambm a sua capacidade de armazenamento.
Na tabela 01 temos uma breve viso sobre a evoluo destes dispositivos, mostrando uma
pequena correlao entre a evoluo dos micros computadores e seus discos rgidos.


Ano 1981 1983 1986 1988 1991 1994 1997 1999 2000 2002
Micro XT AT 286 386 486 Pentium MMX P II PIII P IV
Capacidade
(MB)
5 20 60 120 200 540 2.1 G 5 G 10-20G 80 G

Tabela 01 Evoluo da capacidade dos discos rgidos
8

1.3 Registro de Inicializao (MBR Master Boot Record)


O primeiro setor de qualquer disco rgido (Cilindro 0, cabea 0, setor 1), contm o
Master Boot Record (MBR), tambm conhecido como registro de inicializao (HOLZNER,
1990). No momento em que ligamos um computador o MBR a primeira rea do disco rgido
a ser acessada aps o POST (Power On Self Test). A figura 05 demonstra como est
distribuda a estrutura deste setor.


Quando um computador ligado, d-se incio a uma srie de testes visando
verificar o funcionamento dos diversos dispositivos nele instalados. Esta seqncia de testes
chamada de POST (Power On Self Test). O POST um programa de diagnstico que certifica
se todos os componentes do seu computador esto funcionando corretamente. Neste momento
verificado o funcionamento dos acionadores de disco, memria, teclado, mouse, etc. Se tudo
estiver bem, dar-se- ao incio carga do sistema operacional da mquina (KOZIEROK,
2001).



Figura 05 Estrutura lgica do MBR.
9

1.4 Sistemas de Arquivos


A maioria dos aplicativos de computador necessita armazenar e recuperar
informaes, e boa parte dessas informaes necessitam ser guardadas por um bom perodo
de tempo. Essas informaes podem ser armazenadas em mdias internas ou externas e
organizadas em unidades chamados arquivos. O gerenciamento desses arquivos realizado
por uma parte do sistema operacional, normalmente conhecido como sistema de arquivos, o
qual dever prover mecanismos de acesso s informaes tais como: criao, alterao,
proteo, entre outros (TANENBAUM, 2000).


Segundo (SILBERCHATZ, 2000), um sistema de arquivos o aspecto mais
visvel do sistema operacional que um usurio possa ter. Fornecendo mecanismos de
armazenamento de dados e programas, de forma que se possa recuper-los mais tarde. Um
sistema de arquivos dividido basicamente em duas partes: os arquivos que armazenam
informaes correlatas e os diretrios que organizam e guardam informaes sobre todos os
arquivos no sistema.


1.4.1 - Conceito de Arquivo


Os dados ou informaes so armazenados fisicamente em dispositivos
magnticos ou ticos num formato totalmente desconhecido para a maioria dos usurios.
10

Ento, para que um sistema de computao seja conveniente de usar, o sistema operacional
fornece uma viso lgica e uniforme de como esses dados esto armazenados. Para tanto, o
sistema operacional abstrai das propriedades fsicas destes dispositivos definindo uma
unidade lgica de armazenamento chamada de arquivo.


1.4.2 - Nomes de arquivo


Uma das caractersticas mais importantes de um arquivo o seu nome. Atravs
dele que o usurio pode interagir com o sistema operacional e recuperar os dados nele
armazenados. As regras para criao dos nomes de arquivos so definidas pelo sistema
operacional em uso, que vo desde o tamanho dos nomes at os tipos dos caracteres
utilizados. O sistema de arquivos baseado no DOS permite nomes de 1 at 8 caracteres
aceitando uma extenso de mais 3 caracteres, geralmente utilizado para identificar o tipo de
arquivo, totalizando 11 caracteres na formao do nome. Porm a maioria dos sistemas
operacionais aceita nomes de arquivos com at 255 caracteres (TANENBAUM, 2000).


1.4.3 - Tipos de arquivo


Muitos sistemas operacionais suportam vrios tipos de arquivos, dentre eles, o
UNIX e o MS-DOS possuem arquivos bastante semelhantes. Tanto um quanto o outro possui
arquivos comuns e arquivos com estrutura de diretrios. Normalmente os arquivos comuns
11

so aqueles que contm informaes de usurios. Os arquivos podem conter dados no formato
ASCII ou binrios, sendo que os de formato ASCII podem ser visualizados atravs de um
editor de texto e os binrios geralmente so utilizados para o armazenamento de programas e
seu contedo torna-se ilegvel para os usurios comuns (TANENBAUM, 1997).


1.4.4 Atributos


Os atributos de um arquivo variam de sistema para sistema, a depender de sua
complexidade. Estes atributos adicionais servem para melhor identific-los, dentre eles podem
ser citados a data e hora de sua criao, tipo e tamanho, permisses de acesso, criador, etc.


1.4.5 - Operaes com Arquivos


A depender do sistema operacional em uso podem ser realizadas diversas
operaes com os arquivos visando o armazenamento e a recuperao das informaes. A
seguir comentaremos as mais comuns:

CRIAR O arquivo criado sem dados, ficando no aguardo dos dados
para armazen-los.

12

ELIMINAR Quando o arquivo no mais necessrio deveremos
elimin-lo visando a liberao de espao para outros propsitos.

ABRIR Todo processo para usar um arquivo executa uma operao de
abertura do arquivo que consiste na transferncia das caractersticas do
mesmo para uma determinada rea de memria.

FECHAR Quando um processo terminar de usar um arquivo ele dever
fech-lo a fim de liberar a rea de memria ora ocupada.

LER Operao que permite exibir/manipular os dados de um arquivo.

GRAVAR Permite que novos dados sejam includos no arquivo, bem
como alterar os j existentes.

RENOMEAR Permite alterar um nome de arquivo fornecido poca de
sua criao.


1.4.6 Diretrios


Para melhor gerenciamento dos arquivos num disco, o sistema de arquivos faz uso
de uma estrutura chamada de diretrio. Um diretrio nada mais que um arquivo com
13

caractersticas especiais, onde so armazenadas as informaes sobre os arquivos nele
contidos.


Um diretrio possui vrias entradas nas quais so armazenados dados referentes
aos arquivos, como seus nomes e atributos. Cada arquivo utiliza uma entrada no diretrio.
Quando um arquivo aberto o sistema operacional l suas caractersticas do disco
transferindo-as para uma rea da memria principal. A quantidade de diretrios e tipos de
diretrios variam de sistema para sistema (TANENBAUM, 2000).


A estrutura de diretrio mais comum estrutura em rvore de vrios nveis ou de
altura arbitrria. Este tipo permite que os usurios criem seus prprios diretrios. Dentro de
um diretrio podem existir arquivos comuns e outros diretrios chamados de subdiretrios.
Um subdiretrio caracterizado pela existncia de dois arquivos especiais chamados de . e
.. (ponto e ponto-ponto). O ponto refere-se ao diretrio atual, enquanto que o ponto-ponto
refere-se ao diretrio pai.


Um arquivo para ser referenciado no sistema de arquivos pode usar de duas formas
para sua localizao: uma atravs de seu caminho absoluto, outra atravs de seu caminho
relativo. A primeira forma de referenciar fornecendo o caminho desde o diretrio raiz at o
arquivo, e a segunda referenciando a partir do diretrio corrente. Os nomes dos diretrios
que compem o caminho de um arquivo so separados por um caractere especial que pode
variar a depender do sistema operacional em uso. Para o UNIX o caractere o / e no MS-
14

DOS usado o caractere \. Em ambos os casos, para se referenciar um caminho absoluto,
devemos colocar o caractere especial no incio do nome do caminho (Tanenbaum, 2000).


1.4.7 - Mtodos de Alocao


Alocao Contgua Este o mtodo mais simples de ser implementado, pois
necessitamos conhecer apenas o bloco inicial onde o arquivo foi alocado. Uma outra
vantagem a rapidez na recuperao da informao j que o mesmo poder ser lido numa
nica operao (TANENBAUM, 2000). As desvantagens neste processo so a necessidade de
se conhecer o tamanho do arquivo com antecedncia e a fragmentao demasiada, face
necessidade de se obter blocos contguos que comportem os arquivos.


Alocao por Lista Encadeada Este processo consiste em manter uma lista
encadeada de blocos, onde cada um aponta para o seguinte, desta forma poderemos enderear
todos os blocos do disco. A desvantagem para este tipo de endereamento que uma parte do
bloco usada como apontador reduzindo a quantidade de dados no bloco. Uma outra forma
de utilizao da Lista Encadeada retirando do bloco a informao do ponteiro e criando uma
tabela separada para armazenamento destes ponteiros. Desta forma todo o bloco fica livre
para armazenamento de dados, e da mesma forma que o mtodo anterior suficiente apenas
que a entrada no diretrio aponte para o bloco inicial na tabela. Este mtodo utilizado pelo
MS-DOS para alocao do disco (TANENBAUM, 2000).

15

1.5 Parties


Num disco rgido podem ser alocados vrios sistemas operacionais diferentes e
para que isto seja possvel basta dividi-lo em parties. No ambiente DOS este trabalho
realizado atravs do programa FDISK. Podemos criar at quatro parties primrias, cuja
capacidade ou tamanho, o usurio poder escolher no momento de sua criao. Desta forma
sistemas operacionais diferentes podero co-existir no mesmo disco (TANEMBAUM, 1992).
Este procedimento sempre dever ser realizado nos discos recm adquiridos. Neste momento,
tambm dever ser escolhido qual sistema de arquivos ser utilizado, podendo ser FAT16
(File Alocation Table), FAT32, NTFS (Windows NT File System) ou outro qualquer.


Durante a criao da primeira partio num disco rgido, tambm sero
criadas/gravadas automaticamente, algumas informaes no incio deste disco, conforme j
definidas na seo 1.3 sendo este, o registro de inicializao.


Neste setor iremos encontrar informaes bastante interessantes, tais como: a
quantidade de parties existentes e qual a partio ativa. A figura 06 ilustra uma parte deste
setor onde podemos observar as informaes sobre as parties. Estas informaes ficam
localizadas nos 128 bytes finais do setor 1 ocupando 16 bytes cada, e os ltimos dois bytes
so a assinatura do setor, 55AAh (HOLZNER, 1990, p227).

16

Na figura 06, podemos notar o cdigo 80h no incio da partio 1, este nmero
indica que esta a partio ativa deste disco. Estas informaes foram colhidas diretamente
do disco utilizando uma rotina em assembly, a qual foi executada diretamente do prompt do
DEBUG do DOS. Esta rotina baseia-se na funo 02h da interrupo 13h da BIOS, a qual
responsvel pela leitura de setores em disco. A rotina funciona da seguinte maneira: no
registrador AH atribumos o valor 02h, que a funo de leitura de disco; em DL atribumos
o valor 80h, este nmero instrui a BIOS a usar o disco 1 (disco fsico); em DH atribumos o
valor 00h o qual indica qual face do disco ou cabea de leitura ser usada; em CH atribumos
o valor 00h, indicando qual cilindro ser lido; em CL atribumos o valor 01h, indicando qual
setor ser lido; em AL atribumos o valor 01h, indicando que ser lido um setor, (512 bytes);
no registrador BX atribumos o valor 200h, sendo este o endereo inicial onde sero
colocados os primeiros 512 bytes lidos do disco 1; a INT 13h a interrupo da BIOS
responsvel pelo acesso a disco, neste caso usamos a funo 02h desta interrupo para
executar a leitura do disco; e finalmente a INT 20h que responsvel pelo encerramento da
rotina e retorno ao sistema operacional (Figura 07).


Tambm pode ser notado, neste exemplo (Figura 06), que das quatro parties
possveis foram criadas apenas as de nmeros 1 e 2, sendo que as de nmeros 3 e 4 no foram
criadas, motivo da presena de zeros em todos os 16 bytes destas parties.

1D6C:0380 6E 61 6C 20 61 75 73 65-6E 74 65 00 00 00 00 00 nal ausente.....
1D6C:0390 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1D6C:03A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1D6C:03B0 00 00 00 00 00 2C 49 70-8A D5 8A D5 00 00 80 01 .....,Ip........
1D6C:03C0 01 00 0B FE BF 7D 3F 00-00 00 BF 64 9C 00 00 00 .....}?....d....
1D6C:03D0 81 7E 0F FE FF FF FE 64-9C 00 C7 27 0D 04 00 00 .~.....d...'....
1D6C:03E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1D6C:03F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA ..............U.
Legenda: Partio 1 - Partio 2 - Partio 3 - Partio 4
Figura 06 Parte do registro de inicializao.
17

MOV AH,02 ; Funo da INT 13 para leitura de setores
MOV DL,80 ; Disco rgido, acionador 1
MOV DH,00 ; Face 0
MOV CH,00 ; Cilindro 0
MOV CL,01 ; Setor 1
MOV AL,01 ; Um setor a ser lido (512 bytes)
MOV BX,0200 ; Local de armazenamento dos dados
INT 13
INT 20

Figura 07 Cdigo em assembly Faz a leitura do primeiro setor do disco


1.5.1 Estrutura lgica do registro de uma partio DOS


A figura 08 apresenta a estrutura lgica de uma partio DOS utilizando o sistema
de arquivos FAT16. Atravs deste registro possvel saber onde foram alocadas as parties,
os seus tamanhos e qual a partio que est ativa, ou seja, a partio que contm o sistema
operacional ativo.

Offset Descrio Tamanho
00h Estado da Partio (00h = Inativa, 80h = Ativa) 1 Byte
01h Incio da Partio Cabea ou Face 1 Byte
02h Incio da Partio Cilindro/Setor 1 Word
04h Tipo da Partio (Tabela 02) 1 Byte
05h Fim da Partio Cabea ou Face 1 Byte
06h Fim da Partio Cilindro/Setor 1 Word
08h
Nmero de Setores entre o MBR e o primeiro Setor
na Partio
1 Double Word
0Ch Nmero de Setores na Partio 1 Double Word

Figura 08 Estrutura lgica do registro de uma partio
18

As informaes de incio e fim de cada partio esto armazenadas em trs bytes
localizados nos offset 01h e 05h, respectivamente. No entanto devemos tomar cuidado com a
identificao dos cilindros e setores, uma vez que para a identificao dos setores so
utilizados os 6 bits de baixa ordem, sendo que os dois bits de mais alta ordem do byte do setor
iro se juntar aos 8 bits do cilindro para compor os 10 bits necessrios identificao dos
cilindros. Ento para sabermos exatamente os valores dos cilindros e dos setores iniciais e
finais, necessrio decodificarmos a word que contm os dois bytes relativos aos cilindros e
aos setores (Figura 09). Como exemplo da decodificao usaremos os dados da figura 06.


Figura 09 Decodificao da word que contm os endereos dos setores/cilindros

Valor Descrio
00h Desconhecido
01h 12-bit FAT
04h 16-bit FAT (Partio menor que 32MB)
05h Partio estendida - MS-DOS
06h 16-bit FAT (Partio maior que 32MB)
0Bh 32-bit FAT (Partio acima de 2048GB)
0Ch Semelhante a 0Bh, mas usando LBA 13h extenso.
0Eh Semelhante a 06h, mas usando LBA 13h extenso.
0Fh Semelhante a 05h, mas usando LBA 13h extenso.

Tabela 02 Tipos de partio
19

1.6 Formatao Fsica


A formatao fsica de um disco ou formatao de baixo nvel consiste na criao
das trilhas, setores e cilindros. Essa formatao realizada quando da construo do disco
pelo fabricante. Durante esse processo pode-se detectar setores defeituosos os quais so
mapeados (em uma tabela parte) evitando seu uso posterior. Nos discos mais antigos a
formatao fsica tambm podia ser realizada pelo usurio, haja vista a suscetibilidade de
ocorrncias de desalinhamento das cabeas em relao s trilhas. Mas com a evoluo da
tecnologia aplicada na construo dos discos rgidos, no h mais necessidade de se realizar
uma formatao fsica aps a distribuio do disco.


Existem alguns programas que so usados como formatadores fsicos de HD.
Atualmente os programas de formatao fsica NO FORMATAM fisicamente o disco. Essa
formatao se reserva apenas em reinicializar as informaes do sistema de arquivos
utilizado, e realizar uma atualizao do mapa de setores defeituosos, fazendo com que a
formatao lgica evite o uso destes setores ruins (TORRES, 2000).


1.7 Formatao Lgica


A formatao lgica tem a funo de colocar ordem na casa, isto , de organizar a
partio de um disco de forma que possa ser usada pelo sistema operacional. Esta tarefa
20

normalmente realizado pelo programa FORMAT no sistema operacional DOS, podendo neste
momento tambm ser instalado o sistema operacional a ser utilizado nesta partio. Durante a
formatao sero criados o setor de boot, a tabela de alocao dos arquivos, rea para lista de
diretrios e rea reservada guarda efetiva dos dados ou arquivos (HOLZNER, 1990, p. 259).
A figura 10 nos d uma viso do sistema de arquivos e as sees seguintes definem a estrutura
de cada um destes elementos.



Figura 10 Sistema de Arquivos FAT


1.7.1 Setor de BOOT


No setor de boot gravado um pequeno programa cuja funo carregar o sistema
operacional, caso seja uma partio de boot. Este programa estar l, mesmo que no haja
sistema operacional instalado, e se assim o for emitir uma mensagem avisando da falta dos
arquivos de sistema. A figura 11 apresenta a estrutura lgica do setor de boot.


21

Estrutura do Setor de Boot FAT 16
Tipo Offset Tamanho Descrio
Cdigo 0000h 3 bytes Cdigo de desvio para o Bootstrap.
Nome SO 0003h 8 bytes Nome do Sistema Operacional
000Bh 2 bytes Bytes por Setor
000Dh 1 bytes Setores por Cluster (Setores com 512 bytes).
000Eh 2 bytes Quantidade de setores reservados.
0010h 1 bytes Nmero de cpias da FAT.
0011h 2 bytes Nmero de entradas no diretrio raiz.
0013h 2 bytes Nmero de setores Volumes menores que 32 Mb.
0015h 1 bytes Descritor de Mdia
0016h 2 bytes Setores por FAT
0018h 2 bytes Setores por Trilha
001Ah 2 bytes Quantidade de Cabeas ou Faces.
001Ch 4 bytes Setores invisveis
BIOS Para-
meter Block (BPB)
0020h 4 bytes Nmero de setores Volumes maiores que 32 Mb.
0024h 1 bytes Nmero do Drive.
0025h 1 bytes Reservado.
0026h 1 bytes Assinatura Estendida do BOOT
0027h 4 bytes Nmero Serial do Volume
002Bh 11 bytes Nome do Volume
Ext. BIOS Para-
meter Block (BPB)
0036h 8 bytes Tipo do Sistema de Arquivos (String)
Cdigo 003Eh 448 bytes Cdigo do Bootstrap.
Assinatura 01FEh 2 Assinatura do Setor de Boot - Valor 55AAh.

Figura 11 Estrutura do Setor de BOOT FAT16


1.7.2 Tabela de Alocao de Arquivos (TAA)


A Tabela de Alocao de Arquivos gerenciada pelo sistema operacional MS-DOS
adota a estrutura do sistema de arquivos FAT (File Alocation Table). Ela responsvel pela
guarda dos endereos ou ndices dos arquivos armazenados no disco rgido. Por questo de
segurana existe uma segunda TAA que contm uma cpia da principal podendo ser usada no
caso de perda das informaes da TAA principal. Existem vrios tipos de sistema de arquivos
FAT (FAT12, FAT16 e FAT32) e o tipo a ser usado depender do tamanho da partio. A
tabela 03 mostra a relao existente entre o tamanho da partio e o tipo de sistema FAT
usado. Atualmente o sistema FAT mais utilizado o sistema FAT32, o qual no s traz uma
22

grande economia de espao em disco, como tambm permite manipular discos com
capacidade acima dos 2Gb. Cada entrada na TAA aponta para uma unidade de endereamento
no disco chamada de CLUSTER. Um CLUSTER formado por um agrupamento de setores
contguos e tem como finalidade possibilitar o endereamento de toda a rea do disco, a
quantidade de setores vai variar de acordo com o tamanho da partio e do sistema FAT
utilizado (HOLZNER, 1990, p. 263).


Segundo a revista Informtica Exame (RAMALHO, 1992), A TAA tem como
principal incumbncia verificar se um determinado setor ou cluster (unidade de alocao) est
livre para receber dados ou est ocupado com um arquivo. A TAA guarda tambm duas
informaes cruciais para o sistema, primeiro o nmero do cluster usado e segundo a sua
situao. A tabela 03 mostra quatro estados em que o campo situao pode apresentar.


Faixa de Valor Situao
0000 Livre
0002 FFEF Em uso
FFF0 FFF6 Reservado
FFF7 Cluster defeituoso
FFF8 FFFF Final do Arquivo

Tabela 03 Situao do Cluster na FAT


A capacidade mxima de endereamento de um sistema FAT depender do tipo
utilizado, a tabela 04 mostra a capacidade mxima de endereamento de cada FAT.

23




Tabela 04 Limites de endereamento do sistema de arquivos FAT


1.7.3 Estrutura de Diretrio no MS_DOS


O diretrio (Figura 12) uma estrutura que contm todas as informaes sobre os
arquivos no disco e fica localizado logo aps as duas cpias da TAA. O tamanho padro de
cada entrada de 32 bytes onde sero armazenados os nomes, atributo, data e hora de criao,
tamanho e cluster inicial na TAA (HOLZNER, 1990, p. 269).


Offset Tamanho Descrio
00h 8 bytes Nome do Arquivo
08h 3 bytes Extenso
0Bh 1 bytes Atributo
0Ch 1 bytes Reservado
0Dh 1 bytes Criao (segundos)
0Eh 2 bytes Hora da Criao
10h 2 bytes Data da Criao
12h 2 bytes Data do ltimo acesso
14h 2 bytes Reservado
16h 2 bytes Hora da ltima gravao
18h 2 bytes Data da ltima gravao
1Ah 2 bytes Cluster inicial
1Ch 4 bytes Tamanho do arquivo em bytes

Figura 12 Estrutura de Entradas no Diretrio


Tipo da FAT Endereamento (clusters)
FAT12 At 4096
FAT16 At 65526
FAT32 Acima de 65526
24

A primeira posio do registro de entrada de um arquivo no diretrio traz
informaes fundamentais para anlise deste registro. Se for um caractere vlido para nome
de arquivo, indica que a entrada est sendo usada. Se for 0 (zero) uma entrada vazia. Se for
o caractere . (ponto), indica que uma entrada de um subdiretrio e se for um caractere com
cdigo ASCII 229 (ou hexadecimal E5), indica que de um arquivo que foi eliminado. Este
smbolo normalmente aparece como um sinal de ? para a maioria dos programas de
recuperao de arquivos apagados (RAMALHO, 1992).


Um dado tambm importante que deve ser levado em considerao so os
subdiretrios, conforme vimos na seo 1.4.6, estes nada mais so do que arquivos com a
estrutura de diretrios. Estas informaes sero bastante teis no futuro quando for aborda a
questo de recuperao de arquivos.


1.7.4 rea de Dados


Depois de organizada toda essa estrutura inicial (BOOT, TAA e Diretrio),
comea a rea para gravao dos arquivos propriamente ditos. Inicialmente todos os arquivos
sero gravados de forma seqencial, isto , um aps outro. Com o passar do tempo, a
eliminao e a criao de novos arquivos, propiciar o aparecimento de buracos ou intervalos
entre os arquivos causando assim o que chamamos de fragmentao do disco.

25

Como j vimos, um arquivo nada mais do que uma abstrao de dados
implementada pelo sistema operacional, formado por uma seqncia de registros lgicos
mapeados do registro fsico do dispositivo de armazenamento (SILBERSCHATZ, 2000, p.
280).


Na rea de dados os setores so agrupados em clusters. O tamanho do cluster varia
de acordo com o tamanho do disco. Por exemplo, num disco de 1.0 Gb o cluster ter um
tamanho de 16 Kb (Tabela 05).






Tabela 05 Tamanho do Cluster no sistema de arquivos FAT16


J que um cluster o menor espao que se pode enderear, ento arquivos cujo
tamanho no esteja prximo a um mltiplo de um cluster causar uma perda de espao
razovel. Um pequeno arquivo de texto de tamanho 300 bytes, apesar de to pequeno, vai
utilizar um espao em disco de 16 Kb, ou seja, um cluster, que a menor unidade enderevel
em FAT16 de um disco com tamanho entre 512 e 1023 Mb.
Tamanho da Partio Tamanho do Cluster
512 - 1023MB 16kB
1024-2047 32kB
Acima de 2047 No h suporte
26

1.8 Acesso Direto a Disco


1.8.1 INT 13h (Interrupo da BIOS)


A INT 13 da BIOS prov funes que possibilitam o acesso direto a disco. Estas
funes so implementadas pela BIOS, i.e. estas funes podem ser usadas sem a necessidade
de qualquer driver de disco. Isto especialmente importante para o BOOT, uma vez que neste
momento nenhum sistema operacional e nenhum driver de disco esto carregados.
Tipicamente a INT 13h usada para ler o setor de boot do disco. A INT 13h usa a notao
CHS com um tamanho de 24 bits para acessar um setor. Desta forma a INT 13h pode ter
acesso a disco de mximo 8 Gb. Se o disco for maior, ento apenas os primeiros 8 GB sero
acessveis pela INT 13h (STRAUB, 2002).


1.8.2 INT 13 Estendida


A INT 13 estendida uma extenso da INT 13h. Esta extenso foi especificada
pela IBM e Microsoft. Uma diferena (entre outras) da INT 13h estendida, que ela usa uma
numerao seqencial para os setores chamada de LBA (Logical Block Address). Este
formato utiliza quatro palavras, isto , 64 bits para identificar a posio de um setor no disco.
Desta forma a INT 13h Estendida suporta discos com tamanho de at 8 TB (STRAUB, 2002).

27

Contudo no registro de partio de um disco, o valor mximo de endereamento
LBA de 32 bits (uma double word), permitindo enderear discos de at 2048 GB (2 TB).


LBA uma forma de endereamento dos setores na qual se utiliza uma numerao
seqencial dos setores de um disco comeando com o nmero 0. O formato LBA no
suportado pela BIOS de placa mais antigas.


No formato CHS um setor identificado pelas coordenadas
Cilindro/Cabea/Setor. As informaes sobre o nmero de cilindros, cabeas e setores podem
ser obtidos atravs das funes 08h e 48h da interrupo 13 da BIOS. O formato CHS
suportado por qualquer BIOS, mas limita o acesso a disco com tamanho de at 8 GB.


Clculo do endereamento:

C = Cilindro 0 - 1023 (10 Bits) = 1024
H = Cabea 0 - 254 (8 Bits) = 255 (teoricamente at 256)
S = Setor 1 - 63 (6 Bits) = 63 (o setor zero no existe).

Total endereado = (C*H*S*512) = 1024 * 256 * 63 * 512 = 8.455.716.864 bytes


28

Devido a um problema no sistema operacional do DOS o nmero mximo de
cabeas fica limitada a 255, acima disso poder causar danos ao sistema embora a BIOS
permitiria este nmero (STRAUB, 2002).


Para o formato CHS na tabela de partio so usados apenas 24 bits para o
endereamento do disco. Com 24 bits e um setor de 512 bytes possvel enderear todos os
setores de um disco at um tamanho de no mximo 8 GB. J o formato LBA usa uma rea de
32 bits na tabela de partio. Desta forma, usando setores de 512 bytes, todos os setores de
um disco at um tamanho de no mximo 2048 GB (2 TB) podem ser endereados. A INT 13
estendida usa 64 bits para armazenar um endereo no formato LBA.


possvel converter formatos LBA em CHS e vice-versa. Conceitualmente ambas
as formas so equivalentes. Um setor no formato C/H/S tem seu nmero LBA equivalente na
seguinte frmula:

Convertendo CHS em LBA:
LBA = (Setor-1)+(Cabea*TotSetores)+(Cilindro*(TotCabeas+1)*TotSetores)

Convertendo LBA em CHS:
Setor = ((LBA Mod TotSetores) +1)
Cil_Cabea= (LBA Div TotSetores)
Cabea = (Cil_Cabea Mod (TotCabeas + 1))
Cilindro = (Cil_Cabea Div (TotCabeas + 1))
29

2. AVALIAO DOS SOFTWARES



Neste captulo descreveremos alguns testes de recuperao de arquivos visando
demonstrar e avaliar alguns softwares que se prope a realizar tais tarefas.


Inicialmente utilizaremos o software EasyRecovery (ONTRACK, 2002), verso
6.01 a fim de demonstrar e verificar em quais condies poderemos obter sucesso na
recuperao de dados. Durante este processo procuraremos observar seu funcionamento no
intuito de descobrir qual ou quais algoritmos foram utilizados. Informamos que esta
ferramenta teve seu uso autorizado para este trabalho, conforme documento no Anexo 1.


Segundo a Ontrack (2002), [...] EasyRecovery um revolucionrio conjunto de
utilitrios para recuperao de dados perdidos, bem como, na reparao de arquivos
corrompidos. Ele poder ajud-lo a recuperar arquivos que foram danificados por algum
motivo dos quais podemos citar: danificado por vrus; setores ilegveis; desligamento
indevido do computador ou encerramento de uma aplicao de forma incorreta ou outro
evento que poder tornar o arquivo inacessvel. Contudo ficaremos restritos recuperao de
dados que objeto de nosso estudo.


30

A outra ferramenta a ser utilizada nos experimentos o Norton SystemWorks 2000,
da Symantec (SYMANTEC, 2002), trata-se de uma ferramenta composta de vrios utilitrios,
que permite uma explorao bastante minuciosa nos dados gravados em disco. No entanto nos
restringiremos ao uso de alguns deles a exemplo do DISKEDIT, UNERASE e NDD, utilitrios
que se completam para o propsito em questo. Para este trabalho foi feito uso de uma verso
Trial baixada diretamente do prprio site da Symantec.


O EasyRecovery tem como finalidade a recuperao de dados e no a recuperao
do disco. Inclusive se recomenda que os dados sejam salvos em um outro disco, e em ltimo
caso numa outra partio, sendo esta ltima opo no muito recomendada, pois como no se
tem conhecimento do tamanho do estrago, deve ser evitado qualquer tipo de gravao no
disco sob recuperao.


J os utilitrios do SystemWorks manipulam os dados no prprio disco em questo.
Estes utilitrios requerem ser executados sob o sistema operacional DOS, pois necessitam que
o disco no esteja compartilhado com outros aplicativos, isto , necessitam ter acesso
exclusivo aos disco.


O Sistema Operacional requerido para rodar a aplicativo EasyRecovery pode ser:
Windows 95b, 98SE, Me, NT4(SP6), 2000 ou XP, j os trs utilitrios do SystemWorks, em
questo, s executam em sua plenitude no ambiente DOS. Quanto ao hardware pode ser igual
ou superior a:
31

- Mnimo de 16 Mb de RAM;
- Processadores 486;
- 150 Mb de espao livre em disco.


2.1 - Ambiente Inicial Para os Experimentos:


Foi preparado um ambiente que servir como laboratrio, com a seguinte
configurao:

CPU Pentium, 200 Mhz, 32 Mb de RAM (Randomic Access Memory);
HD de 1.00 Gb (Cilindros 1942, Cabeas 16, Setores 63), dividido em
quatro parties primrias de 250 Mb;
Sistema de arquivos FAT16;
Sistema Operacional Windows 98;


As condies iniciais do disco so mostradas nas figuras 13, 14 e 15 as quais
exibem o MBR, FAT e Diretrio Raiz respectivamente.
32


Figura 13 MBR do disco de teste



Figura 14 Fragmento da TAA do disco de teste



Figura 15 Fragmento da rea de Diretrio


As duas primeiras alocaes
so reservadas TAA.

33

2.2 Laboratrio I - Eliminao Indevida de Arquivos


Como experimento inicial criaremos um arquivo na partio 01 e logo aps o
eliminaremos. Escolhemos trabalhar com um nico arquivo para facilitar a anlise das
alteraes ocorridas no disco, evitando que a diversidade dos dados possa influenciar de
maneira negativa na anlise. As figuras 16 e 17 mostram as alteraes ocorridas na FAT e no
Diretrio desta partio.


Figura 16 Fragmento da TAA com a criao do primeiro arquivo



Figura 17 Fragmento do Diretrio aps a criao do primeiro arquivo


2.2.1 - Avaliao do Laboratrio I Recuperao de Arquivos Apagados


A recuperao de dados quando um arquivo eliminado, mesmo que
inadvertidamente, transcorreu de maneira bastante simples. Aps anlise da partio pelo
EasyRecovery o mesmo identificou a existncia de um arquivo apagado, o que podemos notar
34

pela indicao do campo Condition contendo a informao D=Deleted (Figura 18), ou seja,
arquivo apagado. Ao selecionarmos os arquivos desejados deveremos indicar um local onde
os mesmos devero ser salvos, concluindo assim a operao.


Figura 18 Lista de arquivos a serem recuperados pelo EasyRecovery


Considerando as mesmas condies anteriores foi utilizado o programa
UNDELETE que faz parte da sute do Norton System Works, o qual tem como funcionalidade
a recuperao de arquivos apagados. Semelhante ao processo anterior os arquivos apagados
foram localizados e listados, sendo apresentados ao usurio e solicitado que fosse escolhido
os arquivos para recuperao. Para cada arquivo selecionado foi informado o primeiro
caractere do nome do arquivo, pois sabemos que ele fora substitudo pelo ASCII 229,
concluindo assim sua recuperao.
35

2.2.2 - Anlise da tcnica utilizada


J vimos que quando um arquivo eliminado, duas aes so tomadas pelo
sistema operacional para este fim; a primeira marcar o arquivo como apagado atribuindo ao
primeiro caractere do nome do arquivo o cdigo hexadecimal E5, a segunda gravando 0000
na TAA correspondente aos clusters utilizados pelo mesmo. Os demais dados permanecem
intactos na rea de dados.


Ento, na verdade, um arquivo eliminado ainda permanece no disco at que outro
venha utilizar o espao que ele at ento estava ocupando. Se no diretrio ainda permanecem
as informaes do nome, tamanho do arquivo e sua entrada na TAA, torna-se possvel a
localizao de seus dados e reconstruindo a TAA ou salvando-os em outro local.


2.2.3 Outras situaes de arquivos eliminados


Aproveitando a situao ora em questo, foram experimentadas vrias ocorrncias
em que novos arquivos eram criados e eliminados, e durante esse processo foi observado
algumas situaes bastante interessantes.


36

Quando um novo arquivo criado, notou-se que o sistema operacional procura a
primeira vaga na rea de diretrio e grava as caractersticas do novo arquivo nesta rea, ou
seja, ele no leva em considerao se a rea foi recentemente usada ou se uma entrada livre
que nunca foi utilizada. Desta forma o sistema operacional no preserva as entradas de
arquivos que foram eliminados recentemente. Se havia a inteno de recuperao dos dados
de algum destes arquivos, as chances tornaram-se bastante remotas.


Outra observao importante, diz respeito a arquivos fragmentados, ou seja,
quando sua ocupao no disco no obedece a uma seqncia contgua. Neste caso se dois
arquivos estivessem ocupando clusters alternados e contguos entre si e forem apagados,
ficar difcil a identificao, aps a eliminao, de quais clusters pertencem a quem, pois as
entradas da TAA sero zeradas, perdendo assim o encadeamento dos endereos,
permanecendo intacta apenas suas entradas na rea de Diretrio. A figura 19 apresenta uma
situao que elucidar o que acabamos de comentar.


Figura 19 Recuperao de arquivos eliminados/fragmentados
37

2.3 Laboratrio II - MBR Danificada


Neste laboratrio foi simulado um problema no setor de registro do MBR do disco
de testes. As condies iniciais foram as seguintes: foram mantidos os dados do Laboratrio I,
isto , a partio 01 sendo criado um subdiretrio com o nome Teste contendo dois arquivos
do tipo texto. Tambm foram colocados na partio 04, dois arquivos com os nomes Mbr.asm
e Mbr.img. Fazendo uso do prprio DEBUG do DOS, foram gravados 512 bytes com o
caractere 00 no primeiro setor fsico do disco, destruindo assim o MBR. Um disco sem o
MBR totalmente desconhecido para o SO, pois, como neste setor esto as informaes sobre
a estrutura do disco e suas parties, o SO entender que o disco esta vazio.


O processo de recuperao, utilizando o EasyRecovery acontece em vrios passos;
primeiro o aplicativo faz uma varredura no sistema detectando os diversos discos instalados,
listando-os para que fosse possvel escolher em qual unidade ou partio seria procedido a
recuperao. Dentre os disco instalados na mquina, aparece o disco de teste com a seguinte
mensagem: partio Unidentified. Neste ponto foi escolhido em Opes Avanadas, o
tipo de partio que queramos encontrar. Fornecida esta informao o aplicativo localiza a
primeira partio deixando o restante do disco com a mensagem de Unidentified. Esta
operao foi repetida at que todas as parties fossem detectadas. Aps a deteco da(s)
partio(es), bastou selecionar a que se desejava pesquisar e em seguida foi realizada uma
varredura na partio do disco sendo encontrado todos os arquivos inclusive aqueles j
eliminados do sistema. E para finalizar foram escolhidos os arquivos desejados para
recuperao, informando o destino onde seriam copiados finalizando o processo.
38

Foi repetida a experincia, agora utilizando o software NDD (Norton Disk Doctor)
do Norton System Works, logo no incio o aplicativo detectou que o MBR estava danificado,
questionando se era desejada a sua recuperao. Caso a resposta fosse afirmativa, o software
prosseguia na pesquisa do disco encontrando todas as parties do disco, e em cada uma delas
era solicitada uma confirmao sobre sua recuperao. Ao final do processo foi recomendado
a reinicializao da mquina para que as alteraes fossem validadas.


2.3.1 - Avaliao do Laboratrio II


Que algoritmo teria sido utilizado para recuperar estes dados? Diante do
conhecimento adquirido no Captulo 1, se pode inferir o seguinte: O EasyRecovery identificou
o disco mas no conseguiu, no primeiro momento, localizar as suas parties. Neste ponto
fica a cargo do usurio fornecer as informaes que leve a uma identificao mais precisa
sobre o tipo da partio a ser recuperada. Como o setor que continha as informaes sobre o
MBR encontrava-se vazio, procurou-se ler os prximos setores, buscando aquele que continha
uma assinatura de setor de BOOT, ou seja, os identificadores 55AAh no offset 1FEh.
Encontrado-se este setor, ficam disposio todas as informaes da partio (Tamanho, FAT
e Diretrio) permitindo, a partir de ento, localizar todos os arquivos nela contidos.


O NDD logo de incio apontou o registro do MBR como danificado, recuperando
as parties sem que fosse solicitado que tipo de sistema de arquivos existia na partio
anteriormente, recuperando-as exatamente como eram.
39

Tambm foi observado que os dois softwares utilizam tcnicas bastante diferentes,
o primeiro evita a gravao de dados no disco em recuperao, j o segundo recupera os
dados no mesmo disco, ou seja, reconstruiu o MBR, possibilitando a reutilizao do disco em
questo. Um outro detalhe importante que dever ser levado em considerao : em que pese o
EasyRecovery solicitar que sejam informados os tipos de parties, pode ser revertido em um
benefcio, pois caso os dados lidos na partio danificada no identifiquem que tipo de
sistema de arquivos foi usado, poder ser desastroso a recuperao de tal partio.


2.4 Laboratrio III Recuperao da Partio Depois de Formatada


Ambos os softwares oferecem recursos de recuperao de parties que foram
formatadas, sendo que, como j foi falado. O EasyRecovery recupera os dados noutro disco e
o Norton recupera nele mesmo, o processo adotado pelo EasyRecovery bem semelhante ao
de recuperao de dados.


O EasyRecovery faz uma varredura no disco localizando todos os arquivos e
diretrios para posteriormente apresentar um lista solicitando a seleo daqueles que devero
ser recuperados concluindo a tarefa e assim salvando os arquivos em outra unidade de disco.


O Norton executa sua tarefa atravs de um utilitrio chamado UNFORMAT,
diferentemente do software anterior ele prope a recuperao dos dados no prprio disco. No
40

solicitado qualquer informao a respeito dos dados que sero recuperados, apenas oferece
um opo de salvar uma imagem da situao atual, visando um retorno situao anterior.
Trata-se de uma interface em texto ASCII a qual vai mostrando a evoluo do trabalho num
quadro onde vai mapeando a partio, at a concluso do processo.


Em ambos os casos foi notado o seguinte: todos os arquivos que estavam no
diretrio raiz foram perdidos; quanto aos diretrios houve uma recuperao, digamos
estranha, pois os nomes dos mesmos no foram localizados, surgindo em seu lugar nomes
padro seguidos de uma seqncia numrica, DIR000, DIR001 assim sucessivamente at o
final. Vale ressaltar que neste processo, diretrios que antes no existiam na partio em
questo tambm foram recuperados.


2.4.1 - Avaliao do Laboratrio III


Antes de iniciar qualquer anlise sobre este laboratrio deve-se ter em mente que a
formatao da partio altera basicamente trs reas dos discos, quais sejam: Boot, TAA e
Diretrio, permanecendo a rea de dados intacta at ento. Ambos os softwares tiveram
desempenho bastante semelhante, pois no conseguiram recuperar arquivos da rea do
diretrio raiz, e os diretrios foram recuperados pela quantidade e no pela qualidade.
Contudo cada um deles continha seus arquivos e subdiretrios, semelhante situao
encontrada antes da formatao.

41

Tambm se deve estar alerta para os arquivos fragmentados, pois como a TAA
fora destruda, estes podem estar com seus contedos imperfeitos ou corrompidos.


2.5 Laboratrio IV - Recuperao de disco com danos diversos


Foi submetido anlise dos softwares, um disco rgido que estava apresentando
problemas de leitura, e nesta fase o problema j era to grande que o mesmo nem era
reconhecido pelo sistema operacional da mquina de testes. Vale ressaltar que este disco,
antes do problema, encontrava-se operacional, e com o sistema operacional Windows 95
instalado.


Inicialmente foi aplicado na recuperao do disco, o EasyRecovery, onde se obteve
os seguintes resultados:
No foi detectada qualquer partio no disco rgido;
O software solicitou que fosse informado qual tipo de FAT estava instalado
no disco, e mesmo assim no foi localizado qualquer sistema de arquivos.


Logo em seguida foi aplicado o NDD (Norton Disk Doctor), onde se obteve os
seguintes resultados:
Foi encontrada e recuperada uma partio, contendo todos os arquivos de
instalao do Windows 95.
42

Foi recriado o registro de inicializao (MBR), do disco, com as
informaes da partio recm recuperada.


2.5.1 Avaliao do Laboratrio IV


Neste laboratrio foi utilizado um disco que possua graves problemas, pois, se
quer era reconhecido pelo sistema operacional da mquina de testes. Pode-se observar que
aparentemente havia no mnimo duas parties no disco; uma com um sistema operacional e
outra com dados diversos, no caso, o conjunto de programas de instalao do Windows 95.



Figura 20 Falha na recuperao pelo EasyRecovery
43

O EasyRecovery falhou na deteco de qualquer partio existente no disco como
pode ser observado na figura 20, j o NDD conseguiu identificar uma partio com sistema de
arquivos FAT32 e recriar o MBR com as informaes nela contida. Porm os dados da
primeira partio ficaram totalmente perdidos no sendo possvel a qualquer dos dois
softwares encontrar dados que pudessem ser recuperados.


44

3. PROTTIPO



O desenvolvimento dos prottipos visa demonstrar tcnicas de recuperao de
dados, servindo de base para novos estudos mais avanados nesta rea. Procurou-se utilizar
ferramentas que permitissem a manipulao dos dados com a mnima interferncia possvel
do sistema operacional, permitindo um controle mais direto sobre os dados armazenados.


3.1 Ambiente de desenvolvimento


Hardware Foi utilizado o mesmo ambiente em que foram realizados os testes
com os softwares de recuperao de dados, ou seja:

Pentium 200 Mhz, com 32 Mb de memria RAM;
Disco Rgido de 1.0 Gb, dividido em quatro parties primrias de 250 Mb
cada;

Sistema Operacional - MS-DOS, face a necessidade de se obter acesso direto a
disco.

Software Foi utilizada a linguagem assembly, pela sua simplicidade no acesso
direto a disco, acesso esse no permitido atravs do sistema operacional Windows 9x.
45

Compilador Turbo Assembler (TASM)verso 1.0 da Borland International.

Link Turbo Link (TLINK) verso 2.0 da Borland International.


Os apndices E e F contm as listagens completas dos mdulos de E/S, utilizados
por todos os prottipos, construdos com base em (NORTON, 1987).


3.2 Prottipo I Disp_Set.Asm


Este programa visa exibir os dados de um setor do disco rgido. Observa-se o uso
da INT 13 na leitura do setor. No prottipo em questo exibido o registro de inicializao
(MBR). O apndice A contm a listagem completa deste prottipo.


3.3 Prottipo II Disp_Part.Asm


Exibe os registros das parties de um disco. Praticamente usa a mesma idia do
prottipo I, focando o tratamento dos campos referentes s parties do disco. Aqui pode ser
visto o incio e fim de cada partio e seu tamanho em quantidades de setores. O apndice
B contm a listagem completa deste prottipo.

46

3.4 Prottipo III Disp_Bot.Asm


Este prottipo faz a leitura do setor de BOOT da primeira partio do disco rgido,
apresentando suas informaes mais relevantes. De posse destas informaes possvel
conhecer suas caractersticas, tais como: nome do S.O.; bytes por setor; setores por cluster;
setores por trilha; tipo do sistema de arquivos; etc. O apndice C contm a listagem
completa deste prottipo.


3.5 Prottipo IV Salva/Recupera MBR Mbr.Asm


Como uma ferramenta de segurana este prottipo visa guardar uma cpia da rea
de inicializao possibilitando sua recuperao no caso de perda acidental da mesma. O
apndice C contm a listagem completa deste prottipo.


Funcionamento Ao executar o programa ser exibido um menu solicitando que
tipo de operao se desejar realizar. So apresentadas trs opes: Salvar, Recuperar e Sair do
programa. A opo Salvar faz uma leitura do MBR do disco rgido, gravando seus dados num
disquete com o nome de MBR.DAT. A opo de Recuperao, ir ler este arquivo e gravar os
dados no disco rgido recuperando os dados perdidos ou alterados acidentalmente. Em ambos
os casos a leitura ou gravao s ocorrer aps validao da assinatura do setor.

47

Foram realizados vrios testes com este prottipo com a finalidade de testar sua
eficincia e funcionalidade:


Teste n 01 Foi realizado no mesmo ambiente de testes at ento em uso, agora
usando um disco de 3.2 GB carregado com o sistema operacional Windows 98. O teste
transcorreu conforme o esperado, isto , ao ser escolhida a opo 1, foi salvo em disquete o
arquivo MBR.DAT, contendo os dados do MBR do disco rgido. Este arquivo foi analisado
pelo DEBUG sendo constatado que os dados nele contidos realmente pertenciam ao disco
rgido. Em seguida foi destrudo o MBR do disco de teste, e executado a opo 2 de
recuperao, obtendo assim pleno sucesso.


Teste n 02 Foram repetidos os testes em disco de uso normal, e os resultados
foram sempre positivos, ocorrendo a recuperao do registro de inicializao (MBR).


Teste n 03 Como teste final do prottipo foi criado um ambiente na mesma
mquina de testes, agora usando uma placa SCSI modelo AHA-2940 e um disco com
capacidade para 3.2 GB, no qual estava instalado o sistema operacional Windows 2000 com
sistema de arquivos NTFS. Inicialmente a mquina foi inicializada com um disquete contendo
o sistema operacional DOS e o prottipo em questo. O prottipo foi executado obtendo
sucesso total no salvamento e recuperao do registro de inicializao do disco SCSI.


48

3.6 Dificuldades Encontradas


Apesar do vasto material de pesquisa disposio tanto na Internet quanto em
livros, sobre a estrutura dos sistemas de arquivos e as estruturas fsicas e lgicas dos discos
rgidos no foi encontrado material que falasse exatamente sobre tcnicas de recuperao de
dados em discos rgidos. Foi encontrada muita propaganda sobre recuperao de dados,
programas prontos e at cursos, sem, no entanto, tratar de tcnicas de recuperao.


Uma das grandes dificuldades aqui encontradas foi a questo do acesso direto a
disco, acesso esse necessrio obteno de dados no comuns, como exemplo a leitura direta
de qualquer setor disponvel no disco. Acesso esse conseguido apenas com interrupo 13 da
BIOS, suportada pela linguagem de programao assembly.



Figura 21 Mensagem de erro - Acesso direto ao hardware pelo Windows 9x.


Tentativas foram feitas no sentido de usar linguagens de alto nvel como o
DELPHI e C++, visando apresentar um prottipo com visual grfico, contudo ficou
49

impossibilitado pelo fato de que o sistema operacional Windows 9x restringe as rotinas de
acesso direto ao hardware (Figura 21). O pequeno trecho a seguir demonstra o enunciado:

procedure TForm1.Button1Click(Sender: TObject);
begin
asm
mov ax,0201h
mov bx,0200h
mov cx,0001h
mov dx,0080h
int 13h
end;
end;



50

CONCLUSO



Atravs deste estudo podem ser identificados alguns pontos crticos sobre a
questo do armazenamento de dados em discos rgidos: primeiro, que o registro de
inicializao (MBR) no fator predominante na integridade dos dados, mas de vital
importncia na carga do sistema operacional; segundo, o sistema de arquivos, que o
responsvel pelo gerenciamento dos dados armazenados em disco, dando um enfoque especial
nas reas da TAA e diretrios.


Como sugesto e forma de facilitar uma recuperao de dados, destacamos o uso
de subdiretrios, pois como foi visto, um subdiretrio tratado como um arquivo comum pelo
sistema de arquivos cujas informaes ficam gravadas na rea de dados, sendo assim,
formataes ou outra coisa do gnero no apagaro suas informaes, sendo possvel localizar
os arquivos apontados por eles. Assim caso seja possvel, deve-se evitar ao mximo o uso do
diretrio raiz, pois uma vez que este seja danificado, ou formatado, os dados por ele
apontados ficam difceis, seno impossveis de serem localizados, conforme comentado na
seo 2.4.


Outra situao que deve ser bem analisada no momento de se tomar a deciso de
qual tcnica ser usada na recuperao de dados. A opo de copiar os dados em outro disco
tem como vantagem a segurana e possibilidade de se repetir o procedimento quantas vezes
51

quiser. J a recuperao no mesmo disco implica na necessidade de gravar dados no prprio
disco, alterando de imediato as informaes na TAA e diretrios sendo impossvel repetir o
procedimento de recuperao.


O prottipo de recuperao do registro de inicializao (MBR), demonstrou o uso
de uma tcnica de proteo onde criado um arquivo, em outro meio de armazenamento,
contendo os dados do MBR. Esta tcnica permitiu restaurar o registro de inicializao caso o
mesmo tenha sido danificado ou alterado atravs de outros programas a exemplo do FDISK
do MS-DOS.


Este trabalho apresentou, portanto, contribuies relevantes pois, atravs dele,
conseguiu-se obter um conhecimento bastante abrangente sobre os discos rgidos e suas
formas de armazenamento, tambm se pode tomar conhecimento sobre alguns softwares de
recuperao de dados, bem como a forma como estes dados so recuperados. E finalmente
despertar o interesse do leitor para o assunto em pauta.


Deixaremos aqui tambm algumas sugestes de trabalhos futuros que podero
melhorar e aprimorar este estudo:

Criao de discos de recuperao que contenham informaes sobre o
MBR, TAA e diretrio raiz;

52

Criao de programas que possam alterar a seqncia de BOOT, de forma
a inicializar o disco rgido a partir de outra trilha que no seja a trilha zero.


Enfim, conclumos enfatizando a grande relevncia do trabalho apresentado em
funo da importncia de dados e informaes pessoais ou corporativas armazenadas em
discos rgidos nos diversos sistemas de computao. A recuperao de Dados em Discos
Rgidos reveste-se de grande importncia, especialmente, no ambiente domstico e de
pequenas empresas, onde os cuidados com cpias de segurana costumam ser negligenciados
potencializando os riscos de prejuzos em caso de perdas de informaes armazenadas nos
discos rgidos.
53











ANEXOS E/OU APNDICES




54

ANEXO 1



De: TRynchek@krollontrack.com
Enviado em: sexta-feira, 27 de setembro de 2002 11:16
Para: edmilson.psantos@caixa.gov.br
Assunto: Ontrack's EasyRecovery

Hello Edmilson Porto Santos:

I have received your request, and am sending you the following items to assist you in writing
your term paper:

First, I am sending you a download authorization code for EasyRecovery Professional 6.0.
Your authorization code is: D9724X-2DU5CL. Please go to
http://boulder.ontrack.com/das/form.asp and enter the requested information to receive your
download. Please note, this code will expire in 12 hours.

Second, here are some URL's that will assist you in writing your paper:
http://www.ontrack.com/newsroom/pressrelease.asp?id=35871 (ER Press Release)

http://www.ontrack.com/library/easyrecovery60.pdf (Sales Sheet)

http://www.ontrack.com/library/er6guide_en.pdf (User Guide)

http://www.ontrack.com/easyrecovery/info.asp (List of Features)

http://www.ontrack.com/easyrecovery/whatsnew.asp (Key components of updated version)

http://www.ontrack.com/library/ (Misc. Information)

http://www.ontrack.com/easyrecoverydatarecovery (Product information/Web site)

Please let me know if you have any further questions, and good luck with your paper :)

Thanks,

Tracy

Tracy A. Rynchek
Marketing Intern
Kroll Ontrack Inc. www.krollontrack.com
9023 Columbine Road | Eden Prairie, MN 55347
Phone: (952) 949-4164
Fax: (952) 949-937-5815
Email: trynchek@krollontrack.com

55

The preceding e-mail message (including any attachments) contains information that may be
confidential or constitute non-public information. It is intended to be conveyed only to the
designated recipient(s). If you are not an intended recipient of this message, please notify the
sender by replying to this message and then delete it from your system. Use, dissemination,
distribution, or reproduction of this message by unintended recipients is not authorized and
may be unlawful.



-----Original Message-----
From: edmilson.psantos@caixa.gov.br
[mailto:edmilson.psantos@caixa.gov.br]
Sent: Wednesday, September 25, 2002 8:59 AM
To: WEB Support; edmilson.psantos@caixa.gov.br
Subject: Other concerns


Date = 9/25/2002
Time = 8:59:14 AM
edmilson.psantos@caixa.gov.br

To Ontrack



Dear Sirs,

I am a student at Tiradentes University in Aracaju (Sergipe/Brazil)
(<http://www.unit.br>) and it is my last term in &#8220;Data Processing
Technological Course&#8221;. I will write an essay on "Techniques for
Recovering Hard Disk Data" as a final term paper.

I was researching some software when I found the &#8220;Easy
Recovery&#8221; and I became very pleased with the resources offered by
that program. So I recently downloaded &#8220;Trial 6.0&#8221; version to
check its quality. The &#8220;Trial 6.0&#8221; version can locate lost
data and files but it can&#8217;t recover them. I realized it is necessary
to purchase the software to have the recovering option installed.

I intend to use the &#8220;Easy Recovery&#8221; as a demonstration and
simulation of some situations of lost and recovered data. So I would like
to know if it would be possible to have the use permission of this
software as source for my monograph and if you could allow the use of a
version that can recover files (at least 10 files). I would not mind if
you let me use an old version of the software. I would also like to have
some articles or manuals about this software so that you would be helping
me to write my essay. Those articles and manuals would enrich the essay
giving some confident information with real documents attached to the
monograph.

56

It&#8217;s an academic project and I assure you the software will be used
only as a research source.

I am looking forward to receiving the permission to use the software and
the information about it in my monograph.

Sincerely,

Edmilson Porto Santos

e-mail = <mailto:edmilson.psantos@caixa.gov.br>
Rua Reginaldo Passos Pina, 231
Aracaju - Sergipe - Brasil
Cep 49.040.720

57

APNDICE A Disp_Set.asm


; Programa: Disp_Set.asm
; Autor: Edmilson Porto Santos
; Data: 10/2002
; Finalidade: Ler um setor do disco
;

cgroup group cod_seg, data_seg ; Agrupa segmentos
assume cs:cgroup, ds:cgroup

cod_seg segment public
org 100h

extrn envia_CRLF:near
extrn imp_hexa:near
extrn imp_car:near
extrn imp_decimal:near
extrn limpa_tela:near

;-----------------------------------------------------------------------------
; Esta rotina le um setor do disco
;-----------------------------------------------------------------------------

le_setor proc near
mov ah,02 ; funcao de leitura de disco
mov al,01 ; ler um setor
mov ch,00 ; cilindro a ser lido
mov cl,01 ; setor a ser lido
mov dh,00 ; face a ser lida
mov dl,80h ; disco a ser lido
lea bx,setor ; local onde armazenar o setor
int 13h ; interrupcao de acesso a disco
xor dx,dx ; seta deslocamento de setor para 0
call disp_setor ; imprime setor
int 20h
le_setor endp


public disp_setor

;-----------------------------------------------------------------------------
; Rotina para impresso do setor
; DS:DX guarda tamanho do setor, deve se multiplo de 16
;-----------------------------------------------------------------------------

58

Disp_setor proc near
push cx
push dx
mov cx,32 ; mostra 32 linhas
_disp_setor:
call disp_lin
call envia_CRLF
add dx,16
loop _disp_setor
pop dx
pop cx
ret
Disp_setor endp

public disp_lin

;-----------------------------------------------------------------------------
; Rotina para impressao de uma linha em hexa e ascii
;-----------------------------------------------------------------------------
disp_lin proc near

push bx
push cx
push dx
mov bx,dx ; copia deslocamento para bx
mov cx,16 ; copia 16 bytes
push bx ; salva deslocamento para loop_ascii
loop_hexa: ; imprime hexa
mov dl,setor[bx] ; pega um byte de setor
call imp_hexa ; mostra na tela em hexa
mov dl,20h ; imp espaco ente num hexa
call imp_car
inc bx
loop loop_hexa

mov dl,20h ; aumenta espaco entre hexa e ascii
call imp_car
mov cx,16
pop bx ; recupera deslocamento do setor
loop_ascii: ; imprime ascii
mov dl,setor[bx] ; pega um byte de setor
call imp_car ; mostra na tela em ascii
inc bx
loop loop_ascii
pop dx
pop cx
pop bx
ret
disp_lin endp

59

cod_seg ends


data_seg segment public

setor db 512 dup(0)

data_seg ends

end le_setor

60

APNDICE B Disp_Part.asm


; Programa Disp_Part.ASM
; Autor: Edmilson Porto Santos
; Data: 10/2002
; Finalidade: Apresentar registro das parties
;

cgroup group cod_seg, data_seg ; Agrupa segmentos
assume cs:cgroup,ds:cgroup

cod_seg segment public
org 100h

extrn envia_CRLF:near
extrn imp_hexa:near
extrn imp_car:near
extrn imp_decimal:near
extrn limpa_tela:near

; public disp_particao

;-----------------------------------------------------------------------------
; Rotina para impresso dos dados das particoes
;-----------------------------------------------------------------------------


disp_particao proc near

call limpa_tela
call Ler_MBR
cmp word ptr[buf_set + 1feh],0AA55h
jnz erro
call imp_cab
mov si,00
mov cx,04
loop_reg: call Mostra_Reg
add si,16
loop loop_reg

Fim: mov ah,4ch
int 21h

disp_particao endp


61

Ler_MBR:
mov ah,02
mov al,01
lea bx,buf_set
mov ch,00
mov cl,01
mov dh,00
mov dl,80h
int 13h
ret


imp_branco:
push cx
push dx
mov cx,bx
imp_bco: mov dx,20h
call imp_car
loop imp_bco
pop dx
pop cx
ret

imp_cab:
lea dx,cab1
mov ah,09
int 21h
call envia_crlf
lea dx,cab2
mov ah,09
int 21h
call envia_crlf
ret

erro:
lea dx,msg
mov ah,09
int 21h
jmp fim

; public mostra_reg

mostra_reg proc near
push ax
push bx
push cx
push dx
xor dx,dx

mov bx,03h
62

call imp_branco
mov dl,[buf_set + si + 1beh] ; imprime estado da particao
call imp_hexa

mov bx,05h
call imp_branco
mov dl,[buf_set + si + 1bfh] ; imprime face
call imp_hexa

mov bx,04h
call imp_branco
mov dl,[buf_set + si + 1c0h] ; imprime Cilindro
call imp_hexa
mov dl,[buf_set + si + 1c1h] ; imprime setor
call imp_hexa

mov bx,07h
call imp_branco
mov dl,[buf_set + si + 1c2h] ; tipo da particao
call imp_hexa

mov bx,06h
call imp_branco
mov dl,[buf_set + si + 1c3h] ; imprime face
call imp_hexa

mov bx,04h
call imp_branco
mov dl,[buf_set + si + 1c4h] ; imprime cilindro
call imp_hexa
mov dl,[buf_set + si + 1c5h] ; imprime setor
call imp_hexa

mov bx,04h
call imp_branco
mov ax,word ptr[buf_set + si + 1c6h] ; setor inicial
mov dx,word ptr[buf_set + si + 1c8h]
call imp_decimal

mov bx,05h
call imp_branco
mov ax,word ptr[buf_set + si + 1cah] ; tamanho da particao
mov dx,word ptr[buf_set + si + 1cch] ; em setores
call imp_decimal

call envia_crlf
pop dx
pop cx
pop bx
pop ax
63

ret

Mostra_Reg endp

cod_seg ends


data_seg segment public

cil dw ? ; C
face db ? ; H
setor db ? ; S
buf_setdb 512 dup(0)

msg db "Erro ao ler o disco $"
cab1 db " CHS Inicial CHS Final Setor Tamanho da$"
cab2 db " Estado Face Cil/Setor Tipo Face Cil/Setor Inicial Particao$"
data_seg ends

end disp_particao

64

APNDICE C Disp_Bot.asm


; Programa Disp_Boot.ASM
; Autor: Edmilson Porto Santos
; Data: 11/2002
; Finalidade: Apresentar registro de Boot das parties
;

cgroup group cod_seg, data_seg ; Agrupa segmentos
assume cs:cgroup,ds:cgroup

cod_seg segment public
org 100h

extrn envia_CRLF:near
extrn imp_hexa:near
extrn imp_car:near
extrn imp_decimal:near
extrn limpa_tela:near

;-----------------------------------------------------------------------------
; Rotina para impresso dos dados dos setores de BOOT
;-----------------------------------------------------------------------------


disp_boot proc near

call limpa_tela ; Faz a leitura do
call Ler_set ; setor de boot
cmp word ptr[buf_set + 1feh],0AA55h ; e autentica.
jnz erro ;
call imp_cab
lea si,s01 + 1 ; endereco da primeira string
mov cx,19 ; quantidade de inf. a imprimir
lea di,vetor ; vetor contem offset e
loop_reg: call Mostra_Reg ; tamanho do campo
add si,38 ; adciona tamanho da string a SI
loop loop_reg

mov bx,05h ; finaliza imprimindo assinatura
call imp_branco
lea dx,s20 ; aponta string de assinatura
mov ah,09 ; imprime string
int 21h
mov dl,[buf_set + 01feh + 01] ; aponta offset da assinatura
call imp_hexa ;
65

mov dl,[buf_set + 01feh] ;
call imp_hexa ; imprime assinatura

Fim: mov ah,4ch
int 21h

disp_boot endp


Ler_set:
mov ah,02 ; funcao de leitura de disco
mov al,01 ; quantidade de setores para leitura
lea bx,buf_set ; carrega endereco do buffer do setor
mov ch,00 ; cilindro a ser lido
mov cl,01 ; setor a ser lido
mov dh,01 ; face a ser lida
mov dl,81h ; disco a ser lido
int 13h
ret


imp_branco: ; rotina para impressao de
push cx ; caracteres brancos
push dx
mov cx,bx
imp_bco: mov dx,20h
call imp_car
loop imp_bco
pop dx
pop cx
ret

imp_cab: ; impressao do cabecalho
lea dx,cab1
mov ah,09
int 21h
call envia_crlf
call envia_crlf
ret

erro: ; tratamento de erro
lea dx,msg
mov ah,09
int 21h
jmp fim

mostra_reg proc near ; apresenta dados do registro
push ax ; de BOOT
push bx
push cx
66

push dx

mov bx,05h
call imp_branco
mov dx,si ; recebe endereco da string
mov ah,09 ; imprime string s01..s18
int 21h

xor ax,ax
xor bx,bx
xor cx,cx
mov bl,byte ptr[di] ; apanha offset do campo
mov cl,byte ptr[di + 1] ; apanha tamanho do campo

cmp byte ptr[si - 1],"S" ; testa tipo do campo
jz imp_string

cmp byte ptr[si - 1],"D" ; testa tipo do campo
jz imp_num

cmp byte ptr[si - 1],"H" ; testa tipo do campo
jz imp_hex

jmp mostra_reg_fim ; salta para fim do campo


imp_string: mov dl,byte ptr[buf_set + bx] ; imprime campo string
call imp_car
inc bx
loop imp_string
jmp mostra_reg_fim

imp_num: xor ax,ax ; imprime campo numerico
mov dx,ax
mov al,byte ptr[buf_set + bx]
cmp cx,02
jb _imp_num
mov ax,word ptr[buf_set + bx]
cmp cx,02
jz _imp_num
mov dx,word ptr[buf_set + bx + 02]
_imp_num: call imp_decimal
jmp mostra_reg_fim


imp_hex: xor dx,dx ; imprime campo em hexa
mov ax,cx ; salva tamanho do campo.
_guarda_hex: mov dl,byte ptr[buf_set + bx] ; guarda na pilha valor
push dx ; em hexa.
inc bx
67

loop _guarda_hex

mov cx,ax ; recupera tamanho do campo
_imp_hex: pop dx ; recupera nmero hexa
call imp_hexa ; imprime
loop _imp_hex
jmp mostra_reg_fim

mostra_reg_fim: call envia_crlf
add di,02
pop dx
pop cx
pop bx
pop ax
ret
Mostra_Reg endp

cod_seg ends


data_seg segment public

cil dw ? ; C
face db ? ; H
setor db ? ; S
buf_setdb 512 dup(0)

vetor dw 0803h,020bh,010dh,020eh,0110h,0211h,0213h,0115h,0216h,0218h
dw 021ah,041ch,0420h,0124h,0125h,0126h,0427h,0b2bh,0836h

s01 db "SNome do SO........................: $"
s02 db "Dbytes por setor...................: $"
s03 db "DSetores por Cluster...............: $"
s04 db "DQuantidade de setores reservados..: $"
s05 db "DNumero de copias da TAA...........: $"
s06 db "DEntradas no Diretorio Raiz........: $"
s07 db "DNumero de Setores (Vol. < 32Mb)...: $"
s08 db "HDescritor de Midia................: $"
s09 db "DSetores por TAA...................: $"
s10 db "DSetores por Trilha................: $"
s11 db "DQuantidade de Cabecas ou Faces....: $"
s12 db "DSetores Invisiveis................: $"
s13 db "DNumero de Setores (Vol. > 32Mb)...: $"
s14 db "HNumero do Drive...................: $"
s15 db "HReservado.........................: $"
s16 db "HAssinatura Estendida do BOOT......: $"
s17 db "HNumero Serial do Volume...........: $"
s18 db "SNome do Volume....................: $"
s19 db "STipo do Sistema de Arquivos.......: $"
s20 db "Assinatura do Setor de BOOT.......: $"
68


msg db "Erro. Particao invalida $"
cab1 db " Dados da Particao - Setor de Boot $"
data_seg ends

end disp_boot
69


APNDICE D MBR.asm


; Programa: MBR.asm
; Autor: Edmilson Porto Santos
; Date: 11/2002
; Finalidade: Ler e Gravar o registro
; MBR no disco
;

cgroup group cod_seg, data_seg ; Agrupa segmentos
assume cs:cgroup, ds:cgroup

cod_seg segment public
org 100h

extrn limpa_tela:near
extrn envia_CRLF:near

;-----------------------------------------------------------------------------
; Menu principal
;-----------------------------------------------------------------------------

menu proc near
ler_menu: call limpa_tela
lea dx,cab1 ; carrega endereco do
call imp_str ; cabecalho e imprime.
call envia_CRLF
lea dx,s_menu ; carrega endereco do
call imp_str ; menu e imprime.
call ler_teclado ; ler opcao
call envia_CRLF

cmp al,33h ; se 3 fim.
jz fim

cmp al,32h ; se 2 grava.
jz _recupera ; recupera o MBR

cmp al,31h ; se 1 ler.
jz _salva ; salva o MBR

call envia_CRLF
lea dx,msg_opcao ; opcao invalida
call imp_str
70

call ler_teclado ; pausa

jmp ler_menu ; ler nova opcao.
erro_mbr:
lea dx,msg_mbr
call imp_str ; imprime mensagem de erro.
fim:
mov ax,4c00h ; saida
int 21h
menu endp


;-----------------------------------------------------------------------------
; Esta rotina salva o MBR em disquete
;-----------------------------------------------------------------------------

salva_setor proc near
_salva: mov [opcao],02 ; seta opcao
call rw_setor ; ler setor do MBR
cmp word ptr[setor + 1feh],0AA55h ; autentica
jnz erro_mbr ; MBR.
call salva_MBR ; salva em disquete
lea dx,msg_ok ; carrega endereco
call imp_str ; da mensagem e imprime
call ler_teclado ; pausa, para prosseguir
jmp ler_menu
salva_setor endp


;-----------------------------------------------------------------------------
; Esta rotina recupera o MBR do disquete
;-----------------------------------------------------------------------------

recupera_setor proc near
_recupera: mov [opcao],03 ; salva opcao
call recupera_MBR ; ler arquivo DAT com MBR
cmp word ptr[setor + 1feh],0AA55h ; autentica
jnz erro_mbr ; MBR.
call rw_setor ; grava setor do MBR
lea dx,msg_ok ; carrega endereco
call imp_str ; da mensagem e imprime
call ler_teclado ; pausa para prosseguir
jmp ler_menu
recupera_setor endp


;-----------------------------------------------------------------------------
; Esta rotina salva o MBR no disquete
;-----------------------------------------------------------------------------

71

salva_MBR proc near
cria_arq: mov ah,3ch ; cria arquivo
mov cx,0 ; atributo de arquivo comum
lea dx,nome_arq ; nome do arquivo
int 21h
jc erros ; se houver erro, sai
mov handle,ax ; salva handle

grava: mov ah,40h ; grava dados no arquivo
mov cx,512 ; tamanho do setor
mov bx,handle ; handle do arquivo
lea dx,setor ; aponta para os dados
int 21h ; a serem gravados
jc erros ; houve erro?

call fecha_arq
ret
erros:
lea dx,msg_arq
call imp_str
ret
salva_MBR endp

;-----------------------------------------------------------------------------
; Esta rotina recupera o MBR do disquete
;-----------------------------------------------------------------------------

recupera_MBR proc near
abre_arq: mov ah,3dh ; abre arquivo
mov cx,0 ; somente leitura
lea dx,nome_arq ; nome do arquivo
int 21h
jc error ; se houver erro, sai
mov handle,ax ; salva handle

ler: mov ah,3fh ; ler dados do arquivo
mov cx,512 ; tamanho do setor
mov bx,handle ; handle do arquivo
lea dx,setor ; aponta para os dados
int 21h ; a serem gravados
jc error ; houve erro?

call fecha_arq
ret
error:
lea dx,msg_arq
call imp_str
ret
recupera_MBR endp

72


fecha_arq: mov ah,3eh ; fechar arquivo
mov bx,handle ; handle do arquivo
int 21h
jc erros ; houve erro ?
ret

;-----------------------------------------------------------------------------
; Leitura do teclado
;-----------------------------------------------------------------------------

ler_teclado proc near
mov ah,01 ; funcao leitura de teclado
int 21h
ret
ler_teclado endp


;-----------------------------------------------------------------------------
; Imprime cabecalho
;-----------------------------------------------------------------------------

Imp_str proc near
mov ah,09 ; funcao de impressao de
int 21h ; sting
ret
imp_str endp


;-----------------------------------------------------------------------------
; Esta rotina le um setor do disco
;-----------------------------------------------------------------------------

rw_setor proc near
mov ah,[opcao] ; AH recebe opcao
mov al,01 ; qtde de setores
mov ch,00 ; cilindro a ser lido
mov cl,01 ; setor a ser lido
mov dh,00 ; face a ser lida
mov dl,81h ; disco a ser lido
lea bx,setor ; local onde armazenar o setor
int 13h ; interrupcao de acesso a disco
ret
rw_setor endp


cod_seg ends


data_seg segment public
73


setor db 512 dup(0)
nome_arq db "A:\MBR.DAT",00
handle dw ?
opcao db ?
cab1 db " Ler/Grava registro MBR $"
s_menu db "1 - Salva MBR",0ah,0dh
db "2 - Recupera MBR",0ah,0dh
db "3 - Sair",0ah,0dh
db "Opcao..: $"
msg_opcao db "Opcao invalida $"
msg_arq db "Erro ao acessar MBR.DAT $"
msg_ok db "Operacao realizada com sucesso. Aperte uma tecla... $"
msg_mbr db "Registro MBR invalido $"

data_seg ends

end menu
74

APNDICE F ES_Video.asm


; Programa: ES_Video.ASM

; Autor: Edmilson Porto Santos
; Data: 10/2002
; Finalidade: Tratamento de impressao das rotinas
; de entrada e saida de video.
;

cod_seg segment
assume cs:cod_seg

;-----------------------------------------------------------------------------
; Rotina para impressao de nmeros hexadecimais
;-----------------------------------------------------------------------------

public Imp_Hexa

Imp_Hexa proc near
push cx ; salva registradores
push dx
mov dh,dl ; salva conteudo de dl
mov cx,4h ; usado no deslocamento de bit
shr dl,cl
call Imp_Dig_Hexa ; imprime primeiro caracter hexa
mov dl,dh
and dl,0fh
call Imp_Dig_Hexa ; imprime segundo caracter hexa
pop dx
pop cx
ret
Imp_Hexa endp


;-----------------------------------------------------------------------------
; Rotina para impressao de digitos hexadecimais
;-----------------------------------------------------------------------------

public Imp_Dig_Hexa

Imp_Dig_Hexa proc near
push dx
cmp dl,10 ; caracter > 10
jae letra_hexa ; Sim. converte para letra
add dl,"0" ; Nao. converte para nmero
jmp short imp_digito ; imprime caracter
75

letra_hexa:
add dl,"A"-10
imp_digito:
call imp_car
pop dx
ret
Imp_Dig_Hexa endp


;-----------------------------------------------------------------------------
; Rotina para impressao de caracteres no video
;-----------------------------------------------------------------------------

public Imp_Car

Imp_Car proc near
push ax
push dx
cmp dl,32 ; se caracter < 32 ascii
jae impresso ; nao imprime
mov dl,"." ; e muda para ponto
impresso:
mov ah,02 ; chama funcao imprimir video
int 21h ; imprime caracter de dl
pop dx ; recupera valor de ax
pop ax
ret ; e retorna
Imp_Car endp



;-----------------------------------------------------------------------------
; Rotina para impressao de nmeros decimais
; ax:dx recebem valores para impressao
;-----------------------------------------------------------------------------

public Imp_Decimal

Imp_Decimal proc near
push ax ; salva registradores
push cx
push dx
push si
mov si,10 ; usado na divisao por 10
xor cx,cx ; zera contador da pilha
mov bx,dx ;
nao_zero:
xor dx,dx ; zera conteudo de dx
xchg bx,ax
div si ; divide parte alta por 10
76

xchg bx,ax ; coloca parte baixa em ax
div si ; divide parte baixa por 10
push dx ; guarda digito na pilha
inc cx ; incrementa contador de pilha
mov dx,ax
or dx,bx ; testa se existe nmero
jnz nao_zero ; continua se houver
loop_8:
mov dx,-23 ; completa nmero com brancos
push dx ; para dez digitos
inc cx
cmp cx,0ah
jnz loop_8
imp_dig_loop:
pop dx
call imp_dig_hexa
loop imp_dig_loop
Fim_Decimal:
pop si
pop dx
pop cx
pop ax
ret
Imp_Decimal endp


Cod_seg ends

end
77

APNDICE F Cursor.asm


; Programa: Cursor.asm
; Autor: Edmilson Porto Santos
; Data: 10/2002
; Finalidade: Posicionamento do cursor na tela
;

CR equ 13
LF equ 10

cgroup group cod_seg
assume cs:cgroup


cod_seg segment public

public limpa_tela

;-----------------------------------------------------------------------------
; Rotina para limpeza de tela
;-----------------------------------------------------------------------------

limpa_tela proc near
push ax
push bx
push cx
push dx

xor al,al ; limpa tela
xor cx,cx ; define coordenadas
mov dh,24
mov dl,79
mov bh,07 ; define atributo de cor

mov ah,06 ; chama funcao
int 10h ; limpa tela

mov bh,0 ; pagina de video 0
xor dx,dx ; define topo do video
mov ah,02 ; chamada para
int 10h ; posicionar o cursor

pop dx
pop cx
pop bx
78

pop ax
ret
limpa_tela endp


public envia_CRLF

;-----------------------------------------------------------------------------
; Rotina para mudana de linha e retorno de carro
;-----------------------------------------------------------------------------

envia_CRLF proc near
push ax
push dx
mov ah,02
mov dl,CR
int 21h
mov dl,LF
int 21h
pop dx
pop ax
ret
envia_CRLF endp

cod_seg ends

end

79

GLOSSRIO



ASCII America Standard Code for Information Interchange. Padro Americano para
Intercambio de Informao. Consiste em uma tabela de caracteres (128 o 256) com
seus cdigos correspondentes.

BIOS Basic Input Output System. Sistema Bsico de Entrada Sada. Programa gravado
em eprom que serve de interface entre o hardware e o software.

BIT BInary digiT. Digito Binrio. A menor unidade de informao utilizada em
informtica. Corresponde a 0 (zero) ou 1 (um), ligado/desligado.

BYTE Um conjunto de 8 (oito) bits. Um byte uma unidade que determina uma
informao, que pode ser um caractere ou um cdigo.

DOS Disk Operational System. Sistema Operacional em Disco. Software bsico que
serve de mediador entre o usurio e o microcomputador.

FAT File Allocation Table. Tabela de Alocao de Arquivos. Sistema de arquivos usado
pelo DOS (principalmente).

HD Hard Disk. Disco rgido. Meio de armazenamento conhecido tambm como
memria secundaria.

IDE Integrated Drive Electronics, tambm conhecido como ATA. Padro de
controladora de dispositivos de entrada e sada, muito utilizado para controlar
discos rgidos e CD-ROM, etc.


INT BIOS Conjunto de instrues ou servios embutidos na prpria maquina e residentes na
memria ROM dos computadores.

INT DOS Conjunto de instrues ou servios inerentes ao sistema operacional.

LBA Logical Block Address. Utilizado no acesso a discos de grande capacidade.

RAM Random Access Memory. Memria de Acesso Randmico. Local onde so
carregados os programas a serem executados. Memria voltil que se perde ao
desligar o microcomputador.

ROM Read Only Memory. Memria Apenas de Leitura. Contem os programas de
inicializao do microcomputador. Memria no voltil.

80

SCSI Small Computer System Interface. Interface de transferencia de dados de alta
velocidade, podendo ser conectado diversos dispositivos como discos, scaners,
CD-ROM e outros.

SO Sistema Operacional. Idem ao DOS.

WWW World Wide Web (teia de alcance mundial). A parte da Internet que pode conter
documentos de hipertexto. Alm desta navegao peculiar, os documentos podem
ainda misturar texto com imagens, sons e vdeo.




81

REFERNCIAS BIBLIOGRFICAS



HOLZNER, Steven. Linguagem Assembly Avanada para IBM PC. Traduo J. G. Neto;
reviso tcnica Jeremias R. D. Pereira dos Santos. So Paulo : McGraw-Hill, 1990. 520p.

KAULER, Barry. Windows Assembly Language and Systems Programming. Laurence,
Kansas : R&D Books, 1997. 419p.

KOZIEROSK, Charles M. The PC Guide. [on line] 2001 . Disponvel na Internet via
WWW.URL: < http://www.pcguide.com/ref/mbsys/bios/bootPOST-c.html>. Acesso em
29/10/2002.

LANDIS, Hale. Information, Test Software and Consulting Service for Developers of
Products Using ATA (IDE/EIDE), ATAPI and Others Interfaces. [on line] 2002.
Disponvel na Internet via WWW.URL: < http://www.ata-atapi.com>. Acesso em 18/10/2002.

MEFANO, Arnaldo. DISCOS Rgidos e Tecnologia. [on line] 2000. Disponvel na Internet
via WWW.URL: <http://www.csolutions.com.br/notastec/Not1015/notas1015.htm> . Acesso
em 23/08/2002

MORIMOTO, Carlos E. Guia do Hardware.Net. [on line] 2001. Disponvel na Internet via
WWW.URL: < http://www.guiadohardware.info/curso/hardware/05.asp>. Acesso em
11/08/2002.

NORTON, Peter. Guia do Programador para IBM PC. Traduo de Daniel Vieira. Rio
de Janeiro : Editora Campus, 1989. 400p.

_________ ______. Linguagem Assembly para IBM PC / Peter Norton e Jonhn Socha;
Traduo de Daniel Vieira. Rio de Janeiro : Editora Campus, 1988. 304p.

ONTRACK. Data Recovery and award-winning PC utilities by Ontrack Data
International. [on line]. Disponvel na Internet via WWW.URL: <http://www.ontrack.com/>.
Acesso em 02/08/2002.

82

RAMALHO, Jos Antonio. Como o Norton Utilities e PC Tools recuperam arquivos
apagados. Informtica Exame. Maio 1992.

RYNCHEK, Tracy A. Autorizao para uso do EasyRecovery [mensagem pessoal].
Mensagem enviada por <trynchek@krollontrack.com>. Em 27/09/2002.

SANTOS, Jeremias Pereira dos. Programando em Assembler 8086/8088 / Jeremias Ren
Descartes Pereira dos Santos, Edison Raymundi Jnior So Paulo : McGraw-Hill. 1989.
327p.

SILBERSCHATZ, Abraham. Sistemas Operacionais : conceitos e aplicaes / Abraham
Silberschatz, Peter Galvin, Greg Gagne; traduo de Adriana Rieche. Rio de Janeiro :
Campus, 2000. 585p.

STRAUB, Ulrich. BOOT-US The boot manager simply for everyone!. [on-line] 2002.
Disponvel na Internet via WWW.URL: <http://www.boot-us.com/glossary.htm>. Acesso em
10/11/2002

SYMANTEC, Inc. Norton SystemWorks 2002. [on line]. Disponvel na Internet via
WWW.URL: <http://www.symantec.com/sabu/sysworks/pro/>. Acesso em 02/08/2002

TANENBAUM, Andrew S. Modern Operating System / Andrew S. Taneanbaum; New
Jersey : Prentice Hall, 1992. 728p.

______________________. Sistemas Operacionais : projeto e implementao / Andrew S.
Tanenbaum, Albert S. Woodhull; traduo de Edson Furmankiewicz. - 2 ed. Porto Alegre :
Bookman, 2000. 759p.

TORRES, Gabriel. REMOVENDO bad blocks de Discos Rgidos. [on line] 2000.
Disponvel na Internet via WWW.URL:
<http://www.drivermedia.kit.net/removebadblock.htm>. Acesso em 31/08/2002