@Oli - oi, eu sou Jim Salter, o cara que realmente escreveu esse artigo. Eu estava trabalhando com uma máquina virtual, o que simplificou as coisas. O que fiz foi iniciado com um arquivo JPEG e aberto em um editor hexadecimal. O que eu usei em particular foi o Bless, que você pode instalar no Ubuntu com um simples apt-get install bless .
Depois de abrir o JPEG no Bless, acertei a página algumas vezes para entrar na "carne" do JPEG e, em seguida, realcei cerca de cinquenta bytes de dados, copiei e colei em um editor de texto (no meu case, gEdit). Isso me deu algo para procurar.
Agora salvei o JPEG em cada matriz na VM. O armazenamento atrás das matrizes era uma série de arquivos .qcow2. Depois de salvar o JPEG nas matrizes, eu poderia carregar os arquivos .qcow2 associados a cada matriz no Bless e pesquisá-los - eles não eram muito grandes, nada mais que o JPEG e alguns metadados - para esse padrão de cinquenta bytes Eu destaquei e copiei o JPEG. Voila, eu tinha o bloqueio para corromper! Nesse ponto, eu poderia editar manualmente bytes individuais do JPEG armazenados no disco virtual da VM usando o Bless - e, o mais importante, fazê-lo exatamente da mesma maneira em cada matriz.
A única desvantagem é que, no caso da matriz RAID5 testada no artigo, eu tive que me certificar de editar a cópia real dos dados na faixa e não a paridade da faixa em si - era uma pequena imagem em um caso contrário, uma matriz vazia, portanto, não havia dados no bloco FOLLOWING na faixa, fazendo com que o bloco de paridade contenha 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 como inalterada.
Uma observação final - você NÃO PRECISA de máquinas virtuais para fazer isso - você pode fazer as mesmas coisas da mesma maneira com o bare metal; seria um pouco mais complicado porque você precisaria trabalhar com unidades brutas inteiras, em vez de com pequenos arquivos .qcow2, 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. (Testei a recuperação de dados do ZFS exatamente dessa maneira, mas em máquinas bare metal reais, há 7 anos atrás, quando me interessei em sistemas de arquivos de última geração.)
Espero que isto ajude!