Substitui um bloco binário dentro de um arquivo grande

1

Eu tenho uma imagem de partição que contém um arquivo de 1 MB preenchido com dados aleatórios, e gostaria de substituir o conteúdo desse arquivo por outro arquivo de 1 MB preenchido com dados aleatórios diferentes.

Eu fiz algo semelhante antes, criando um arquivo com uma string única conhecida e usando sed para substituí-lo. sed -i 's/foobar_corruptiontest/barfoo_corruptiontest/' partition.img

Para uma solução, imaginei algo como:

head -c 1M </dev/urandom >fileA
head -c 1M </dev/urandom >fileB
binary_sed -i 's/<fileA/<fileB/' partition.img

Eu encontrei uma ferramenta bbe que parece ser um editor sedutor para arquivos binários, mas a menos que eu esteja lendo o man page errado, ele não parece suportar entrada de arquivos?

Side-note: No caso de você estar muito confuso por que alguém iria querer fazer isso, o contexto é que estou testando verity corrompendo um arquivo de maneira previsível, mas não deve ter relevância para a questão. Na verdade, por favor, não considere isso em uma resposta.

    
por kcghost 17.05.2018 / 14:51

1 resposta

0

Encontrei uma solução decente mas, infelizmente, ela requer uma ferramenta não padrão para procurar o deslocamento do arquivo. Espero que alguém possa encontrar uma resposta melhor que use apenas ferramentas padrão.

Instale a ferramenta SearchBin .

head -c 1M </dev/urandom >fileA
head -c 1M </dev/urandom >fileB
OFFSET=$(searchbin -f fileA -m 1 partition.img | head -1 | awk '{print $4}')
dd if=fileB of=paritition.img bs=1 seek=${OFFSET} conv=notrunc
    
por 18.05.2018 / 14:12