Tutorial 1: Detecção de arquivos de classe Java

Este tutorial fornece instruções para o uso do utilitário analisador de tipo de arquivo a fim de analisar um conjunto de dados e determinar os bytes mágicos. Demonstra também como usar a linguagem de script para criar e testar uma solução.
Neste primeiro tutorial, você analisa e detecta arquivos de classe Java. Este tutorial supõe que você use a versão da GUI baseada em Windows do utilitário analisador de tipo de arquivo.
  1. Instale o utilitário analisador de tipo de arquivo.
  2. Inicie o utilitário analisador de tipo de arquivo.
  3. Prepare o conjunto de dados para este exemplo.
    Copie diversos (15 ou mais) arquivos de classe Java (*.class) para um diretório em seu sistema de arquivos. (Para fins deste tutorial, o diretório que é usado é C:\temp\JavaClassFiles.)
    Além disso, para assegurar que seu script corresponda apenas a arquivos de classe Java, adicione alguns arquivos de classe não Java ao mesmo diretório.
  4. Adicione o diretório do conjunto de dados ao utilitário analisador de tipo de arquivo.
    No utilitário analisador de tipo de arquivo, clique em
    Adicionar diretório
    . Procure e selecione o diretório para onde você copiou os arquivos e clique em
    Abrir
    .
  5. No campo
    Filtro de nome do arquivo
    , digite uma expressão regular para filtrar os arquivos.
    Por exemplo, a seguinte expressão regular filtra todos os arquivos no diretório selecionado:
    [\w\s]+.[\w]+
    • (
      \w
      ) Qualquer caractere alfanumérico, dígito ou sublinhado
    • (
      \s
      ) Qualquer espaço em branco
    • (
      +
      ) Um ou mais dos caracteres anteriores devem ter correspondência
    • (
      .
      ) Qualquer caractere único, inclusive ele mesmo
    Você pode precisar ajustar esta expressão para encontrar os arquivos que deseja analisar no diretório especificado. Por exemplo, se um nome de arquivo contiver um traço (-), ajuste a expressão da seguinte maneira:
    [\w\s-]+.[\w]+
  6. No campo
    Número de bytes
    , digite
    1024
    .
    Os bytes mágicos de um arquivo quase sempre estão contidos nos primeiros 1.024 bytes de um arquivo. Se você quiser analisar mais do que os primeiros 1.024 bytes de dados, é necessário aumentar o número de bytes que o utilitário analisador do tipo de arquivo pode ler e exibir.
  7. Para o
    Tamanho do bloco
    , digite
    1
    .
  8. Para o
    Tipo do analisador
    , selecione
    BYTE
    .
  9. Se os arquivos que você deseja filtrar estiverem em diretórios aninhados, selecione a opção
    Verificação recorrente
    .
    Se você selecionar a opção Verificação recorrente ou tiver um grande conjunto de dados, aumente o tamanho da pilha de Java alocada para o utilitário analisador de tipo de arquivo.
  10. Clique em
    Analisar conjunto de dados
    . O utilitário analisa todos os arquivos no diretório e exibe os resultados. O utilitário organiza cada arquivo por guias de acordo com sua extensão. Na guia
    Tudo
    , o utilitário exibe todos os arquivos filtrados. Na guia
    .class
    , o utilitário exibe apenas os arquivos de classe Java.
  11. Clique em
    Analisar tabela de dados
    novamente. Desta vez, o utilitário destaca os bytes dentro de cada arquivo correspondentes a todos os arquivos.
    Como você pode ver, para arquivos de classe Java há vários bytes em comum, inclusive os primeiros quatro (0 a 3):
    CA FE BA BE
    . Estes bytes são os bytes mágicos para arquivos de classe Java.
    No menu suspenso, na parte inferior, você pode alterar a forma com que o utilitário analisa os dados da tabela. A opção padrão é COLUMN_MATCH, que geralmente fornece a correspondência mais exata. Se você trocar para este modo de análise, precisará clicar em
    Analisar tabela de dados
    novamente para ver os bytes correspondentes por linha.
  12. Agora que você sabe o que os bytes mágicos significam para arquivos de classe Java, pode criar um script para detectar este tipo de arquivo. Depois você pode testar seu script usando o utilitário analisador de tipo de arquivo.
    No campo
    Solução
    , digite o seguinte script para detectar os arquivos de classe Java:
    $Int1 = getHexStringValue('CAFE'); $Int2 = getBinaryValueAt($data, 0x0, 2); assertTrue($Int1 == $Int2); $Int3 = getHexStringValue('BABE'); $Int4 = getBinaryValueAt($data, 0x2, 2); assertTrue($Int3 == $Int4);
  13. Clique em
    Testar solução
    . Na parte superior da interface, você verá os
    Arquivos correspondentes
    . Apenas os arquivos que contêm os bytes mágicos de CAFE BABE são exibidos na seção “Arquivos correspondentes” da interface. Os arquivos que não contêm esses bytes mágicos são exibidos na seção
    Arquivos sem correspondência
    na metade inferior da interface.
    • Quando você analisar o conjunto de dados, o utilitário analisador de tipo de arquivo indicará que os primeiros dois bytes de um arquivo de classe Java são CA FE. Portanto, na primeira instrução do script você atribui esse valor como uma string hexadecimal à variável
      $Int1
      .
    • Na segunda instrução do script, você obtém os primeiros dois bytes de cada arquivo e atribui esse valor à variável
      $Int2
      . A parte “0x0, 2" da instrução avisa o mecanismo de script para iniciar no primeiro byte e obter os dois primeiros.
    • Na terceira instrução, você compara os valores das duas variáveis e procura uma correspondência.
    • O processo é repetido para o terceiro e o quarto byte (“0x2, 2"), procurando uma correspondência em BA BE. Os arquivos que correspondem a ambas as avaliações são detectáveis pelo script e exibidos na parte de “Arquivos correspondentes” da interface.
  14. Na seção
    Nota
    , digite um comentário sobre a solução, como "
    Script personalizado para detecção de arquivos de classe Java
    ".
  15. Na interface do analisador de tipo de arquivo, selecione
    Arquivo > Salvar
    . Dê um nome ao arquivo e salve-o em um diretório local, como
    C:\temp\JavaClassFiles.fgi
    .
  16. Feche a interface do analisador de tipo de arquivo e reinicie-o. Selecione
    Arquivo > Abrir
    e depois procure e selecione o arquivo
    JavaClassFiles.fgi
    .
    Os parâmetros do conjunto de dados e a solução do script aparecem na interface. Daqui você pode reanalisar o conjunto de dados e refinar sua solução conforme a necessidade. Clique em
    Editar conjunto de dados
    para adicionar ou remover diretórios que contenham arquivos que você deseja analisar. Você também pode clicar com o botão direito do mouse em uma linha e remover um arquivo individual do conjunto de dados.
  17. Depois de depurar sua solução, implemente o script em uma instância da regra de Assinatura do tipo de arquivo personalizado. Depois você pode criar e implementar novas políticas que usam esta regra para detectar o tipo de arquivo personalizado.