Pular para o conteúdo

Bem, resolvi fazer aqui um comentário simples mas que poderá ser útil para alguém (nem que seja academicamente). Acabo de ler em um blog a seguinte frase:

[…] capturar uma imagem forense, […] comando dd. Esse comando realiza a cópia exata (bit a bit) da origem para o destino. (sic)

Ocorre que, como um comando, o dd está sob um sistema operacional. Todo sistema operacional, para acessar um disco ou mídia (HD, CD, DVD, pendrive) precisa solicitar ao hardware que disponibilize os dados. A controladora de um disco só consegue acessar setores. Cada setor de HD possui 512 bytes hoje em dia (há um esforço para que isso mude, em breve, para 4096 bytes, o que possibilitaria a construção de discos maiores que 2 TB). Já o filesystem, depois de acessar os setores, disponibiliza os blocos (ou clusters, como a M$ os chama). Assim, não existe a possibilidade de cópia bit a bit. A cópia do dd é feita setor a setor e é por isso que o valor default do parâmetro bs é 512. Caso você queira ler o primeiro bit do HD, o sistema operacional carregará o primeiro setor, lerá o primeiro bit e descartará o restante das informações. Para ler o segundo bit, ocorrerá uma ação similar. Em outras palavras, uma cópia bit a bit seria algo extremamente desgastante e demorado. Para testar isso, insira um pendrive pequeno e utilize os seguintes comandos (considerando o pendrive como sendo /dev/sdb):

# time dd if=/dev/sdb of=/tmp/pen.dd
# time dd if=/dev/sdb of=/tmp/pen.dd bs=1

No primeiro caso, fizemos uma cópia setor a setor. Isso é o normal. No segundo, fizemos byte a byte. Ou seja: lemos todo o setor, pegamos 1 byte e, depois, descartamos o resto. Veja a diferença de tempo. No meu caso, com um pendrive de 64 MB, a primeira opção demorou 9 segundos. A segunda opção demorou 4 minutos e 13 segundos. Imagine se fosse bit a bit…

Esse erro é muito comum, pois constantemente ouvimos pessoas falando em cópia bit a bit ou byte a byte. Realmente, no dd, há uma opção de ler x bytes por bloco. Mas, mesmo assim, setores inteiros deverão ser carregados a partir do HD para que, depois, sejam extraídos x bytes.

Apenas para lembrar, este blog é reservado para assuntos técnicos de informática. Para assuntos casuais, possuo outro blog cujo endereço é http://www.eriberto.pro.br/blog2.

20 comentários em “Imagens de HD com dd: cópia bit a bit?”

  1. O interessante Eriberto é que sempre vejo isso relacionado ao dd, cópia bit a bit, acho q por pura abstração, acho(minha opnião) que isso é relacionado devido ao fato de copiar blocos defeituosos, slack space…etc. O que vc acha??

    Abs

  2. Jader, na verdade, costumo ver as pessoas escrevendo isso em sites ou falando em palestras não como abstração e sim com tom de realidade. Pode ter a certeza de que essas pessoas acreditam que é assim que a coisa acontece.

  3. Eriberto, você poderia me indicar onde posso achar material sobre este processo? tudo sobre copia bit a bit e bloco a bloco..algo que fale desde o processo da subida dos dados para a memória até como é feito este processo de cópia?

  4. Olha, dá pra fazer uma cópia bit a bit de um cd pra outro, pra que fiquem exatamente iguais?

    Por exemplo:

    Copiar um CD original para uma mídia virgem, fazendo com que a cópia também seja um “orignal”.

    Tem como fazer isso?

    Abraço!

  5. Felipe, bit a bit não… Leia o post…

    Mas você pode usar qualquer programa de copiar CDs para isso. Determine que o programa crie uma imagem ISO do CD original no seu HD. Depois, escolha a opção gravar CD a partir de uma imagem ou similar. Dá para fazer a imagem com dd ou dcfldd também.

    Veja este post para saber mais sobre dcfldd: http://eriberto.pro.br/blog/?p=284

    []s

  6. Parabéns pelo breve post, realmente interessante. Eu como aluno de pós em computação forense ouço pelos arredores as pessoas dizendo exatamente dessa forma (inclusive alguns professores) “cópia bit a bit”. A realidade é exatamente essa, as cópias comumente são feitas setor por setor, vale ressaltar essa informação.

  7. Já havia visto esse poste antes, mas achei “besteira” me deparando com um problema na areá voltei a pesquisar e pimba, claro como uma luz hehehe era “besteira” pois minhas limitações e exigências não exigiam tais informações, mas agora faz todo sentido do mundo, parabéns pelo post e eficiente.

  8. Tudo bem, eu acreditava na tal cópia bit a bit, mais se ela não existe, como é possível recupera dados perdidos do HD clonado? De fato é possível?

  9. Bom gostaria que me tirassem uma dúvida: em um hd antigo foram deletados varios documentos, videos e fotos, esse hd continuou funcionando por uns 5 meses ai foi clonado pelo programa acronis…pergunta: no hd novo ( que é copia do antigo) é possivel recuperar aqueles dados apagados do hd antigo (fotos, videos etc) ? ou seja, na clonagem feita pelo acronis 10.2 , ele copiou os arquivos “visiveis” somente , ou também pode ter copiado aqueles arquivos excluidos , mas que ficaram “guardados” invisivelmente no hd antigo? obrigado

  10. Cristiano, só conhecendo o programa para saber sobre isso. Se ele copiou os blocos do filesystem, dá para recuperar. Se ele copiou arquivos existentes, já era.

    []s

  11. Olá Eriberto,

    Conforme sua excelente explicação, academicamente falando, como é correto dizer? Copia byte-a-byte ou setor-a-setor?
    Onde tem uma referência que explique este processo completo?

    Muito obrigada.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

dois × 5 =