O Diretório Raiz

O Diretório raiz faz referência a todos os ficheiros de metadados nos seus registos iniciais e só depois aos diretórios para que aponta. Porque é muito longo, está representado em duas partes.

Descritor do Diretório Raiz.

Figura-12-37
Figura 37

Descritor de ficheiro do tipo INDEX – Para a interpretação destes dados vamos ter que introduzir o conceito de INDEX. Como também é um ficheiro, tem um descritor , que se deve ler como consta da tabela da figura 37 e da sua edição hexadecimal na figura 36.

  • 30000h a 30003h – Assinatura – INDX.
  • 30004h a 30006h – Offset para a update sequence – 28h, começando portanto em 30000h+28h=30028h.
  • 30006h a 30008h – Tamanho da update sequence em palavras – 9 no nosso caso – sendo 1 para o update number e 8 para a sequência (Os ficheiros Index ocupam 1 Cluster ou múltiplos de Clusters).
  • 30008h a 3000AFh – Nº de sequência do $LogFile.
  • 30010h a 30017h – VCN deste buffer na alocação deste INDEX – 0 no nosso caso,pois é só um cluster.
  • 30018h a 3001Bh – Offset para as entradas de índice – 28h no nosso caso. Este offset é relativo a este ponto pelo que o início das entradas de índice será 30018h + 28h = 30040h.
  • 3001Ch a 3001Fh – Tamanho das entradas de índice – 0A60h ou 2656 bytes. Este valor também é relativo a 30018h, devendo as entradas de índice terminar em 30018h + A60h = 30A78h, o que se verifica no final da figura 36.
  • 30020h a 30023h – Tamanho alocado para entradas de índice – 0FE8h (este valor também é relativo a 30018h, sendo o valor de 18h + FE8h = 1000h = 4.096 Bytes (1 cluster).
  • 3024h – Determina se este nó tem filhos – 1 se sim, o que é o nosso caso.
  • 3025h a 3027h – Padding.
  • 3028h e 3029h – Update sequence number – 9B 00 no nosso caso. Será este número que se repetirá no fim de todos os setores deste cluster.
  • 302Ah a 3039h – Update Sequence Array – Representa o valor dos últimos 2 Bytes de cada um dos 8 setores substituídos pelo update number (9B 00), ou seja   CA 01  CA 01  00 00  CA 01  00 00  00 00  00 00  00 00

Registos de Índice do Diretório Raiz

Figura-12-38
Figura 38

Vamos agora passar para a interpretação dos registos de índice, o que vamos fazer de acordo com a tabela da figura 38, a edição hexadecimal das figura 36 e 40 (como é muito longo foi separado em duas figuras) e a equivalente imagem do Windows Explorer para a mesma indexação na figura 39, mostrando todos os níveis de indexação desde a raíz até ao ficheiro procurado.

O 1º registo indexa $AttrDef, no offset 30040h,

  • na entrada 04h (4) da MFT,
  • com o tamanho de 68h (104 bytes). A próxima entrada inicia-se no offset 30040h + 68h = 300A8h.
  • O offset para final do nome é de 52h. Este offset é relativo ao próximo alinhamento a 8 bytes (10h relativo ao registo) e indica também o final do espaço realmente ocupado pelo registo.
  • O diretório Pai está na entrada 05h da MFT, o diretório raiz.
  • Vem depois a referência às várias datas de criação, modificação, alteração da MFT e último acesso.
  • O tamanho alocado do ficheiro é 1000h (4.096 bytes).
  • O tamanho real é 0A00h (2.560 bytes).

Corresponde ao que já analisámos do ficheiro. Os dados não residentes são a lista e definição dos atributos.

  • O tamanho do nome do ficheiro é 08h (8),
  • no namespace Win32 e DOS (03).

Uma observação sobre as referências à MFT, compostas por 8 Bytes:

  • Os primeiros 6 Bytes referem-se à entrada na MFT;
  • Os últimos 2, ao número de sequência, que em caso de consistência do sistema devem ser iguais ao número de sequência do ficheiro referenciado.

O 2º registo indexa $BadClus, no offset 300A8h,

  • na entrada da MFT 08h (8),
  • com o tamanho de 68h (104 bytes). A próxima entrada inicia-se no offset 300A8h + 68h = 30110h.
  • O tamanho alocado e o tamanho real são 0.
  • O tamanho do nome do ficheiro é 08h (8),
  • no namespace Win32 e DOS (03).

O 3º registo indexa $BitMap, no offset 30110h,

  • na entrada da MFT 06h (6),
  • com o tamanho de 60h (96 bytes). A próxima entrada inicia-se no offset 30110h + 60h = 30170h.
  • O tamanho alocado e o tamanho real são 0.
  • O tamanho do nome do ficheiro é 08h (8),
  • no namespace Win32 e DOS (03).

O 4º registo indexa o ficheiro $Boot, no offset 30170h,

  • na entrada da MFT 07h (7),
  • com o tamanho de 60h (96 bytes). A próxima entrada inicia-se no offset 30170h + 60h = 301D0h.
  • O tamanho alocado é 2000h (8.182 bytes ou 2 clusters).
  • O tamanho real é igual.
  • O tamanho do nome do ficheiro é 05h (5),
  • no namespace Win32 e DOS (03).
Figura-12-36
Figura 36

O 5º registo indexa $Extend, no offset 301D0h,

  • na entrada da MFT 0Bh (11),
  • com o tamanho de 60h (96 bytes). A próxima entrada inicia-se no offset 301D0h + 60h = 30230h.
  • O tamanho alocado e o tamanho real são 0.
  • O tamanho do nome do ficheiro é 07h (7),
  • no namespace Win32 e DOS (03).

O 6º registo indexa $LogFile, no offset 30230h,

  • na entrada da MFT 02h (2),
  • com o tamanho de 68h (104 bytes). A próxima entrada inicia-se no offset 30230h + 68h = 30298h.
  • O tamanho alocado e o tamanho real são de 4000000h, ou 67.108.864 bytes. Este espaço é indexado na sua entrada na MFT.
  • O tamanho do nome do ficheiro é 08h (8),
  • no namespace Win32 e DOS (03).

O 7º registo indexa o ficheiro $MFT, no offset 30298h,

  • na entrada da MFT 00h (0),
  • com o tamanho de 60h (96 bytes). A próxima entrada inicia-se no offset 30298h + 60h = 302F8h.
  • O tamanho alocado e o tamanho real são de 1DC0000h, ou 31.195.136 bytes. Este espaço está indexado na sua entrada na MFT, em dois blocos de dados com os offset que também, já vimos.
  • O tamanho do nome do ficheiro é 04h (4),
  • no namespace Win32 e DOS (03).

O 8º registo indexa $MFTMirr, no offset 302F8h ,

  • na entrada da MFT 01h (1),
  • com o tamanho de 68h (104 bytes). A próxima entrada inicia-se no offset 302F8h + 68h = 30360h.
  • O tamanho alocado e o tamanho real são de 1000h, ou 4.096 bytes ou 1 cluster.
  • O tamanho do nome do ficheiro é 04h (4),
  • no namespace Win32 e DOS (03).

O 9º registo indexa $RECYCLE.BIN, no offset 30360h,

  • na entrada da MFT 28h (40),
  • com o tamanho de 70h (112 bytes). A próxima entrada inicia-se no offset 30360h + 70h = 303D0h.
  • O tamanho alocado e o tamanho real são 0.
  • O tamanho do nome do ficheiro é 0Ch (12), 8+12+extensão, no namespace Win32 e DOS (03).

O 10º registo indexa $Secure, no offset 303D0h,

  • na entrada da MFT 09h (9),
  • com o tamanho de 60h (96 bytes). A próxima entrada inicia-se no offset 303D0h + 60h = 30430h.
  • O tamanho alocado e o tamanho real são 0.
  • O tamanho do nome do ficheiro é 07h (7),
  • no namespace Win32 e DOS (03).

O 11º registo indexa $UpCase, no offset 30430h ,

  • na entrada da MFT 0Ah (10),
  • com o tamanho de 60h (96 bytes). A próxima entrada inicia-se no offset 30430h + 60h = 30490h.
  • O tamanho alocado e o tamanho real são 20000h ou 131.072 bytes ou 32 clusters.
  • O tamanho do nome do ficheiro é 07h (7),
  • no namespace Win32 e DOS (03).

O 12º registo indexa $Volume, no offset 30490h,

  • na entrada da MFT 03h (3),
  • com o tamanho de 60h (96 bytes). A próxima entrada inicia-se no offset 30490h + 60h = 304F0h.
  • O tamanho alocado e o tamanho real são 0.
  • O tamanho do nome do ficheiro é 07h (7),
  • no namespace Win32 e DOS (03).

O 13º registo indexa-se a si mesmo, no offset 304F0h,

  • na entrada da MFT 05h (5). É o Diretório Pai desta gentalha toda.
  • Com o tamanho de 58h (88 bytes). A próxima entrada inicia-se no offset 304F0h + 58h = 30548h.
  • O tamanho alocado e o tamanho real são 0.
  • O tamanho do nome do ficheiro é 01h (1),
  • no namespace Win32 e DOS (03).
Figura 12.39 - Imagem do Explorador do Windows com os vários níveis de indexação desde o Diretório Raiz até ao ficheiro Picture4.jpg
Figura 39

Este registo indexa o Diretório raiz, de seu nome próprio . (ponto), presente na entrada 05h da MFT e com o seu diretório Pai presente na mesma entrada, ele próprio.

Todos os registos têm os mesmos campos referidos para o registo 1, mas só incluímos aqueles que podem ter alguma leitura para o conhecimento do tipo de ficheiro indexado.

Entramos agora nas referências aos nossos diretórios e ficheiros dentro do diretório raiz. Para que melhor se entenda o percurso a partir daqui, vamos juntar a imagem do explorador do Windows que contém todos os vários grupos de indexação desde o diretório raiz até ao ficheiro procurado, conforme a figura 39 e a sua legenda.

O 14º registo indexa As Minhas Músicas, no offset 30548h,

  • Entrada da MFT 27h (39).
  • Tamanho de 78h (120 bytes). A próxima entrada inicia-se no offset 30548h + 78h = 305C0h.
  • O offset para final do nome é de 64h. Este offset é relativo ao próximo alinhamento a 8 bytes (10h relativo ao registo) e indica também o final do espaço realmente ocupado pelo registo.
  • O diretório Pai está na MFT 5h, o diretório raiz.
  • Vem depois referência às várias datas de criação, modificação, alteração da MFT e último acesso, os tamanhos alocado e real do ficheiro.
  • O tamanho do nome do ficheiro tem 11h (17) carateres de comprimento (As Minhas Músicas) no namespace Win32 (01).
  • Significa que haverá outra descrição do mesmo ficheiro para o namespace DOS, que é o registo que segue.

O 15º registo indexa ASMINH~1, no offset 305C0h,

  • na entrada da MFT 27h (39 – a mesma),
  • com o tamanho 68h (104 bytes). A próxima entrada inicia-se no offset 305C0h + 68h = 30628h,
  • o offset para o final do nome é de 52h,
  • o tamanho do nome é 8,
  • agora no namespace DOS (02),

O 16º registo indexa Imagens P20, no offset 30628h,

  • na entrada da MFT 51BDh (20.925),
  • com o tamanho 68h (104 bytes). A próxima entrada inicia-se no offset 30628h + 68h = 30690h,
  • o offset para o final do nome é de 58h,
  • o tamanho do nome é 0B (11),
  • no namespace Win32 (01).

O 17º registo indexa Imagens PC, no offset 30690h,

  • na entrada da MFT 51BCh (20.924),
  • com o tamanho 68h (104 bytes). A próxima entrada inicia-se no offset 30690h + 68h = 306F8h,
  • o offset para o final do nome é de 56h,
  • o tamanho do nome é 0A (10),
  • no namespace Win32 (01).
Figura-12-40
Figura 40

O 18º registo indexa IMAGEN~1, no offset 306F8h,

  • na entrada da MFT 51BDh (20.925),
  • com o tamanho 68h (104 bytes). A próxima entrada inicia-se no offset 306F8h + 68h = 30760h,
  • o offset para o final do nome é de 52h,
  • o tamanho do nome é 8,
  • no namespace DOS (02).

O 19º registo indexa IMAGEN~2, no offset 30760h,

  • na entrada da MFT 51BCh (20.924),
  • com o tamanho 68h (104 bytes). A próxima entrada inicia-se no offset 30760h + 68h = 307C8h,
  • o offset para o final do nome é de 52h,
  • o tamanho do nome é 8,
  • no namespace DOS (02).

O 20º registo indexa System Volume Information, no offset 307C8h,

  • na entrada da MFT 24h (36),
  • com o tamanho 88h (136 bytes). A próxima entrada inicia-se no offset 307C8h + 88h = 30850h,
  • o offset para o final do nome é de 74h,
  • o tamanho do nome é 19 (25),
  • no namespace Win32 (01).

O 21º registo indexa SYSTEM~1, no offset 30850h,

  • na entrada da MFT 24h (36),
  • com o tamanho 68h (104 bytes). A próxima entrada inicia-se no offset 30850h + 68h = 308B8h,
  • o offset para o final do nome é de 52h,
  • o tamanho do nome é 8,
  • no namespace DOS (02).

O 22º registo indexa Todas as Imagens, no offset 308B8h,

  • na entrada da MFT 51BEh (20.926),
  • com o tamanho 78h (120 bytes). A próxima entrada inicia-se no offset 308B8h + 78h = 30930h,
  • o offset para o final do nome é de 62h,
  • o tamanho do nome é 10h (16),
  • no namespace Win32 (01).

O 23º registo indexa TODASA~1, no offset 30930h,

  • na entrada da MFT 51BEh (20.926),
  • com o tamanho 68h (104 bytes). A próxima entrada inicia-se no offset 30930h + 68h = 30998h,
  • o offset para o final do nome é de 52h,
  • o tamanho do nome é 8,
  • no namespace DOS (02).

O 24º registo indexa Tutoriais, no offset 30998h,

  • na entrada da MFT 0923h (2.339),
  • com o tamanho 68h (104 bytes). A próxima entrada inicia-se no offset 30998h + 68h = 30A00h,
  • o offset para o final do nome é de 54h,
  • o tamanho do nome é 09h (9),
  • no namespace Win32 (01).

O 25º registo indexa TUTORI~1, no offset 30A00h,

  • na entrada da MFT 0923h (2.339),
  • com o tamanho 68h (104 bytes). A próxima entrada inicia-se no offset 30998h + 68h = 30A00h,
  • o offset para o final do nome é de 52h,
  • o tamanho do nome é 08h (8),
  • no namespace DOS (02).

O 26º registo, entre 30A68h e 30A77h, não tem referência a entrada na MFT e a flag 02 indica que é o último registo deste INDEX.

Com a leitura destas entradas de índice, o sistema ficou a conhecer os ficheiros que pertencem ao diretório raiz e os nós (diretórios) seguintes na árvore. Esses por sua vez vão-nos levar a outros ficheiros ou a outros nós e assim sucessivamente, abrangendo todo o conteúdo dos Volumes do computador.

Mas vamos lá devagar. Foi dessa forma que obtivermos a entrada da MFT onde se encontra referido o nó seguinte no nosso caminho, o qual pode ser acompanhado na figura 39.

É o 22º registo do Diretório Raiz, aquele que aponta para o nó que se segue no ramo da árvore que conduz ao nosso ficheiro. Vamos então passar à análise dessa entrada da MFT ( a 20.926) que define este 22º registo e iniciar o nosso caminho.