| A ferramenta unrm é capaz de
copiar os blocos de dados de um sistema de arquivos, e em sua execução
padrão, ele extrai apenas os blocos de dados não alocados do sistema
de arquivos. Essa ferramenta é utilizada para tentar recuperar informações
apagadas. É importante redirecionar a saída do programa unrm para
outro sistema de arquivos diferente do analisado, caso contrário,
o fluxo de bits gerado irá ocupar os blocos não alocados que deveriam
ser extraídos, possivelmente sobrescrevendo as informações procuradas.
O resultado da execução do programa unrm é apenas um enorme fluxo
de bits sem qualquer sentido aparente. Para tentar reconstruir arquivos
apagados ou outros tipos de dados a partir de um fluxo de bits qualquer,
o TCT possui uma ferramenta chamada lazarus, que pega os dados produzidos
pela ferramenta unrm e tenta criar alguma estrutura a partir de
dados não estruturados. O processo de análise realizado pelo programa
lazarus realiza os seguintes passos:
- Leitura de um bloco de dados da entrada (tipicamente
são lidos blocos de 1024 bytes);
- Determinação do formato dos dados contidos no bloco lido – texto
ou binário. Isso e feito pela checagem dos dados contidos nos 10%
iniciais do bloco. Se eles são todos caracteres que podem ser impressos,
o conteúdo é classificado como texto, caso contrário o programa
assume que se trata de um bloco com dados binários;
- Se o bloco contém texto, o programa testa os dados contra um conjunto
de expressões regulares para tentar determinar do que se trata;
- Se o bloco contém dados binários, o comando file é executado sobre
o bloco. Se não há sucesso, os primeiros bytes do bloco são examinados
para determinar se os dados parecem estar no formato ELF (representando
um binário executável);
- Se o bloco (contendo dados binários ou texto) é reconhecido nos
passos anteriores como sendo de um determinado tipo, ele é marcado
como tal. Se esse bloco e de um tipo diferente do bloco processado
anteriormente, então ele é salvo como um novo arquivo. Caso contrário,
ele e concatenado ao bloco anterior. Se o bloco não é reconhecido
nos passos anteriores, mas é posterior a um bloco reconhecido, o
programa assume que o bloco em questão é uma continuação dos dados
contidos no bloco reconhecido e, portanto, o concatena ao bloco
anterior (considerando o Princıpio da Localidade);
A saída produzida pelo programa lazarus corresponde aos blocos de
dados e um mapa dos blocos reconhecidos e seus respectivos tipos.
É possível gerar uma saída no formato HTML, contendo um mapa com
links que permitem navegar pelos dados interpretados.
|