Como posso intencionalmente quebrar / corromper um setor em um cartão SD?

142

Preciso testar a resiliência de algum código de leitura / gravação para algum hardware incorporado. Como posso sacrificar alguns cartões SD e quebrar vários setores conhecidos para um estudo controlado?

A única coisa em que consigo pensar é sobrescrever um único setor alguns milhões de vezes. Gostaria de saber se um script de badblocks do Linux pode ser criado para executar seu teste destrutivo em um único setor repetidamente por várias horas.

Gabe Krause
fonte
20
Você pode alterar o driver SD de baixo nível para fingir que há um bloco defeituoso ou isso está fora de questão?
3
@ MarkYisri, não acho que o motorista seja muito acessível. Qualquer driver que estamos usando é ultra-rudimentar para maximizar a alocação de memória para o restante do firmware. Além disso, se fosse possível, isso provavelmente estaria além da minha capacidade.
Gabe Krause
3
Você pode criar um emulador de cartão SD? Não é o projeto mais simples, lembre-se.
user20574
11
Dado o objetivo, você pode comprar alguns cartões SD de segunda mão por pouco dinheiro e pode facilmente obter um com defeito ou colocar um anúncio "procurando por ..." para procurar especificamente por cartões com defeito. Ou pesquise no eBay por cartões com defeito. Então você testará o cartão e saberá a posição das áreas defeituosas.
FarO 12/09
28
Pergunte a qualquer fotógrafo profissional. Eles terão uma pilha de cartões SD incompletos.
J ...

Respostas:

168

Uma abordagem alternativa que pode ser útil.

Se o seu código for executado no Linux, talvez você possa testá-lo com um dispositivo lógico "defeituoso". dmsetuppode criar dispositivos que retornam erros de E / S. Basta construir seu dispositivo usando errore / ou flakeyalvo. De man 8 dmsetup:

error
Erros de qualquer E / S que vá para esta área. Útil para testar ou criar dispositivos com orifícios.

flakey
Cria um mapeamento semelhante ao lineardestino, mas exibe comportamento não confiável periodicamente. Útil para simular dispositivos com falha durante o teste.

Nota: flakeyo uso do destino está documentado aqui . Exemplo básico aqui .

Tanto quanto sei, um erro de E / S será relatado imediatamente, portanto, isso é diferente do comportamento real do cartão SD, onde você pode esperar atraso, paralisação etc. No entanto, acho que essa abordagem pode ser útil em alguns casos, pelo menos para executar rapidamente teste preliminar ou algo assim.

Kamil Maciorowski
fonte
34
Eu aprecio esse pensamento pronto para uso! Estamos interagindo no nível do bloco com o SD através de um chip Atmel de 80MHz e nenhum sistema operacional real.
Gabe Krause
11
@GabeKrause Nesse caso, a utilidade desta resposta depende de quão semelhante a API do dispositivo de bloco Linux possa ser à API do seu driver de dispositivo incorporado.
Qsigma
11
dmsetupcomando para configurar um errordispositivo que sempre retorna erros de leitura: stackoverflow.com/questions/1870696/…
Peter Cordes
11
Concordo que isso soa como uma solução melhor. Primeiro você pode replicar sobre qualquer hardware. E também você pode simular os diferentes modos de erro. Por exemplo, eu tenho uma unidade flash USB de 16 GB que funciona bem. Depois de algum tempo, uma área específica começa a retornar dados incorretos. Não há nenhum erro de FS de qualquer tipo. Você lê o arquivo, mas o conteúdo é diferente. Alguns setores são obviamente instáveis. Mas como um determinado dispositivo se comportará não pode ser conhecido antecipadamente.
akostadinov 15/09
75

Esse cara invadiu o microcontrolador dentro dos cartões SD usados ​​para marcar blocos ruins: https://www.bunniestudios.com/blog/?p=3554

Você pode fazer o mesmo e marcar arbitrariamente os blocos como defeituosos.

Hoje, no Chaos Computer Congress (30C3), xobs e eu divulgamos uma conclusão de que alguns cartões SD contêm vulnerabilidades que permitem a execução arbitrária de código - no próprio cartão de memória. No lado sombrio, a execução do código no cartão de memória permite uma classe de ataques MITM (homem no meio), nos quais o cartão parece estar se comportando de uma maneira, mas na verdade ele faz outra coisa. Pelo lado da luz, também possibilita aos entusiastas do hardware obter acesso a uma fonte onipresente e barata de microcontroladores.

.

Esses algoritmos são muito complicados e específicos de cada dispositivo para serem executados no nível do aplicativo ou do sistema operacional e, portanto, todo disco de memória flash é enviado com um microcontrolador razoavelmente poderoso para executar um conjunto personalizado de algoritmos de abstração de disco. Até o diminuto cartão microSD contém não um, mas pelo menos dois chips - um controlador e pelo menos um chip flash (os cartões de alta densidade empilharão vários flash die).

.

O microcontrolador incorporado geralmente é uma CPU 8051 ou ARM fortemente modificada. Nas implementações modernas, o microcontrolador se aproximará dos níveis de desempenho de 100 MHz e também terá vários aceleradores de hardware na matriz. Surpreendentemente, o custo de adicionar esses controladores ao dispositivo é provavelmente da ordem de US $ 0,15 a US $ 0,30, principalmente para empresas que podem fabricar tanto a memória flash quanto os controladores na mesma unidade de negócios. Provavelmente, é mais barato adicionar esses microcontroladores do que testar e caracterizar cada chip de memória flash, o que explica por que os dispositivos flash gerenciados podem ser mais baratos por bit do que os chips flash brutos, apesar da inclusão de um microcontrolador.

.

O ponto crucial é que um mecanismo de carregamento e atualização de firmware é praticamente obrigatório, especialmente para controladores de terceiros. Os usuários finais raramente são expostos a esse processo, pois tudo acontece na fábrica, mas isso não torna o mecanismo menos real. Nas minhas explorações nos mercados de eletrônicos na China, vi vendedores queimando firmware em cartões que “expandem” a capacidade do cartão - em outras palavras, eles carregam um firmware que relata que a capacidade de um cartão é muito maior que a do cartão. armazenamento disponível real. O fato de isso ser possível no ponto de venda significa que, muito provavelmente, o mecanismo de atualização não está protegido.

Em nossa palestra no 30C3, relatamos nossas descobertas explorando uma determinada marca de microcontrolador, a Appotech e suas ofertas AX211 e AX215. Descobrimos uma sequência simples de "toque" transmitida por comandos reservados pelo fabricante (ou seja, CMD63 seguido de 'A', 'P', 'P', 'O') que coloca o controlador no modo de carregamento de firmware. Nesse momento, o cartão aceitará os próximos 512 bytes e o executará como código.

FarO
fonte
10
De todas as respostas, essa é provavelmente a mais próxima do que o OP realmente estava pedindo.
Cort Ammon
11
Essa foi uma leitura fantástica!
Gabe Krause
@Twisty copiou algumas das partes relevantes.
FarO 13/09/17
2
Abaixo a toca do coelho no mundo da arquitetura de cartões SD, eu vou.
Tejas Kale
38

Isso normalmente não funciona porque os cartões SD (ou eMMC) mais recentes usam nivelamento de desgaste estático e dinâmico, o que significa que um controlador inteligente interpreta suas instruções de gravação e as mapeia para um dos setores flash menos usados.

A única coisa que você pode fazer é tentar entrar em contato com seus fornecedores e solicitar a folha de dados deles; pode haver algumas maneiras (específicas do fornecedor) de recuperar o estado de seu algoritmo de nível de desgaste. Isso permitiria que você consultasse o estado / uso do flash subjacente. Ou você pode ter azar e isso pode não existir.

Se seu objetivo é realmente destruir o flash, tudo o que você pode fazer é executar ciclos de leitura e gravação em massa e verificar continuamente se os dados que você está lendo ainda são consistentes. Por exemplo, crie dois arquivos grandes, armazene suas somas de verificação e leia / escreva-as para verificar sua soma de verificação. Quanto maior o flash, mais demorará esse processo.

amo-ej1
fonte
2
Isso ainda não funcionará se o cartão SD estiver completamente cheio de dados, para que não possa remapear muito? Não acho que eles tenham muitos setores ocultos disponíveis.
Ruslan
2
@Ruslan O dispositivo não precisa saber se um setor está cheio de alguma coisa. Ele só precisa saber o conteúdo de quais setores entregar sob solicitação e quais setores gravar sob solicitação. E então pode haver alguma camada de abstração no lugar, fazendo com que ela use outra memória física para representar os setores que seguem um algoritmo não divulgado ... - E "cheio" significa apenas "limite para os blocos que podem ser preenchidos no momento", é claro.
Alexander Kosubek
6
@Ruslan: Mesmo que todo o dispositivo tenha dados, o nível de desgaste ainda pode ser eficaz: por exemplo, se o setor A tiver sido gravado uma vez e o setor B tiver sido gravado 1.000 vezes, quando outra gravação ocorrer. setor B, o cartão pode trocar os dados pelos dois setores, para que o setor A contenha os dados do setor B (e provavelmente seja sobrescrito muito mais vezes - mas tudo bem porque é novo), e o setor B conterá os dados do setor A (que espero que não mude muito). Obviamente, o dispositivo também precisa armazenar o mapeamento de qual setor fica armazenado onde.
Psmears 11/11
2
@GabeKrause sim, essa é a natureza da besta. No nível mais baixo, você tem chips nand ou nem flash (atualmente tudo está usando nand), e há um controlador inteligente na frente do chip nand que encerra o barramento (por exemplo, usb para um pendrive ou mmc para um cartão sd ), e esse chip é responsável pelo mapeamento / nivelamento de desgaste etc., abstrai o flash para longe de você. Se você usasse o nand no Linux incorporado, é isso que, por exemplo, o ubifs faria por você.
amo-ej1 12/09
2
Os cartões SD possuem um microcontrolador que implementa uma "Camada de conversão em Flash" - as solicitações de bloco são convertidas por esse microcontrolador em comandos NAND brutos. Alguns cartões SD possuem comandos ocultos para alterar / atualizar o firmware do MCU e ainda existem alguns esforços de engenharia reversa. A maioria dos dispositivos de armazenamento flash, exceto o NAND bruto (que pode aparecer em alguns casos como muitos roteadores domésticos), provavelmente é "superprovisionada" - o que significa que seu cartão SD de 1 GB provavelmente tem algo como 1024 MB + 128 MB de espaço NAND bruto, para cobrir o nível de desgaste quando cheio e também poupa o setor de páginas flash ruins.
LawrenceC
31

Você pode aumentar o desgaste do transistor aumentando a temperatura de operação. Use ciclos de gravação e apagamento em um chip aquecido (70-120 ° C); vai se desgastar mais rápido.

Pavlus
fonte
18
A temperatura excessiva de armazenamento também é prejudicial, portanto, pode ser mais prático "cozinhar" o chip a 120 ° C (ou mais) por algum tempo e verificar se há defeitos.
Dmitry Grigoryev
2
Uma leve sobretensão no suprimento da placa também pode ser possível e também precisaria ser experimentada.
Chris H
A subtensão também pode causar diferentes tipos de defeitos, como travamentos do controlador.
user20574
17

Prefácio: Esta opção requer programação adicional e modificações de hardware, mas permitiria leituras controladas provavelmente mais transparentes para o host.

Um cartão SD possui várias opções de E / S, mas pode ser controlado por SPI. Se você pegar um cartão SD e modificá-lo para poder conectar os pinos a um microcontrolador (como um Arduino), o Arduino imitará o cartão SD e será transparente com o dispositivo que lê o cartão SD. Seu código no microcontrolador pode retornar propositadamente dados incorretos quando necessário. Além disso, você pode colocar um cartão SD no microcontrolador para que as leituras possam passar pelo microcontrolador para o cartão SD para permitir gigabytes de teste.

Eric Johnson
fonte
3
A maioria dos dispositivos de alta velocidade (incluindo leitores de cartão de PC) simplesmente se recusam a trabalhar com um cartão que não suporta SD de quatro bits.
Dmitry Grigoryev
11
O OP disse que era um sistema embarcado que estaria usando o cartão que tornaria mais propensos a apoiar SPI para cartões SD
Eric Johnson
3
Uma variante disso, mas um trabalho mais difícil, seria encontrar um cartão SD para o qual você pode atualizar o firmware .
Peter Peter Taylor
2
Isso é super interessante! Nosso sistema incorporado está executando E / S através do SPI. Não tenho certeza se tenho largura de banda para modificar nosso hardware para obter uma adição como essa, mas acho que é um pensamento brilhante.
Gabe Krause
2
Ser instruído sobre o nivelamento dinâmico de desgaste me leva a acreditar que criar estrategicamente um cartão SD "ruim" com setores defeituosos conhecidos é muito mais difícil (ou não possível) do que eu esperava ao fazer a pergunta. Embora atualmente esteja além do escopo de minha capacidade, essa parece ser a abordagem mais controlável e tecnicamente promissora, seguida possivelmente pelo @Olafm. Personalizar o hardware intermediário para interceptar e "corromper" os dados em qualquer local predefinido do setor durante a transferência de dados parece ser uma boa abordagem.
Gabe Krause
15

Eu iria ao ebay / aliexpress e compraria o cartão SD mais barato que posso encontrar na China, que é "bom demais para ser verdade". Eles geralmente vêm com setores defeituosos ou estão no software definido para ser muito maior do que realmente são. De qualquer forma, você deve acabar com o cartão SD com defeito para usar nos testes.

GuzZzt
fonte
Abordagem interessante, mas como você escreveria nas áreas defeituosas para testar os efeitos dos blocos defeituosos no código armazenado?
fixer1234
@ fixer1234, eu tinha um desses cartões SD que diziam 32GB, mas na verdade eram apenas 128MB. Coloquei na minha câmera e consegui tirar fotos além dos 128 MB, mas apenas as primeiras fotos puderam ser lidas novamente. O restante foi listado, mas foi lido como quebrado. Acho que é como eles querem que você notar os problemas com o cartão pela primeira vez quando já é tarde demais para se queixar ...
GuzZzt
11

Era uma vez, há muitos anos, fui pago para recuperar um conjunto de fotos e vídeos de formatura de um cartão SD para uma mãe bastante perturbada. Após uma inspeção cuidadosa, o cartão havia sido danificado fisicamente por uma rachadura visível na parte externa e apresentava vários setores defeituosos, principalmente vários setores críticos iniciais, o que fazia com que até os programas de recuperação mais confiáveis ​​da época deixassem de ler completamente o cartão. . Além disso, as ferramentas de dados forenses na época custam uma fortuna.

Acabei obtendo um cartão SD de marca / tamanho idêntico e escrevendo meu próprio utilitário de despejo e restauração de dados brutos personalizados para copiar os dados do cartão inválido para o válido. Toda vez que o utilitário atingia um setor defeituoso, tentava várias vezes antes de escrever todos os zeros para esse setor e, em vez de desistir e parar, ignorava a falha e passava para o próximo setor. As tentativas de repetição foram feitas, pois eu também havia notado que alguns setores ainda tinham uma taxa de sucesso de leitura de cerca de 40%. Depois que os dados estavam no novo cartão SD, as ferramentas de recuperação que haviam falhado antes funcionavam perfeitamente com o mínimo de perda / corrupção de dados. No geral, cerca de 98% de todos os arquivos foram recuperados. Vários itens que foram excluídos anteriormente também foram recuperados porque nada é realmente excluído - apenas marcado como tal e lentamente sobrescrito. O que começou como um exercício de recuperação de dados um pouco chato se tornou um dos meus projetos de desenvolvimento de software pessoal mais memoráveis ​​e interessantes. Caso você estivesse se perguntando, a mãe estava emocionada.

De qualquer forma, essa história mostra que é possível danificar fisicamente um cartão SD, de modo que os dados ainda estejam acessíveis, mas que possuem setores que mal funcionam e qualquer coisa que tente ler dele tem dificuldades em fazê-lo. O plástico do cartão SD tende a ser bastante frágil; portanto, dobrar ou cortar alguns baratos pode fazer o truque. Sua milhagem pode variar.

Você também pode perguntar em alguns locais de recuperação de dados em sua área. Como eles se especializam na recuperação de dados de vários dispositivos com falha ou com falha, eles devem ter algumas dicas / sugestões úteis e podem até ter alguns cartões SD pré-eliminados em mãos (por exemplo, para fins de treinamento) que você pode obter deles.

CubicleSoft
fonte
2
Você lançou esse utilitário online? Isso seria ótimo para adicionar ao meu arsenal.
Ploni 13/09
11
Nesse ponto, provavelmente nem funcionaria adequadamente, dada a marcha do progresso da tecnologia (pode até não ser compilada) e as chamadas de sistema de baixo nível que usei. Há também algumas ferramentas modernas de clonagem de dispositivos / unidades forenses de código aberto que eu provavelmente tentaria usar primeiro do que tentar tirar meu software antigo das bolas de naftalina.
CubicleSoft
Espero que você provavelmente possa fornecer alguns parâmetros para ddque ele se comporte de maneira semelhante a isso, atualmente. Eu não tenho certeza.
Wizzwizz4
@ wizzwizz4, olha o ddrescue.
Hildred 17/09/17
"Além disso, as ferramentas de dados forenses na época custavam uma fortuna". Tenho certeza que eles ainda fazem.
precisa saber é o seguinte
5

Esta resposta é uma expansão do comentário de @Ruslan

  1. Encha seu cartão SD em até 99,9%
  2. Reescreva continuamente o conteúdo dos 0,1% restantes (Write A - delete-write B-delete - Write A ...)
  3. Teste (periodicamente) se você já quebrou o cartão

Alternativa possível:

Não tenho certeza se isso funciona para seus propósitos, mas talvez seja realmente suficiente para danificar fisicamente o seu cartão, o que pode ser muito mais rápido.

Dennis Jaheruddin
fonte
6
Preencher o cartão com 99% não ajudará, pois todo o objetivo do nivelamento de desgaste é evitar exatamente esse tipo de dano prematuro. Danificar fisicamente o cartão quase certamente resultará em um cartão que não será mais inicializado.
Dmitry Grigoryev
2
@DmitryGrigoryev Como o nivelamento por desgaste será de grande ajuda (impedimento, neste caso), a menos que o cartão tenha muito mais memória do que sua capacidade oficial?
Ispiro
12
@ispiro Por exemplo, da próxima vez que um setor com alta contagem de gravações for substituído, seu conteúdo poderá ser trocado por um setor com uma baixa contagem de gravações.
Dmitry Grigoryev
11
@DmitryGrigoryev Se eu interpretar esta resposta correcta deve haver cartões SD que não fazem desgaste lvling: electronics.stackexchange.com/a/27626/16104
Dennis Jaheruddin
11
@DennisJaheruddin Sim, o cartão antigo não faz isso. com esses cartões, basta criar / remover repetidamente um arquivo vazio até que o setor na tabela de alocação se esgote.
Dmitry Grigoryev
3

Você pode tentar introduzir uma fonte de alimentação instável ou sinalização de tensão mais alta.

Uma falha comum em uma família de dispositivos que conheço tem uma forte correlação entre a corrupção do cartão SD e o contato intermitente da bateria.

PCARR
fonte
3

Alguns cartões SD antigos de baixa capacidade (16MB-ish) usam chips flash nos pacotes de estilo TSOP / TSSOP. Um workshop capaz de retrabalhar SMT (se você estiver executando um trabalho incorporado, poderá ter essa habilidade internamente; caso contrário, verifique se há pequenas empresas fazendo reparos por telefone / laptop no nível da placa) poderia separar e reconectar o chip de forma concebível, para que possa ser lido e gravado cru (incluindo os códigos ECC) com um programador de dispositivo.

Ainda assim, esteja ciente de que você testará principalmente:

  • Como o seu dispositivo lidará com possíveis aberrações / soluços de tempo introduzidos pela correção interna de erros

e no pior dos casos

  • como o seu dispositivo lida com um cartão SD com falha terminal.

Se você quiser apenas verificar como ele se comporta com comportamento irregular por qualquer motivo de um cartão SD, provavelmente é melhor apenas introduzir ruído elétrico nas linhas de interface (por exemplo, colocando um comutador de barramento FET no meio e, em momentos aleatórios, alternando momentaneamente para uma fonte de sinais sem sentido (dos níveis elétricos corretos).

rackandboneman
fonte
Cartões SD com falha terminal não geram "ruído elétrico", apenas retornam códigos de erro para operações de gravação.
Dmitry Grigoryev
2

Relacionado à resposta do OlafM, mas diferente: você pode programar um microcontrolador para falar o protocolo do cartão SD e depois imitar o comportamento que você deseja que ele tenha.

R ..
fonte
1

A área do registro de inicialização mestre do FAT32 é provavelmente a mais suscetível a abuso, pois em um nível lógico ela sempre precisa estar no mesmo local. (Talvez isso seja tratado pelo remapeamento suave de setores defeituosos, mas estou um pouco cético de que isso seja implementado em todo o hardware.) Portanto, você pode executar sfdiskum loop e ver se consegue destruí-lo dessa maneira.

Mas vou implorar para que você faça o possível para melhorar a confiabilidade do hardware, em vez de tentar lidar com hardware ruim no software. O problema é que os cartões SD falham em todos os tipos de maneiras estranhas. Tornam-se ilegíveis, tornam-se graváveis, fornecem dados incorretos, atingem o tempo limite durante as operações, etc. É muito difícil tentar prever todas as maneiras pelas quais um cartão pode falhar.

Aqui está uma das minhas falhas favoritas, "modo de big data":

big data falso sd ruim

Os cartões SD são produtos de consumo de commodities que estão sob uma tremenda pressão de custo. As peças mudam rapidamente e as folhas de dados são difíceis de encontrar. Produto falsificado não é inédito. Para armazenamento barato, eles são difíceis de superar, mas enquanto os SSDs priorizam a confiabilidade, a prioridade para cartões SD é velocidade, capacidade e custo (provavelmente não nessa ordem).

Sua primeira linha de defesa é usar uma peça eMMC soldável com uma folha de dados real de um fabricante respeitável, em vez de um cartão SD removível. Sim, eles custam mais por GB, mas a peça ficará em produção por um longo período de tempo e, pelo menos, você sabe o que está recebendo. A soldagem da peça também evita uma série de problemas em potencial (cartões arrancados durante gravações, mau contato elétrico etc.) com um cartão removível.

Se o seu produto precisar de armazenamento removível ou se for tarde demais para mudar alguma coisa, considere gastar o dinheiro extra em cartões de categoria "industrial" ou trate-os como objetos descartáveis. O que fazemos (no Linux) é fscka placa na inicialização e reformata-a se algum erro for relatado, pois a reformatação é aceitável neste caso de uso. Então nós fscknovamente. Se ele ainda relatar erros após a reformatação, fazemos a RMA e substituímos o hardware por uma variante mais recente que usa o eMMC.

Boa sorte!

Robert Calhoun
fonte
Eu te dei um joinha. Eu uso muito cartões SD e tenho uma falha algumas vezes por ano. Eu nunca havia pensado muito nisso, mas, em minha própria experiência, meus cartões com falha exibiam os sintomas de um FAT com falha antes que eles finalmente se tornassem inúteis. Eu acho que você está pensando em algo aqui :) Então, simplesmente criar e excluir arquivos deve exercitar o heck out do FAT.
precisa saber é o seguinte
1

Talvez esta não seja a direção que você queria, mas achei que remover o cartão SD enquanto meu rádio ou laptop estava lendo garante um cartão SD travado cerca de 1/5 ou 1/10 vezes. Parece que os cartões não se saem bem ao remover a energia durante uma leitura e, presumivelmente, gravações. Depois de ler os comentários de Robert Calhoun abaixo, isso me leva a acreditar que pode estar prejudicando o FAT. Embora eu não saiba por que apenas a leitura causa uma falha - não deve haver nenhuma escrita em andamento?

jwzumwalt
fonte
isso poderia danificar os FS, mas não tenho certeza que seria realmente criar setores defeituosos
akostadinov
Posso dizer que ele trava o cartão e requer uma reformatação. Fiz isso várias vezes com cartões SD e uma torta de framboesa, meu laptop e vários dispositivos domésticos.
Jwzumwalt 15/09
2
Requer uma reformatação! = Causa danos aos setores . Sistema de arquivos, sim. Setores, talvez.
Wizzwizz4
1

Se o seu cartão SD estiver no formato FAT32, você poderá editar hexadecimalmente as duas gorduras e marcar um setor como ruim com o código hexadecimal correto. Isso é apenas um truque se você deseja testar de forma lógica um software que deve encontrar um setor defeituoso nesse local específico; também não prejudicará seu cartão SD; uma reformatação o trará de volta à condição normal.

Emile De Favas
fonte
11
Bem-vindo ao Super Usuário! Parece uma abordagem interessante - você poderia explicar como executar especificamente a edição hexadecimal? Obrigado.
Ben N
Eu acho que o comando hdparm do Linux fará o truque: ele permitirá que você salve algum setor que você possa editar posteriormente e depois escreva de volta para o seu cartão. você precisa encontrar documentação sobre vfat e man hdparm. Desculpe, não estou nem perto de um computador com Windows.
Emile de Favas
A --make-bad-sectorbandeira parece promissora! No entanto, não sei dizer se isso funcionará apenas no sistema linux que executa esse comando inicialmente. Espero que o comando de hdparm --make-bad-sector 20000 /dev/sd#alguma forma torne o setor 20000 ruim e seja detectado como ruim no meu dispositivo de hardware incorporado que não esteja executando o Linux. Alguma ideia?
Gabe Krause
0

Gostaria de saber se um script de badblocks do Linux pode ser criado para executar seu teste destrutivo em um único setor repetidamente por várias horas.

Em um único setor - não, porque o código de nível de desgaste dentro do cartão SD remapeará os blocos lógicos em todo o lugar.

Mas você pode executar facilmente badblocks -wum loop até que alguns blocos defeituosos apareçam. Algo assim deve funcionar:

while badblocks -w /dev/xx; do :; done

supondo que badblocks retorne 0 se nenhum bloco defeituoso for detectado e ≠ 0 caso contrário (a página de manual não diz e eu não verifiquei o código fonte).

Tobia
fonte
-1

Normalmente, com os cartões SD / uSD, eles implementam o nivelamento de desgaste, o que pode dificultar bastante. Dependendo do tipo (célula de camada única, multicamadas, TLC, 3D-NAND etc.), o ciclo de gravação necessário para quebrá-lo o suficiente para esgotar o pool de setores pode estar no múltiplo TB.

Na verdade, testei isso com um Pro Duo de 4 GB, 64 GB e 256 GB, SSD e pen drive, os K --- s de 64 GB usando chips de 4 Micron 16 GB duraram cerca de 3,84 TB antes de falhar com um único erro leve na área FAT . O uso de 256 GB durou um pouco menos, mas estimaria sem acesso direto ao chip, provavelmente gravou 5 TB antes de finalmente acabar com a corrupção do MBR, mas não estava claro se o controlador causou o funcionamento sólido do modo USB3, mas o USB2 teve mais falhas durante a leitura e também ficou muito quente. O Duo de 4 GB falhou no leitor ao copiar dados, novamente não pode ter certeza, mas equivale a talvez 6 anos de uso e a câmera também estava mostrando mensagens "Recuperando". Incidentalmente, variar a tensão da fonte de alimentação durante a gravação fará com que ela falhe MUITO mais rápido. Meu microSD de 128 GB falhou após cerca de 2 anos de uso com sintomas semelhantes,

Notas irrelevantes removidas sobre experimentos com raios-X.

Dilema
fonte
11
Já existem várias respostas ajudando a destruir reitores específicos. Sua sugestão sobre a destruição de itens aleatórios não oferece nada extra.
Máté Juhász