Como eu extraio um arquivo X1?

3

Eu tenho um arquivo estranho sem uma extensão de arquivo que supostamente é um arquivo do conteúdo de um repositório git. De acordo com file (1) , é um "arquivo X1":

$ file my_git_repo 
my_git_repo: X1 archive data

No entanto, não consigo descobrir como extrair ou visualizar o conteúdo desse arquivo. Eu tentei:

  • tar
  • unzip
  • bzip2
  • xz
  • lzip
  • lzma
  • lzop
  • gzip
  • uncompress

Mas nenhuma dessas ferramentas reconhece meu arquivo. Eu também tentei procurar em Wikipedia e o Arch Wiki para ajuda, mas nenhuma destas páginas menciona" X1 ". Eu também tentei googling variações de "arquivo X1" ou "extrair arquivo X1", mas principalmente eu tenho resultados para produtos ou serviços chamado "X1", e nada que parecia relacionado a um formato de arquivo chamado "X1". Finalmente, tentei dar uma olhada no arquivo com ferramentas como strings , e o arquivo contém nomes de arquivos dos arquivos que espero estar em meu repositório git, assim como fragmentos de arquivos dentro desse repositório, então não acho este arquivo é apenas um dado aleatório ou qualquer coisa assim.

Que tipo de ficheiro tenho e como posso ver o seu conteúdo?

    
por jayhendren 19.04.2018 / 21:23

1 resposta

4

Ok, eu descobri este aqui.

Percebi que a primeira linha do arquivo contém uma string curiosa:

% head -n 1 my_git_repo | strings
X11 forwarding request failed on channel 0

Essa string parece familiar. Minha configuração SSH padrão tenta encaminhar as conexões X11, mas quando não o fizer - como ao executar as operações git para git servidores em ssh - essa string é impressa em stderr:

$ git archive --remote=ssh://[email protected]/my_git_repo.git master > my_git_repo.tar
X11 forwarding request failed on channel 0

Eu estou supondo que a biblioteca que criou o arquivo git capturou stdout e stderr ao invés de apenas stdout, o que explicaria como a primeira linha daquele arquivo surgiu.

Portanto, se eu remover a primeira linha desse arquivo, obtenho uma saída muito mais razoável de file (1) :

$ tail -n +2 my_git_repo > my_git_repo.edit
$ file my_git_repo.edit 
my_git_repo.edit: Zip archive data, at least v1.0 to extract

E se eu renomear o arquivo para my_git_repo.zip e tentar visualizar o conteúdo do arquivo com unzip -l , eu acho que ele contém os arquivos que eu espero, e quando eu extraio o arquivo com unzip , recebo os arquivos que eu quero.

Não tenho certeza de onde libmagic teve a ideia de que esse arquivo era um "X1 archive" para começar, mas suponho que tenha a ver com "X1" sendo os dois primeiros caracteres do arquivo corrompido .

    
por 19.04.2018 / 22:00