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.
- Instale o utilitário analisador de tipo de arquivo.
- Inicie o utilitário analisador de tipo de arquivo.
- 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.
- 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 emAdicionar diretório. Procure e selecione o diretório para onde você copiou os arquivos e clique emAbrir.
- No campoFiltro 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]+ - No campoNúmero de bytes, digite1024.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.
- Para oTamanho do bloco, digite1.
- Para oTipo do analisador, selecioneBYTE.
- Se os arquivos que você deseja filtrar estiverem em diretórios aninhados, selecione a opçãoVerificaçã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.
- Clique emAnalisar 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 guiaTudo, o utilitário exibe todos os arquivos filtrados. Na guia.class, o utilitário exibe apenas os arquivos de classe Java.
- Clique emAnalisar tabela de dadosnovamente. 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 emAnalisar tabela de dadosnovamente para ver os bytes correspondentes por linha.
- 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 campoSoluçã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);
- Clique emTestar solução. Na parte superior da interface, você verá osArquivos 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çãoArquivos sem correspondênciana 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.
- Na seçãoNota, digite um comentário sobre a solução, como "Script personalizado para detecção de arquivos de classe Java".
- Na interface do analisador de tipo de arquivo, selecioneArquivo > Salvar. Dê um nome ao arquivo e salve-o em um diretório local, comoC:\temp\JavaClassFiles.fgi.
- Feche a interface do analisador de tipo de arquivo e reinicie-o. SelecioneArquivo > Abrire depois procure e selecione o arquivoJavaClassFiles.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 emEditar conjunto de dadospara 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.
- 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.