Existe alguma maneira de ignorar o CRC do setor ao ler CDs danificados?

3

Estou tentando criar imagens de CDs danificados, alguns dos quais têm setores defeituosos em áreas importantes. Eu sei que existem muitos softwares por aí que criarão uma imagem de disco mesmo se eles rodarem em setores defeituosos. Meu problema é que esses setores defeituosos são apenas ignorados (copiados como zeros). Existe alguma maneira de instruir ou forçar a unidade a retornar o que ela conseguiu ler em um setor danificado, independentemente de o CRC do setor estar OK - forçar bastante a idéia de se comportar como se estivesse lendo um CD de áudio? Não encontrei nenhuma informação sobre isso, então ficarei muito agradecido se alguém tiver alguma informação sobre isso. Eu não tenho medo de escrever algum código de montagem ou fazer alguma solda, então qualquer dica é bem-vinda.

Aqui estão algumas coisas que eu já tentei:

  • Use software de imagem / cópia diferente, incluindo ddrescue, imgburn e winhex. CD é lido como um disco de dados e setores defeituosos não são retornados pela unidade.
  • Ler CD no modo de acesso não processado.

Algumas ideias (por favor, poste se você souber que alguma delas funcionará / não funcionará):

  • Emitir algum comando ATA de baixo nível para desativar o CRC / forçar o drive no modo de CD de áudio?
  • Firmware personalizado?
  • Insira o CD de áudio e troque para o CD de dados necessário sem abrir a bandeja?

Quaisquer outras idéias são bem-vindas, não importa o quão louco:)

    
por Duke Nukem 14.06.2013 / 02:55

3 respostas

1

Eu pensei que deveria voltar e responder a mim mesmo, agora que sou experiente neste assunto. Duas das idéias que pensei em minha pergunta original, na verdade, funcionam!

Issue some low-level ATA command to disable CRC / force drive into audio CD mode?

Isso é realmente possível em algumas unidades (1 das 2 unidades que testei suportam isso). Você precisa da capacidade de enviar pacotes genéricos para a unidade. Isso pode ser feito em (provavelmente) qualquer distribuição do Linux usando a chamada ioctl CDROM_SEND_PACKET. Primeiro, você precisa emitir um comando MODE_SENSE_10 para a unidade com o código de página 1 (recuperação de erro de leitura e gravação). Usando o valor de controle de página 0 (valores atuais), você poderá ver os comportamentos do drive para setores defeituosos, e com o valor de controle de página 1 (valores alteráveis), veja quais podem ser alterados. Se a sua unidade suportar a alteração da configuração TB (bloco de transferência) dessa página, você deverá definir TB como 1 e enviar as configurações modificadas para a unidade usando o comando MODE_SELECT_10. Et voila - você agora recupera o setor da unidade mesmo se houver erros EDC / ECC / CIRC! A melhor parte é que o drive realiza a separação do setor e qualquer correção de erros que possa, antes de enviar o setor para você. (Não testado: também há uma configuração de DCR que provavelmente desabilita totalmente as tentativas de correção de erros.)

Se você achar isto interessante, pegue um linux livecd e um Mt. Especificação Fuji! As informações acima podem ser encontradas na página 752 do Monte. Fuji spec v.9 revisão 1.00.

Bônus: agora que você pode enviar pacotes genéricos para sua unidade, você deve usar o comando READ CD (0xBE) para obter os setores brutos. Você pode examinar todos os cabeçalhos, dados EDC / ECC e até dados de subcanais, se estiver nesse tipo de coisa. Quando a unidade lhe dá um setor corrupto, você pode usar os dados EDC / ECC para examinar o quão corrupto é o seu setor e, quando você relê, decide qual das duas tentativas manter.

Insert audio CD then swap to the needed data CD without opening tray?

Acredite ou não, isso realmente funciona! (pelo menos em algum drive de cdrom muito antigo que eu usei para testar). Você pode literalmente fazer com que um CD player reproduza seus dados, registre-os e, depois de corrigir qualquer desvio de setor (procurando os cabeçalhos de sincronização dos setores de dados) e descodificando os dados (procure na tabela de consulta de codificação ECMA 130), obtenha seus dados brutos, sem nenhum tipo de correção de erros. Tenho certeza que meu primeiro método acima obsoleta esse método, mas o tempo dirá - ainda estou apenas começando com a recuperação de dados real.

Atualmente estou desenvolvendo alguns softwares para automatizar as coisas que acabei de escrever, e para perfeitamente (ou seja, qualquer cabeçalho de controle e dados de sub-canal) arquivando CDs antigos e corrompidos. Se alguém estiver interessado neste trabalho, por favor me avise. Além disso, por favor me avise, se esse tipo de software já existe - AFAIK isso não acontece.

    
por 31.03.2017 / 10:36
1

Eu não tenho a especificação atual, mas um documento ATA mais antigo não menciona a capacidade de obter setores ilegíveis.

Observe que a sua experiência de não conseguir recuperar incondicionalmente os dados do disco refuta um equívoco generalizado de que os dados do disco são transferidos diretamente da cabeça de leitura para a interface da unidade e para o PC host. Se esse equívoco fosse realmente verdadeiro, então o buffer de memória do PC teria os dados "brutos" antes que qualquer detecção e correção de erro pudesse ser aplicada.

Esse equívoco é freqüentemente usado para "provar" que a taxa de bits "lenta" da cabeça de leitura irá desacelerar a taxa de bits de dados no barramento SATA, e então erroneamente concluir que as taxas de transferência rápidas de SATA têm pouco benefício (a menos que o setor os dados vêm do cache da unidade).

No entanto, os dados do setor são sempre lidos da cabeça em um buffer de setor.
Depois que todo o setor é lido, os dados do setor são validados.
Somente se os dados do setor forem considerados "bons" (ou corrigíveis), a transferência para o host do PC começará.
A detecção de um erro de leitura incorrigível acionará uma nova tentativa, se o comando permitir.
Caso contrário, o PC host receberá um status de interrupção do comando.

Observe que um "setor ilegível" também inclui a situação do controlador incapaz de "localizar" o setor (na verdade, seu registro de ID).

    
por 18.08.2013 / 05:14
0

ddrescue é uma ferramenta de recuperação de dados. Ele copia dados de um arquivo ou dispositivo de bloco (disco rígido, cdrom, etc) para outro, tentando muito salvar dados em caso de erros de leitura.

AFAIK é apenas para Linux

    
por 14.06.2013 / 04:11