@Oli - oi, eu sou Jim Salter, o cara que realmente escreveu esse artigo. Eu estava trabalhando com uma máquina virtual, que simplificava as coisas. O que fiz foi começar com um arquivo JPEG e abri-lo em um editor hexadecimal. O especial que eu usei foi o Bless, que você pode instalar no Ubuntu com um simples apt-get install abençoe .
Depois de abrir o JPEG em Bless, acertei algumas vezes a página para entrar na "carne" do JPEG e depois destaquei apenas cerca de cinquenta bytes de dados, copiei e colei em um editor de texto. (no meu caso, gEdit). Isso me deu algo para procurar.
Agora salvei o JPEG em cada array na VM. O armazenamento por trás dos arrays era uma série de arquivos .qcow2. Uma vez que eu salvei o JPEG nos arrays, eu poderia carregar os arquivos .qcow2 associados a cada array em Bless, e procurá-los - eles não eram muito grandes, nada além do JPEG e alguns metadados - para aquele padrão de cinquenta bytes Eu destaquei e copiei do JPEG. Voila, eu tive o bloqueio para corromper! Neste ponto, eu poderia apenas editar manualmente bytes individuais do JPEG como armazenados no disco virtual da VM usando Bless - e, mais importante, fazê-lo exatamente da mesma maneira em cada array.
A única ruga é que, no caso do array RAID5 testado no artigo, eu tive que ter certeza de que editei a cópia real dos dados na faixa, e não a paridade para a faixa em si - era uma pequena imagem em uma matriz de outra forma vazia, portanto, não havia nenhum dado no bloco FOLLOWING na faixa, fazendo com que o bloco de paridade contivesse os dados inalterados do bloco de dados. Se eu tivesse editado acidentalmente o bloco de paridade em vez do bloco de dados, a imagem teria aparecido inalterada.
Uma observação final - você NÃO PRECISA de máquinas virtuais para fazer isso - você poderia fazer as mesmas coisas da mesma maneira com o bare metal; seria apenas mais uma dor na bunda, porque você precisaria trabalhar com unidades brutas inteiras em vez de com arquivos .qcow2 bem pequenos, e você teria que puxar as unidades e colocá-las em uma máquina diferente, ou inicialize em um ambiente ao vivo (ou apenas alternativo) para mexer com eles. (Eu testei a recuperação de dados do ZFS exatamente dessa maneira, mas em máquinas bare-metal reais, 7 anos atrás, quando me interessei pela primeira vez em sistemas de arquivos next-gen.)
Espero que isso ajude!