Imagens de HD com dd: cópia bit a bit? | Eriberto Blog
Posted by Eriberto on maio 11, 2009 in Forense computacional, Hardware, Sistema Operacional, Vida e Curiosidades |
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.
maio 11, 2009 at 1:53 pm
Muito interessante, estes são detalhes que muitas vezes passamos por cima sem ao menos ter conhecimento.
maio 13, 2009 at 8:52 pm
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??
maio 14, 2009 at 11:49 am
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.
nov 7, 2010 at 11:43 am
Esse post me ajudou muito, já ia escrever bobagem no meu TCC. 😉
nov 8, 2010 at 8:17 am
Que bom que foi útil para alguém. Boa sorte!
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?
abr 6, 2011 at 1:24 pm
Macedo, tente a minha palestra sobre gerenciamento de memória. http://eriberto.pro.br/palestras.
Olha, dá pra fazer uma cópia bit a bit de um cd pra outro, pra que fiquem exatamente iguais?
Copiar um CD original para uma mídia virgem, fazendo com que a cópia também seja um "orignal".
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
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.
Obrigado Marcio. Canso de falar e demonstrar isso para os meus alunos.
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.
fev 25, 2013 at 3:33 pm
abr 13, 2013 at 1:10 am
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?
maio 9, 2013 at 2:57 pm
Diego, acho que você não entendeu direito... A cópia existe. Só não é feita bit a bit e sim setor a setor. E sim, é possível recuperar dados perdidos.
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
jun 13, 2013 at 4:26 pm
obs o sistema nao é o linux e sim win xp. Valeu
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.
maio 16, 2015 at 1:20 pm
Conforme sua excelente explicação, academicamente falando, como é correto dizer? Copia byte-a-byte ou setor-a-setor?