¿Cómo puedo romper / dañar intencionalmente un sector en una tarjeta SD?

142

Necesito probar la resistencia de algún código de lectura / escritura para algún hardware integrado. ¿Cómo podría sacrificar algunas tarjetas SD y romper varios sectores conocidos para un estudio controlado?

Lo único que se me ocurre es sobrescribir un solo sector unos pocos millones de veces. Me pregunto si se puede crear un script de bloques defectuosos de Linux para ejecutar su prueba destructiva en un solo sector repetidamente durante varias horas.

Gabe Krause
fuente
20
¿Puede cambiar el controlador SD de bajo nivel para fingir que hay un bloqueo incorrecto, o eso está fuera de discusión?
3
@ MarkYisri, no creo que el controlador sea muy accesible. Cualquier controlador que estemos usando es ultra rudimentario para maximizar la asignación de memoria al resto del firmware. Además, si fuera posible, eso probablemente estaría más allá de mi capacidad.
Gabe Krause
3
¿Se puede construir un emulador de tarjeta SD? No es el proyecto más simple, eso sí.
user20574
11
Dado el objetivo, puede comprar algunas tarjetas SD de segunda mano por poco dinero y puede obtener fácilmente una defectuosa, o poner un anuncio "buscando ..." para buscar específicamente tarjetas defectuosas. O busque en eBay tarjetas defectuosas. Luego prueba la tarjeta y sabrá la posición de las áreas defectuosas.
FarO
28
Pregúntale a cualquier fotógrafo profesional. Tendrán un montón de tarjetas SD incompletas, seguramente.
J ...

Respuestas:

168

Un enfoque alternativo que puede ser útil.

Si su código se ejecuta en Linux, tal vez pueda probarlo con un dispositivo lógico "defectuoso". dmsetuppuede crear dispositivos que devuelvan errores de E / S. Simplemente construya su dispositivo usando errory / o flakeyobjetivo. De man 8 dmsetup:

error
Errores cualquier E / S que vaya a esta área. Útil para probar o para crear dispositivos con agujeros en ellos.

flakey
Crea un mapeo similar al linearobjetivo pero exhibe un comportamiento poco confiable periódicamente. Útil para simular dispositivos con fallas durante las pruebas.

Nota: flakeyel uso objetivo está documentado aquí . Ejemplo básico aquí .

Hasta donde sé, se informará de inmediato un error de E / S, por lo que es diferente del comportamiento real de la tarjeta SD, donde puede esperar retrasos, retrasos, etc. Sin embargo, creo que este enfoque puede ser útil en algunos casos, al menos para realizarlo rápidamente prueba preliminar más o menos.

Kamil Maciorowski
fuente
34
¡Aprecio ese pensamiento innovador! Estamos interactuando en el nivel de bloque con la SD a través de un chip Atmel de 80MHz y sin sistema operativo real.
Gabe Krause
1
@GabeKrause En cuyo caso, la utilidad de esta respuesta depende de cuán similar sea la API del dispositivo de bloque de Linux a la API de su controlador de dispositivo incorporado.
Qsigma
1
dmsetupcomando para configurar un errordispositivo que siempre devuelve errores de lectura: stackoverflow.com/questions/1870696/…
Peter Cordes
1
Estoy de acuerdo en que esto suena como una mejor solución. Primero puede replicar sobre cualquier hardware. Y también puede simular los diferentes modos de error. Por ejemplo, tengo una unidad flash USB de 16 GB que funciona bien. Después de un tiempo, aunque un área en particular comienza a devolver datos incorrectos. No hay error FS de ningún tipo. Lees el archivo pero el contenido es diferente. Algunos sectores son obviamente inestables. Pero no se puede saber de antemano cómo se comportará un dispositivo en particular.
akostadinov
75

Este tipo hackeó el microcontrolador dentro de las tarjetas SD utilizadas para marcar bloques defectuosos: https://www.bunniestudios.com/blog/?p=3554

Es posible que pueda hacer lo mismo y marcar arbitrariamente los bloques como defectuosos.

Hoy, en el Chaos Computer Congress (30C3), xobs y yo revelamos que algunas tarjetas SD contienen vulnerabilidades que permiten la ejecución de código arbitrario, en la tarjeta de memoria. En el lado oscuro, la ejecución de código en la tarjeta de memoria permite una clase de ataques MITM (hombre en el medio), donde la tarjeta parece comportarse de una manera, pero de hecho hace otra cosa. Del lado de la luz, también permite a los entusiastas del hardware tener acceso a una fuente de microcontroladores muy barata y ubicua.

.

Estos algoritmos son demasiado complicados y específicos del dispositivo para ejecutarse a nivel de aplicación o sistema operativo, por lo que resulta que cada disco de memoria flash se entrega con un microcontrolador razonablemente potente para ejecutar un conjunto personalizado de algoritmos de abstracción de disco. Incluso la diminuta tarjeta microSD contiene no uno, sino al menos dos chips: un controlador y al menos un chip flash (las tarjetas de alta densidad acumularán múltiples matrices flash).

.

El microcontrolador incorporado suele ser una CPU 8051 o ARM muy modificada. En las implementaciones modernas, el microcontrolador se acercará a los niveles de rendimiento de 100 MHz y también tendrá varios aceleradores de hardware en matriz. Sorprendentemente, el costo de agregar estos controladores al dispositivo probablemente sea del orden de $ 0.15- $ 0.30, particularmente para las empresas que pueden fabricar tanto la memoria flash como los controladores dentro de la misma unidad de negocios. Probablemente sea más barato agregar estos microcontroladores que probar y caracterizar a fondo cada chip de memoria flash, lo que explica por qué los dispositivos flash administrados pueden ser más baratos por bit que los chips flash sin procesar, a pesar de la inclusión de un microcontrolador.

.

El quid de la cuestión es que un mecanismo de carga y actualización de firmware es prácticamente obligatorio, especialmente para controladores de terceros. Los usuarios finales rara vez están expuestos a este proceso, ya que todo sucede en la fábrica, pero esto no hace que el mecanismo sea menos real. En mis exploraciones de los mercados de la electrónica en China, he visto a los comerciantes quemando firmware en tarjetas que "expanden" la capacidad de la tarjeta; en otras palabras, cargan un firmware que informa que la capacidad de una tarjeta es mucho mayor que Almacenamiento disponible real. El hecho de que esto sea posible en el punto de venta significa que lo más probable es que el mecanismo de actualización no esté asegurado.

En nuestra charla en 30C3, informamos nuestros hallazgos explorando una marca particular de microcontroladores, a saber, Appotech y sus ofertas AX211 y AX215. Descubrimos una secuencia simple de "golpe" transmitida a través de comandos reservados por el fabricante (es decir, CMD63 seguido de 'A', 'P', 'P', 'O') que colocan el controlador en un modo de carga de firmware. En este punto, la tarjeta aceptará los siguientes 512 bytes y lo ejecutará como código.

Faraón
fuente
10
De todas las respuestas, esta es probablemente la más cercana a lo que realmente estaba pidiendo el OP.
Cort Ammon
11
¡Esa fue una lectura fantástica!
Gabe Krause
@Twisty copió algunas de las partes relevantes.
FarO
2
Voy por la madriguera del conejo al mundo de la arquitectura de la tarjeta SD.
Tejas Kale
38

Esto generalmente no funcionará porque las tarjetas SD más recientes (o eMMC) usan nivelación de desgaste estática y dinámica, lo que significa que un controlador inteligente interpreta su instrucción de escritura y la asigna a uno de los sectores flash menos utilizados.

Lo único que puede hacer es tratar de contactar a sus proveedores y solicitar su hoja de datos; Puede haber algunas formas (específicas del proveedor) para recuperar el estado de su algoritmo de nivelación de desgaste. Potencialmente, esto le permitirá consultar el estado / uso del flash subyacente. O puede que tengas mala suerte y esto puede no existir.

Si su objetivo es realmente destruir flash, todo lo que puede hacer es ejecutar ciclos masivos de lectura y escritura y verificar continuamente que los datos que está leyendo siguen siendo consistentes. Por ejemplo, cree dos archivos grandes, almacene sus sumas de verificación y léalas / escríbalas para verificar su suma de verificación. Cuanto más grande sea el flash, más tiempo llevará este proceso.

amo-ej1
fuente
2
¿Esto todavía no funcionará si la tarjeta SD está completamente llena de datos, por lo que no puede reasignar mucho? No creo que tengan muchos sectores ocultos de repuesto.
Ruslan
2
@Ruslan El dispositivo no necesita saber si un sector está lleno de algo. Solo necesita saber el contenido de qué sectores entregar a pedido y qué sectores escribir a pedido. Y luego puede haber una capa de abstracción en su lugar que haga que use otra memoria física para representar esos sectores siguiendo un algoritmo no revelado ... - Y "completo" solo significa "umbral para bloques rellenables actualmente alcanzados", por supuesto.
Alexander Kosubek
66
@Ruslan: incluso si todo el dispositivo tiene datos, la nivelación de desgaste puede ser efectiva: por ejemplo, si el sector A se ha escrito una vez y el sector B se ha escrito 1,000 veces, entonces cuando llega otra escritura para sector B, la tarjeta puede intercambiar los datos de los dos sectores, de modo que el sector A contenga los datos del sector B (y probablemente se sobrescribirá muchas más veces, pero eso está bien porque es nuevo), y el sector B contendrá los datos del sector A (que ojalá no cambie mucho). Obviamente, el dispositivo también necesita almacenar la asignación de qué sector se almacena dónde.
psmears
2
@GabeKrause sí, esa es la naturaleza de la bestia. En el nivel más bajo tiene chips nand o flash (hoy en día todo está usando nand), y hay un controlador inteligente en frente del chip nand que termina el bus (por ejemplo, usb para una memoria usb o mmc para una tarjeta sd ), y este chip es responsable de la asignación / nivelación de desgaste, etc., abstrae el flash de usted. Si usaría nand en Linux incorporado, esto es lo que, por ejemplo, ubifs haría por usted.
amo-ej1
2
Las tarjetas SD tienen un microcontrolador que implementa una "Capa de traducción Flash": este microcontrolador traduce las solicitudes de bloque en comandos NAND sin procesar. Algunas tarjetas SD tienen comandos ocultos para cambiar / actualizar el firmware de MCU e incluso se realizan algunos esfuerzos de ingeniería inversa. La mayoría de los dispositivos de almacenamiento flash que no sean NAND sin formato (que pueden aparecer en algunos casos como muchos enrutadores domésticos) probablemente estén "sobreaprovisionados", lo que significa que su tarjeta SD de 1 GB probablemente tenga algo como 1024 MB + 128 MB de espacio NAND sin formato, para cubrir el desgaste cuando esté lleno y también ahorra sector para páginas flash malas.
LawrenceC
31

Puede aumentar el desgaste del transistor aumentando la temperatura de operación. Use ciclos de borrado de escritura en un chip calentado (70-120 ° C); Se desgastará más rápido.

Pavlus
fuente
18
La temperatura de almacenamiento excesiva también es perjudicial, por lo que puede ser más práctico "cocinar" el chip a 120 ° C (o incluso más) durante algún tiempo, luego verificar si hay defectos.
Dmitry Grigoryev
2
También podría ser posible una ligera sobretensión en el suministro a la tarjeta, y de manera similar necesitaría experimentar.
Chris H
La subtensión también podría causar diferentes tipos de defectos, como bloqueos del controlador.
user20574
17

Prefacio: esta opción requiere programación adicional y modificaciones de hardware, pero permitiría lecturas controladas muy probablemente transparentes para el host.

Una tarjeta SD tiene múltiples opciones de E / S, pero se puede controlar a través de SPI. Si tomara una tarjeta SD y la modificara para poder conectar los pines a un microcontrolador (como un Arduino), podría hacer que el Arduino imite la tarjeta SD y sea transparente para el dispositivo que lee la tarjeta SD. Su código en el microcontrolador podría devolver datos incorrectos a propósito cuando sea necesario. Además, puede colocar una tarjeta SD en el microcontrolador para que las lecturas puedan pasar a través del microcontrolador a la tarjeta SD para permitir gigabytes de prueba.

Eric Johnson
fuente
3
La mayoría de los dispositivos de alta velocidad (incluidos los lectores de tarjetas de PC) simplemente se negarán a trabajar con una tarjeta que no sea compatible con SD de cuatro bits.
Dmitry Grigoryev
1
El OP dijo que era un sistema integrado que usaría la tarjeta, lo que haría que sea más probable que admita SPI para tarjetas SD
Eric Johnson,
3
Una variante de esto, pero un trabajo más duro, sería encontrar una tarjeta SD para la que pueda volver a actualizar el firmware .
Peter Taylor
2
Esto es super interesante! Nuestro sistema integrado ejecuta E / S a través de SPI. No estoy seguro si tengo el ancho de banda para modificar nuestro hardware para lograr una adición como esta, pero creo que es un pensamiento brillante.
Gabe Krause
2
Ser educado sobre la nivelación dinámica del desgaste me lleva a creer que crear estratégicamente una tarjeta SD "mala" con sectores defectuosos conocidos es mucho más difícil (o imposible) de lo que esperaba al plantear la pregunta. Aunque actualmente está fuera del alcance de mi capacidad, este parece ser el enfoque más controlable y técnicamente prometedor, seguido posiblemente por @Olafm. La personalización de hardware intermedio para interceptar y "corromper" datos en cualquier ubicación de sector predefinida durante la transferencia de datos parece un buen enfoque.
Gabe Krause
15

Iría a eBay / AliExpress y compraría la tarjeta SD más barata que pueda encontrar en China, la que es "demasiado buena para ser verdad". A menudo vienen con sectores defectuosos o están configurados en software para ser mucho más grandes de lo que realmente son. De cualquier manera, debe terminar con una tarjeta SD defectuosa para usar en las pruebas.

GuzZzt
fuente
Enfoque interesante, pero ¿cómo escribiría en las áreas defectuosas para probar los efectos de los bloques defectuosos en el código almacenado?
Fixer1234
@ fixer1234, tenía una de estas tarjetas SD que decía que era de 32 GB, pero en realidad solo tenía 128 MB. Lo puse en mi cámara y pude tomar fotos más allá de los 128 MB, pero solo las primeras fotos se pudieron volver a leer. El resto estaba en la lista, pero se leyó como roto Supongo que es cómo quieren que se den cuenta los problemas con la tarjeta por primera vez cuando ya es demasiado tarde para quejarse ...
GuzZzt
11

Érase una vez, hace muchos años, me pagaron para recuperar un conjunto de fotos y videos de graduación de una tarjeta SD para una madre bastante angustiada. Tras una inspección minuciosa, la tarjeta se había dañado físicamente de alguna manera con una grieta visible en la carcasa exterior y tenía varios sectores defectuosos, especialmente varios sectores críticos iniciales, que hicieron que incluso los programas de recuperación más confiables en ese momento no leyeran completamente la tarjeta . Además, las herramientas de datos forenses en ese entonces cuestan una fortuna.

Terminé obteniendo una tarjeta SD de marca / tamaño idéntica y escribiendo mi propio volcado de datos sin procesar personalizado y la utilidad de restauración para copiar los datos de la tarjeta defectuosa a la buena. Cada vez que la utilidad golpea un sector defectuoso, vuelve a intentarlo varias veces antes de escribir todos los ceros para ese sector y, en lugar de darse por vencido y detenerse, ignora la falla y pasa al siguiente sector. Los intentos de reintento se realizaron ya que también me di cuenta de que algunos sectores todavía tenían una tasa de éxito de lectura de alrededor del 40%. Una vez que los datos estuvieron en la nueva tarjeta SD, las herramientas de recuperación que habían fallado antes funcionaron perfectamente con una pérdida / corrupción de datos mínima. En general, alrededor del 98% de todos los archivos fueron recuperados. También se recuperó una cantidad de elementos que se habían eliminado anteriormente porque nunca se borró nada, solo se marcó como tal y se sobrescribió lentamente. Lo que comenzó como un ejercicio de recuperación de datos un poco aburrido se convirtió en uno de mis proyectos de desarrollo de software personal más memorables e interesantes. En caso de que te lo estés preguntando, la madre estaba encantada.

En cualquier caso, esta historia demuestra que es posible dañar físicamente una tarjeta SD de modo que los datos aún sean accesibles pero que tengan sectores que apenas funcionan y que cualquier cosa que intente leer tiene dificultades para hacerlo. El plástico de la tarjeta SD tiende a ser bastante frágil, por lo que doblar o cortar algunos baratos podría ser el truco. Su experiencia puede ser diferente.

También puede preguntar en algunos lugares de recuperación de datos en su área. Dado que se especializan en la recuperación de datos de varios dispositivos con fallas o fallidos, deberían tener algunas sugerencias / entradas útiles e incluso podrían tener a mano algunas tarjetas SD pre-reventadas (por ejemplo, con fines de capacitación) que podría obtener de ellas.

CubículoSoft
fuente
2
¿Has lanzado esa utilidad en línea? Sería genial agregarlo a mi arsenal.
Ploni
1
En este punto, probablemente ni siquiera funcionaría correctamente dada la marcha del progreso de la tecnología (podría incluso no compilar) y las llamadas de sistema de bajo nivel que utilicé. También hay un par de herramientas de clonación de dispositivos / dispositivos forenses de código abierto modernos que sería más probable que intente usar primero que tratar de sacar mi viejo software de las bolas de naftalina.
CubicleSoft
Espero que probablemente pueda dar algunos parámetros para ddque se comporte de manera similar a esto, hoy en día. Aunque no estoy seguro.
wizzwizz4
@ wizzwizz4, mira ddrescue.
hildred
"Además, las herramientas de datos forenses en ese entonces costaban una fortuna". Estoy bastante seguro de que todavía lo hacen.
jpmc26
5

Esta respuesta es una expansión del comentario de @Ruslan

  1. Llene su tarjeta SD hasta aproximadamente el 99.9%
  2. Vuelva a escribir continuamente el contenido del 0.1% restante (Escribir A -eliminar-escribir B-borrar - Escribir A ...)
  3. Pruebe (periódicamente) si ya ha roto la tarjeta

Posible alternativa:

No estoy seguro de si esto funciona para sus propósitos, pero tal vez sea suficiente para dañar físicamente su tarjeta, lo que podría ser mucho más rápido.

Dennis Jaheruddin
fuente
66
Llenar la tarjeta al 99% no ayudará, ya que el propósito de nivelar el desgaste es evitar exactamente este tipo de daño prematuro. Dañar físicamente la tarjeta seguramente dará como resultado una tarjeta que ya no se inicializa.
Dmitry Grigoryev
2
@DmitryGrigoryev ¿Cómo será útil la nivelación de desgaste (obstáculo, en este caso) a menos que la tarjeta tenga mucha más memoria que su capacidad oficial?
ispiro
12
@ispiro Por ejemplo, la próxima vez que se sobrescriba un sector con un recuento de escritura alto, su contenido puede intercambiarse con un sector con un recuento de escritura bajo.
Dmitry Grigoryev
1
@DmitryGrigoryev Si interpreto esta respuesta correctamente, debería haber tarjetas SD que no lleven desgaste: electronics.stackexchange.com/a/27626/16104
Dennis Jaheruddin
1
@DennisJaheruddin Sí, la tarjeta anterior no hace eso. con estas tarjetas es suficiente crear / eliminar repetidamente un archivo vacío hasta que el sector en la tabla de asignación se agote.
Dmitry Grigoryev
3

Podría intentar introducir una fuente de alimentación inestable o una señalización de mayor voltaje.

Una falla común para una familia de dispositivos que conozco tiene una fuerte correlación entre la corrupción de la tarjeta SD y el contacto intermitente de la batería.

PCARR
fuente
3

Algunas tarjetas SD antiguas de baja capacidad (16 MB-ish) usan chips flash en paquetes de estilo TSOP / TSSOP. Un taller capaz de retrabajar SMT (si está haciendo un trabajo integrado, es posible que tenga esa habilidad internamente; de ​​lo contrario, compruebe que las pequeñas empresas que realizan reparaciones de teléfonos / computadoras portátiles a nivel de placa) posiblemente puedan separar y volver a colocar ese chip, para que pueda leerse y escribirse sin formato (incluidos los códigos ECC) con un programador de dispositivo.

Aún así, tenga en cuenta que probará principalmente:

  • Cómo manejará su dispositivo las posibles aberraciones de tiempo / hipo introducidas por la corrección de errores internos

y en el peor de los casos

  • cómo su dispositivo maneja una tarjeta SD con falla terminal.

Si solo desea verificar cómo se comporta con un comportamiento errático por cualquier motivo desde una tarjeta SD, probablemente sea mejor introducir ruido eléctrico en las líneas de la interfaz (por ejemplo, colocando un interruptor de bus FET en el medio, y en momentos aleatorios cambiando momentáneamente a una fuente de señales sin sentido (sin embargo, de los niveles eléctricos correctos).

rackandboneman
fuente
Las tarjetas SD con fallas terminales no generan "ruido eléctrico", solo devuelven códigos de error para operaciones de escritura.
Dmitry Grigoryev
2

Relacionado con la respuesta de OlafM pero diferente: puede programar un microcontrolador propio para hablar el protocolo de la tarjeta SD y luego emular cualquier comportamiento que desee que tenga.

R ..
fuente
1

El área FAT32 Master Boot Record es probablemente la más susceptible al abuso, ya que en un nivel lógico siempre necesita estar en el mismo lugar. (Tal vez esto se maneje mediante la reasignación suave de sectores defectuosos, pero soy un tanto escéptico de que esto se implemente en todo el hardware). Por lo tanto, podría ejecutar sfdisken un bucle y ver si puede destruirlo de esa manera.

Pero voy a rogarle que haga todo lo posible para mejorar la confiabilidad del hardware, en lugar de tratar de manejar el hardware defectuoso en el software. El problema es que las tarjetas SD fallan de muchas formas extrañas. Se vuelven ilegibles, no se pueden escribir, le dan datos erróneos, caducan durante las operaciones, etc. Tratar de predecir todas las formas en que una tarjeta puede fallar es muy difícil.

Este es uno de mis fallos favoritos, el "modo de big data":

mal sd big data falso

Las tarjetas SD son productos de consumo que están bajo una tremenda presión de costos. Las piezas cambian rápidamente y las hojas de datos son difíciles de conseguir. El producto falsificado no es desconocido. Para un almacenamiento económico, son difíciles de superar, pero si bien los SSD hacen que la confiabilidad sea una prioridad, la prioridad para las tarjetas SD es la velocidad, la capacidad y el costo (probablemente no en ese orden).

Su primera línea de defensa es utilizar una pieza eMMC soldable con una hoja de datos real de un fabricante reconocido en lugar de una tarjeta SD extraíble. Sí, cuestan más por GB, pero la parte estará en producción durante un período de tiempo más largo, y al menos sabes lo que estás obteniendo. Soldar la parte hacia abajo también evita una gran cantidad de problemas potenciales (tarjetas extraídas durante las escrituras, mal contacto eléctrico, etc.) con una tarjeta extraíble.

Si su producto necesita almacenamiento extraíble, o es demasiado tarde para cambiar algo, considere gastar el dinero extra para tarjetas de grado "industrial", o trátelas como objetos desechables. Lo que hacemos (en Linux) es fsckla tarjeta en el arranque y formatearla si se informa algún error, ya que el formateo es aceptable en este caso de uso. Luego lo hacemos de fscknuevo. Si aún informa errores después del reformateo, lo realizamos con RMA y reemplazamos el hardware con una variante más nueva que usa eMMC.

¡Buena suerte!

Robert Calhoun
fuente
Te di un pulgar hacia arriba. Uso muchas tarjetas SD y tengo una falla un par de veces al año. Nunca lo había pensado mucho, pero según mi propia experiencia, mis tarjetas fallidas exhibían los síntomas de un FAT fallido antes de que finalmente dejaran de tener valor. Creo que estás haciendo algo aquí :) Entonces, simplemente crear y eliminar archivos debería ser una gran ayuda para el FAT.
jwzumwalt
1

Quizás esta no sea la dirección que deseaba, pero encontré que quitar mi tarjeta SD mientras mi radio o computadora portátil leía garantiza que una tarjeta SD se bloqueó aproximadamente 1/5 o 1/10 veces. Parece que a las tarjetas no les va bien si se quita el poder durante una lectura y presumiblemente escribe. Después de leer los comentarios de Robert Calhoun a continuación, me lleva a creer que puede estar dañando el FAT. Aunque no sé por qué solo leer causa un colapso, ¿no debería haber ninguna escritura?

jwzumwalt
fuente
esto podría dañar el FS, pero no estoy seguro de que realmente crearía sectores defectuosos
akostadinov
De hecho, puedo decirte que bloquea la tarjeta y requiere un nuevo formato. Lo he hecho muchas veces con tarjetas SD y un Raspberry Pie, mi computadora portátil y varios de mis dispositivos domésticos.
jwzumwalt
2
Requiere un reformateo! = Causa daño a los sectores . Sistema de archivos, sí. Sectores, tal vez.
wizzwizz4
1

Si su tarjeta SD tiene el formato FAT32, puede editar en hexadecimal las 2 grasas y marcar un sector como malo con el código hexadecimal correcto. Esto es solo un truco si desea probar lógicamente un software que se supone que encuentra un sector defectuoso en este lugar en particular; tampoco dañará su tarjeta sd, un reformateo lo devolverá a su estado normal.

Emile De Favas
fuente
1
¡Bienvenido a Super User! Esto parece un enfoque interesante: ¿podría explicar cómo realizar específicamente la edición hexadecimal? Gracias.
Ben N
Creo que el comando hdparm de Linux hará el truco: le permitirá guardar algún sector que luego podrá editar y luego volver a escribir en su tarjeta. sin embargo, necesita encontrar documentación sobre vfat y man hdparm. Lo siento, no estoy cerca de una computadora con Windows.
Emile De Favas
¡La --make-bad-sectorbandera parece prometedora! Sin embargo, no puedo decir si esto solo funcionará dentro del sistema Linux que inicialmente ejecuta este comando. Espero que el comando de hdparm --make-bad-sector 20000 /dev/sd#alguna manera haga que el sector 20000 sea malo y sea detectado como malo en mi dispositivo de hardware incorporado que no está ejecutando Linux. ¿Alguna idea?
Gabe Krause
0

Me pregunto si se puede crear un script de bloques defectuosos de Linux para ejecutar su prueba destructiva en un solo sector repetidamente durante varias horas.

En un solo sector, no, porque el código de nivelación de desgaste dentro de la tarjeta SD reasignará los bloques lógicos por todas partes.

Pero puede ejecutar fácilmente badblocks -wen un bucle hasta que aparezca algunos bloques defectuosos. Algo como esto debería funcionar:

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

suponiendo que badblocks devuelve 0 si no se detectaron bloques defectuosos y ≠ 0 de lo contrario (la página del manual no dice y no he verificado el código fuente).

Tobia
fuente
-1

Normalmente con las tarjetas SD / uSD implementan nivelación de desgaste, por lo que esto podría ser bastante difícil. Dependiendo del tipo (celda de capa única, multicapa, TLC, 3D-NAND, etc.), el ciclo de escritura requerido para romperlo lo suficiente como para agotar el grupo de sectores puede estar en la TB múltiple.

Realmente probé esto con un Pro Duo de 4GB, 64GB y 256GB, SSD y memoria USB, el K --- s de 64GB con chips de 4 Micron y 16GB duró aproximadamente 3.84TB antes de que fallara con un solo error suave en el área FAT . El uso de 256 GB duró un poco menos, pero se estimaría sin acceso directo al chip, probablemente escribió tal vez 5 TB antes de que finalmente cediera con la corrupción MBR, pero no estaba claro si el controlador lo hizo funcionar de manera sólida en modo USB3 pero USB2 tuvo más fallas durante la lectura y también hacía mucho calor. 4GB Duo falló en el lector al copiar datos, de nuevo no puedo estar seguro, pero equivale a unos 6 años de uso y la cámara también mostraba mensajes de "Recuperación". Incidentalmente, la variación del voltaje de la fuente de alimentación durante la escritura hará que falle MUCHO más rápido. Mi microSD de 128 GB falló después de aproximadamente 2 años de uso con síntomas similares,

Se eliminaron notas irrelevantes sobre los experimentos de rayos X.

Adivinanza
fuente
1
Ya hay varias respuestas que ayudan a destruir rectores específicos. Su sugerencia sobre la destrucción de los aleatorios no da nada extra.
Máté Juhász