Como posso extrair arquivos de uma imagem de disco sem montá-la?

2

Digamos que eu tenha uma imagem de disco (possivelmente particionada) que eu tenha permissão para ler. No entanto, não tenho permissão para montá-lo via loopback *. Em teoria, os dados estão todos lá; Eu poderia escrever código que se assemelha ao kernel do Linux, editores de partições e o próprio código de mount para analisar a imagem, procurar por partições, interpretar o sistema de arquivos e extrair um arquivo. Mas essa ferramenta já existe para sistemas GNU / Linux?

* Realmente, estou na posição de escrever ferramentas para lidar com isso, e não quero (a) assumir que o usuário dessas ferramentas pode sudo e (b) exigir que elas sejam sudo onde talvez não seja necessário.

(Se a resposta mudar dependendo do sistema de arquivos, ext2-4 é mais importante para mim. Mas as respostas que cobrem múltiplos sistemas de arquivos populares serão preferidas.)

    
por detly 30.03.2018 / 12:18

1 resposta

1

ext [234]

Se no diretório raiz de / dev / o que for um arquivo foo :

debugfs -f <(echo cat /foo) /dev/whatever | tail -n +2 > /restore/file

abordagem geral

Uma abordagem geral seria criar uma VM com duas unidades de disco (arquivos no modo raw), sendo uma delas a imagem (fornecida à VM somente leitura) e outra para restaurar o arquivo (se você não puder usar a rede para transferindo-o).

Você deve ser capaz de inicializar a partir da imagem (se não: criar uma VM com três unidades de disco, uma para inicializar) e assim ser facilmente capaz de acessar o sistema de arquivos.

Como você não pode montar, você tem que escrever os dados de alguma forma que seja reconhecível sem um sistema de arquivos, por exemplo

tar -cf /dev/vdc /etc/passwd

No host, você pode simplesmente ler o arquivo de imagem:

tar -xf imagefile.img

tar reconhece o final do arquivo e ignora o restante do arquivo.

    
por 30.03.2018 / 19:37