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.
Muito interessante, estes são detalhes que muitas vezes passamos por cima sem ao menos ter conhecimento.
Valeu pela explicação….
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
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.
Esse post me ajudou muito, já ia escrever bobagem no meu TCC.
Obrigado pelo post.
Opa Diego!
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?
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?
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!
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
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.
[]s!
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.
Grato Rafael!
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?
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.
[]s
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
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.
[]s
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.
Olá Carla. O correto hoje em dia é setor físico a setor físico.
[]s