O que devo saber antes de picar ao redor um arquivo desconhecido para as coisas?

StackOverflow https://stackoverflow.com/questions/295711

  •  08-07-2019
  •  | 
  •  

Pergunta

Um jogo que eu jogo lojas de todos os seus dados em um arquivo DAT. Houve algum trabalho feito por pessoas em examinar o arquivo. Há também algumas ferramentas existentes , mas eu não tenho certeza sobre seu estado atual. Eu acho que seria divertido para bisbilhotar nos dados de mim, mas eu nunca tentei examinar um arquivo, muito menos nada como isso antes.

Existe alguma coisa que eu deveria saber examinando um formato de arquivo para fins de extração de dados antes de mergulhar de cabeça para isso?

EDIT: Eu gostaria dicas muito gerais, como examinar formatos de arquivo parece interessante. Eu gostaria de ser capaz de tomar Arquivo X e aprender como abordar o problema de aprender sobre isso.

Foi útil?

Solução

  1. Você vai definitivamente quero um editor hexadecimal antes de você chegar muito longe. Ele permitirá que você veja os dados brutos como números em vez de como grandes blocos vazios em qualquer bloco de notas de fonte está usando (ou qualquer outro editor de texto).
  2. Tente abri-lo em quaisquer extratores de arquivo que você tem (ou seja, zip, 7z, rar, gz, tar etc.) para ver se ele é apenas um formato de arquivo renomeado (.PK3 é algo parecido).
  3. Procure cabeçalhos de formatos de arquivo conhecidos em algum lugar dentro do arquivo, que irá ajudá-lo a descobrir onde certas partes dos dados são armazenados (ou seja, fazer uma pesquisa para "IPNG" para encontrar qualquer (não comprimido) arquivos PNG em algum lugar dentro).
  4. Se você encontrar onde uma determinada peça de dados são armazenados, tomar nota de sua localização e duração, e veja se você pode encontrar um número igual a qualquer um desses valores próximos do início do arquivo, que normalmente agem como ponteiros para os dados reais.
  5. Algumas vezes você só tem que adivinhar ou intuir o que um determinado meio de valor, e se você estiver errado, bem, manter em movimento. Não há muito que você possa fazer sobre isso.
  6. Eu descobri que http://www.wotsit.org é particularmente útil para formatos de tipo de arquivo conhecidos, para ajudar a encontrar cabeçalhos dentro do arquivo .dat.

Outras dicas

Faça backup do arquivo primeiro. Uma vez que você restringe a quantidade de dano que você pode fazer, basta picar em torno de como Ed sugeriu.

Olhando para o seu nível de rep, eu acho uma cartilha básica sobre números hexadecimais, endianness, representações para vários tipos de dados, e tudo o que seria um pouco supérfluo. Uma boa ferramenta que pode mostrar os dados em hexadecimal é, naturalmente, essencial, como é a capacidade de escrever scripts rápidos para testar hipóteses complexas sobre a estrutura dos dados. Todos estes devem ser óbvio para você, mas talvez a ajuda de outra pessoa, então eu pensei que eu iria mencioná-los.

Uma das melhores maneiras de atacar os formatos de arquivo desconhecidos, quando você tem algum controle sobre o conteúdo é tomar uma abordagem diferencial. Salvar um arquivo, fazer uma pequena e controlada a mudança, e salvar novamente. Fazer uma comparação binária dos arquivos para encontrar a diferença - de preferência usando uma ferramenta que pode detectar inserções e deleções. Se você está lidando com um arquivo criptografado, uma pequena mudança irá provocar uma enorme diferença. Se é só comprimido, a diferença não será localizado. E se o formato do arquivo é trivial, uma simples mudança de estado irá resultar em uma simples alteração no arquivo.

A outra coisa é olhar para algumas das técnicas de compressão comuns, nomeadamente zip e gzip, e aprender suas "assinaturas". A maioria desses formatos são "auto-identificação" então, quando eles começam a descomprimir, eles podem fazer checagens rápidas que o que eles estão trabalhando é em um formato que eles entendem.

Restrição de criptografia, um formato de arquivo é basicamente algum tipo de mecanismo de indexação (um diretório ou sortes), e uma maneira localizada esses elementos de dentro do arquivo via ponteiros no índice.

Com o a onipresença dos algoritmos de compressão padrão, é principalmente uma questão de encontrar onde os blocos começar, e tentando caçar o índice ou tabela de conteúdos.

Alguns terão o índice de todos em um local (como um sistema de arquivos faz), outros simplesmente preceder cada elemento dentro do arquivo com as informações de identidade. Mas no algum lugar final, não há informações sobre deslocamentos de um bloco para outro, não há informações sobre tipos de dados (por exemplo, se eles estão armazenando arquivos GIF, GIF tem uma assinatura bem), etc.

Esses são os padrões que você está tentando caçar dentro do arquivo.

Seria bom se de alguma forma você pode obter sua mão em duas versões de dados usando o mesmo formato. Por exemplo, em um jogo, você pode ser capaz de obter a versão inicial do CD e, uma versão remendada mais recente. Estes podem realmente destacar a informação que você está procurando.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top