Como extrair conteúdo de um único arquivo usando dois pontos especificados com dd?

0

Tirando de aqui , há uma parte esteganográfica em um arquivo de imagem chamado moon.png. Isso me levou a pensar, como eu extrairia um Zlib entre 944 e 411781 usando algo como dd.

$> binwalk moon.png 

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             PNG image, 600 x 593, 8-bit/color RGB, non-interlaced
290           0x122           Unix path: /www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef=
944           0x3B0           Zlib compressed data, best compression
411781        0x64885         Zip archive data, encrypted at least v1.0 to extract, compressed size: 35, uncompressed size: 23, name: flag.txt
411976        0x64948         End of Zip archive

O autor fez dd if=./moon.png of=./moon.zip skip=411781 bs=1 , mas isso funciona apenas para o ponto de partida 0 a 411781.

    
por Anderson 18.10.2017 / 04:49

1 resposta

0

O autor realmente extraiu a parte ZIP do arquivo. Isso começa em 411781. Por padrão, o restante do arquivo é copiado.

skip move-se sobre o número especificado de blocos (desde bs=1 , 1 bloco é 1 byte) desde o início antes da cópia. Então, para obter a parte 'zlib' que você deseja:

dd if=./moon.png of=./moon.zlib skip=944 count=410837 bs=1

count é o número de blocos a serem copiados desse ponto. Então, aqui a contagem é a posição final menos o número de blocos / bytes ignorados: 411781-944 = 410837.

    
por 18.10.2017 / 05:13

Tags