Acesso bruto “real” de cartões de memória flash?

6

Eu tenho um cartão microSDHC de 16GB que aparentemente foi apagado pelo telefone (o telefone de um amigo, não sei qual, mas eu posso descobrir): enquanto tira fotos, de repente ele não consegue mais acessar / reconhecer o cartão. Eu estava com ela quando aconteceu. Nós imediatamente desligamos o telefone e não tentamos formatar o cartão nem nada.

Usando um SD-CardReader e Ubuntu, o dispositivo ainda pode ser reconhecido, e os 16GB completos podem ser lidos via dd sem erros. No entanto, 99% do dd-despejo eram apenas zerobytes , embora o cartão contivesse vários GB de dados. Apenas uma fração muito pequena ainda continha dados, e esses fragmentos foram espalhados pelos 16 GB.

Por exemplo, o cartão originalmente continha um sistema de arquivos FAT32. No entanto, agora o setor de inicialização e a tabela de partições foram zerados, assim como a primeira cópia FAT e a maioria dos dados. Curiosamente, a segunda cópia do FAT estava intacta, assim como o diretório raiz. Eu encontrei (apenas) três JPGs parciais no dd-dump, e o interessante é que os dados Exif desses JPGs sugerem que eles foram tirados logo antes do cartão cair.

Então, minhas perguntas são as seguintes:

  • Em vez de usar o dd, que conta com os drivers de armazenamento em massa usb do Linux reconhecendo (e interpretando) o dispositivo, existe outra maneira de acessar níveis ainda mais baixos de informações do cartão flash (ou seja, ler o conteúdo do chip , em vez de ver o que usb_storage? Alguma forma de FTL, JFFS etc?)?
  • Os dados foram realmente apagados ou apenas marcados como "sujos" em algum lugar? Seria fisicamente impossível que um telefone realmente substituísse 16 GB de memória em segundos. Então, talvez haja uma maneira de ler os dados reais? Ou isso geralmente só é possível desmontando o cartão e acessando diretamente o dispositivo NAND (?) Através de hardware especializado?

Eu agradeceria qualquer indicação - como minha amiga não está realmente usando computadores ao lado de seu telefone, ela nunca se preocupou em copiar nenhuma imagem dela para um lugar mais seguro, então várias centenas de fotos de amigos e familiares seriam perdidas : - /

    
por Wolfram 09.04.2012 / 22:04

1 resposta

2

Não há uma maneira padrão ou "embutida" de dizer a um cartão SD para fornecer os dados brutos da NAND.

Isso é especulação, mas o microcontrolador em cartões SD provavelmente implementa algum tipo de mapeamento de endereço físico de bloco para endereçamento de bloco lógico, a fim de usar o nivelamento de desgaste. Esta tabela de PBA para LBA é provavelmente armazenada na NAND exatamente como os dados reais, é relativamente pequena, provavelmente controla blocos livres e pode, de fato, ser sobrescrita em segundos.

is there some other way to access even lower levels of information of the flash card

Se você dessoldar a NAND ou soldar fios externos a ela, descobrir que tipo de NAND é, e montar algum tipo de interface no seu PC, você pode descarregar o conteúdo bruto. Você está enfrentando uma difícil tarefa de engenharia reversa, mesmo depois de fazer isso, pois o formato dos dados é provavelmente exclusivo do microcontrolador no cartão SD, e eu não poderia imaginar onde você iria sequer começar a procurar por essa informação.

Você pode achar este interessante, mas provavelmente não é muito útil. Parece que os cartões SD têm o equivalente a "Comandos específicos do fornecedor" SCSI, usados para atualizar o firmware no microcontrolador SD. Então, teoricamente, seria possível fazer upload de um firmware de microcontrolador SD personalizado ou modificado que responde de maneira diferente às solicitações de leitura / gravação. Ainda assim, você só chegaria ao mesmo ponto descrito acima. Eu não conheço nenhum firmwares ou projetos personalizados de microcontroladores SD que realmente existam.

    
por 22.12.2016 / 14:20